FFMPEG Android - передача байтового буфера в ffmpeg - PullRequest
1 голос
/ 24 марта 2011

Я пробую свои силы на ffmpeg и застрял на том, как передать байтовый буфер методу FFmpeg avcodec_decode_audio3.

В коде JNI я могу получить доступ к байтовому буферу через GetDirectBufferAddressкоторый дает мне объект типа Jbyte.Как мне передать это в avcodec_decode_audio3 метод ffmpeg?

Объявление метода для avcodec_decode_audio3 равно

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

Кто-нибудь делал это раньше.

Может кто-нибудь пролить свет на это?Если кто-то может дать мне фрагмент того, как это делается, это было бы очень полезно.

Ответы [ 2 ]

0 голосов
/ 12 апреля 2012

Не принимайте это как тип 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);

0 голосов
/ 25 октября 2011

Я запустил простой проект, где я использую ffmpeg для декодирования.Мне уже удалось скомпилировать ffmpeg, получить поток, декодировать и вернуть данные PCM в AudioTrack в Java.Единственная проблема в том, что я получаю только шум назад, но я работаю над этим.Проверьте это здесь https://github.com/mikebevz/AFPlayer

...