2011-02-15 208 views
3

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

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

所以这里我有一个音频缓冲区输出的功能。我现在怎么玩?任何ffmpeg家伙都可以告诉我解码和播放音频的确切步骤。我真的不知道如何处理从avcodec_decode_audio3()获得的音频缓冲区。

非常感谢。

+0

你可以试试[这](http://stackoverflow.com/questions/2645041/ffmpeg-for-a-android-using -tutorial-ffmpeg-and-android-mk)或者[this](http://stackoverflow.com/questions/4725773/ffmpeg-on-android)。 – Sriram 2011-02-15 06:16:25

+0

我经历过那些事。这些只是帮助“构建”Android的ffmpeg,我已经完成了。我不知道如何使用FFMPEG库函数。 – Codevalley 2011-02-15 07:10:28

回答

2

我开发了一个基于ffmpeg的android上的videoplayer。您可以使用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); 
}