2012-01-10 60 views
0

我使用這個功能來解碼音頻,但沒有任何聲音:WMA解碼通過FFmpeg iPhone上

int decodedBytes; 
decodedBytes = avcodec_decode_audio4(myData->pCodecCtx, myData->myFrame, &data_size, &myData->pkt); 

數據下載成功,但我不知道在哪裏何去何從,因爲根本沒有聲音。

+0

通過「沒有聲音」你的意思是你沒有聽到任何聲音,或者你沒有得到任何聲音樣本數據? ffmpeg只負責解碼,你必須輸出到coreaudio,openal等。 – 2012-01-10 22:18:55

+0

請給出更多的上下文,你的目標是什麼?錯誤消息或代碼?我可能需要更多示例代碼。 – 2012-01-10 22:27:35

+0

我有聲音的示例數據,AVCodecContext,AVCodec,AVFrame,AVPacket和AVFormatContext的所有字段都被填充,但我似乎無法使用AudioQueueEnqueueBuffer正確輸出它們。你需要看更多的代碼嗎?你想我通過電子郵件發送給你嗎?謝謝你的幫助! – Winston 2012-01-12 19:46:57

回答

3

如果使用avcodec_decode_audio3而是接縫的工作:

decodedBytes = avcodec_decode_audio3(myData->pCodecCtx, samples, &data_size, &myData->pkt); 

但你可能應該使用avcodec_decode_audio4avcodec_decode_audio3接縫被棄用。我對ffmpeg/libav瞭解不多,但我猜想audio4在libav中使用緩衝區系統,而不是傳入緩衝區。

也許這將差異給予提示如何使用audio4:

http://git.libav.org/?p=libav.git;a=commitdiff;h=f199f38573c4c02753f03ba8db04481038fa6f2e

+0

謝謝!我正在看一看。 – Winston 2012-01-13 16:42:22

+0

是的,它使用avcodec_decode_audio3,但我必須弄清楚如何使用avcodec_decode_audio4工作。謝謝! – Winston 2012-01-13 18:44:12

+0

到目前爲止,我無法做出任何有用的更改使用avcodec_decode_audio4。任何想法如何做到這一點? – Winston 2012-01-13 20:26:25