1

私は ffmpeg を試していますが、bytebuffer を FFmpeg method に渡す方法に固執していますavcodec_decode_audio3

GetDirectBufferAddressJNI コードでは、jbyte型のオブジェクトを取得する bytebuffer にアクセスできます。avcodec_decode_audio3これをffmpegのメソッドに渡すにはどうすればよいですか?

is のメソッド宣言avcodec_decode_audio3

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

誰もこれを前にやったことがありますか。

誰かがこれに光を当てることができますか? 誰かがこれがどのように行われるかのスニペットを私に与えることができれば、それは非常に役に立ちます.

4

2 に答える 2

0

タイプ jbyte として解釈しないでください。むしろ、値を unsigned char *pBuffer char *pBuffer = (*env)->GetDirectBufferAddress(env,buf); に取り込んでください。int16_t *samples の型に型キャストしてから、 avcodec_decode_audio3(..... .pBuffer....); に渡す必要があります。

ここでコピーが行われます: memcpy(samples, frame.extended_data[0], plane_size);

于 2012-04-12T09:22:55.327 に答える
0

デコードにffmpegを使用する簡単なプロジェクトを開始しました。私はすでにffmpegをコンパイルし、ストリームを取得し、pcmデータをデコードして、JavaでAudioTrackに返すことができました。唯一の問題は、ノイズだけが返されることですが、私はそれに取り組んでいます。ここで確認してください https://github.com/mikebevz/AFPlayer

于 2011-10-25T07:32:19.297 に答える