2011-03-24 2 views
1

FFmpeg 메서드 avcodec_decode_audio3에 bytebuffer를 전달하는 방법에 대해 ffmpeg를 사용하고 있습니다.FFMPEG 안드로이드 - ffmpeg에 바이트 버퍼 전달

JNI 코드에서 jbyte 유형의 객체를 제공하는 GetDirectBufferAddress을 통해 bytebuffer에 액세스 할 수 있습니다. 이것을 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

망가 오히려 서명 숯불 *의 pbuffer * CHAR의 pbuffer = (ENV *)에 값을 취할 입력 jbyte로 받아 -> GetDirectBufferAddress (ENV, 버피); int16_t * 샘플 의 형식을 입력 할 때 avcodec_decode_audio3 (..... .pBuffer ....);로 전달해야합니다.

여기에서 복사가 수행됩니다. memcpy (samples, frame.extended_data [0], plane_size);