使用FFMPEG播放音频

4

我一直在尝试使用NDK将FFMPEG(用于播放音频)移植到Android上。我已经取得了一些成功。

  • 我可以通过NDK构建FFMPEG并链接它。
  • 我可以调用avcodec_decode_audio3()并解码给定的音频文件。

现在,我从该函数中得到了一个音频缓冲区输出。现在该如何播放呢?有没有FFMPEG专家能告诉我解码和播放音频的确切步骤。我真的不知道如何处理从avcodec_decode_audio3()获得的音频缓冲区。

非常感谢。


你可以尝试这个,或者也可以尝试这个 - Sriram
我之前已经浏览过这些内容。它们只是帮助“构建”适用于Android的FFMPEG,而我已经完成了这一步骤。我不知道如何准确地“使用”FFMPEG库函数。 - Codevalley
2个回答

2
为了将FFmpeg用作音频播放工具,您可以使用 FFplay(适用于Windows和Linux)。
只需简单地执行以下操作:ffplay <输入音轨>。 音轨必须是受支持的格式,这意味着您需要一些库。
中译英:
  1. 如果您想要在Windows系统上使用某个东西,只需在此处下载构建here,然后将可执行文件放入环境变量路径中。也可以选择下载源代码并进行构建。但是为什么要麻烦呢?
  2. 如果您正在使用一些Linux系统,包括Raspbian,此链接描述了如何获取库并在FFmpeg构建中启用它们。FFmpeg构建还将包括FFplay。我已经测试过了,它对我来说似乎工作正常。
  3. 在两种情况下,您都需要安装C编译器才能处理make命令。

使用python3中的FFplay进程的实现示例:

我正在开发一个个人项目,利用树莓派作为一种高级的mp3播放器门铃式物联网设备。当有人按门铃时,它会全力以赴地播放Darude Sandstorm歌曲。但它也有一个小小的变化。它被称为DarudeDoorBell

0

我基于FFmpeg在Android上开发了一个视频播放器。您可以使用AudioTrack类将音频播放到设备上。

编辑:

在Java中创建一个AudioTrack对象。

AudioTrack track;
bufferSize = AudioTrack.getMinBufferSize(44100,AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT)
track = new AudioTrack(AudioManager.STREAM_MUSIC, 44100, AudioFormat.CHANNEL_CONFIGURATION_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize, mode);

//Play audio clip
track.play();

while(stream_is_over){
//Copy the decoded raw buffer from native code to "buffer" .....
............
track.write(buffer, 0, readBytes);
}

你能分享一些相关信息吗?我会非常感兴趣! - Codevalley
9
这个答案就像三明治的面包,完全缺少了肉。 - StackOverflowed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接