2011-03-24 119 views
1

我正在嘗試使用ffmpeg,並被卡在如何將 bytebuffer傳遞給FFmpeg方法avcodec_decode_audio3FFMPEG Android - 將bytebuffer傳遞給ffmpeg

在JNI代碼,我能夠通過GetDirectBufferAddress訪問字節緩衝區,給了我的類型jbyte的對象。我如何將這個傳遞給ffmpeg的avcodec_decode_audio3方法?

的方法聲明爲avcodec_decode_audio3

avcodec_decode_audio3(AVCodecContext *avctx, int16_t *samples, int 
*frame_size_ptr, AVPacket *avpkt) 

有沒有人這樣做過。

有人可以扔在這一些輕?如果有人能給我一個這樣做的片段,這將是非常有用的。

回答

0

我已經開始了一個簡單的項目中,我使用的ffmpeg解碼。我已經設法編譯ffmpeg,獲取流,解碼並將pcm數據返回給Java中的AudioTrack。唯一的問題是我只能回覆,但我正在努力。這裏檢查它https://github.com/mikebevz/AFPlayer

0

不要把它作爲類型jbyte,而採取值存入無符號字符* p緩衝器 字符* p緩衝器=(* ENV) - > GetDirectBufferAddress(ENV,BUF); 你需要強制轉換把它的類型int16_t的*樣品 然後把它傳遞給avcodec_decode_audio3(..... .pBuffer ....);

並且這裏複製完成: memcpy(samples,frame.extended_data [0],plane_size);