我一直在尝试使用NDK将FFMPEG(用于播放音频)移植到Android中。我取得了一些成功
avcodec_decode_audio3()
并解码给定的音频文件。所以在这里,我从该函数输出了音频缓冲区。我现在该怎么玩?任何ffmpeg家伙都可以告诉我解码和播放音频的确切步骤。我真的不知道如何处理从avcodec_decode_audio3()
获得的音频缓冲区。
非常感谢。
我已经基于ffmpeg在android上开发了一个视频播放器。您可以使用AudioTrack类在设备上播放音频。
编辑:
在Java中创建音轨对象
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);
}
为了使用FFmpeg作为音频播放工具,您可以将FFplay持续化(适用于Windows和Linux)。
简单如:ffplay <input audio track>
音轨必须是受支持的格式,这意味着您将需要一些库。
在python3中使用FFplay进程的实现示例: