2011-02-15 279 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); 
}