簡體   English   中英

FFMPEG Android-將字節緩沖區傳遞給ffmpeg

[英]FFMPEG Android - passing bytebuffer to ffmpeg

我正在嘗試使用ffmpeg,並停留在如何將字節緩沖區傳遞給FFmpeg方法avcodec_decode_audio3

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

的方法聲明為avcodec_decode_audio3

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

有人做過這個嗎?

有人可以對此有所啟發嗎? 如果有人可以給我摘要如何做到這一點,那將非常有用。

不要將其視為jbyte類型,而應將值帶入無符號char * pBuffer char * pBuffer =(* env)-> GetDirectBufferAddress(env,buf); 您需要將其轉換為int16_t類型*樣本,然后將其傳遞給avcodec_decode_audio3(..... .pBuffer ....);

復制在這里完成:memcpy(samples,frame.extended_data [0],plane_size);

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM