我一直在尝试使用NDK将FFMPEG(用于播放音频)移植到Android上。我已经取得了一些成功。
- 我可以通过NDK构建FFMPEG并链接它。
- 我可以调用
avcodec_decode_audio3()
并解码给定的音频文件。
现在,我从该函数中得到了一个音频缓冲区输出。现在该如何播放呢?有没有FFMPEG专家能告诉我解码和播放音频的确切步骤。我真的不知道如何处理从avcodec_decode_audio3()
获得的音频缓冲区。
非常感谢。
我一直在尝试使用NDK将FFMPEG(用于播放音频)移植到Android上。我已经取得了一些成功。
avcodec_decode_audio3()
并解码给定的音频文件。现在,我从该函数中得到了一个音频缓冲区输出。现在该如何播放呢?有没有FFMPEG专家能告诉我解码和播放音频的确切步骤。我真的不知道如何处理从avcodec_decode_audio3()
获得的音频缓冲区。
非常感谢。
ffplay <输入音轨>
。 音轨必须是受支持的格式,这意味着您需要一些库。使用python3中的FFplay进程的实现示例:
我正在开发一个个人项目,利用树莓派作为一种高级的mp3播放器门铃式物联网设备。当有人按门铃时,它会全力以赴地播放Darude Sandstorm歌曲。但它也有一个小小的变化。它被称为DarudeDoorBell。我基于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);
}