기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

안녕하세요. ffmpeg ndk를 이용하여 스트리밍을 해보있는 학생입니다.


ffmpeg 관련일것같아서 이쪽게시판에 글을 남김니다.


ffmpeg을 ndk로 빌드하여 포팅에 성공하여 실시간 디코딩을 하고 있는데


다음과같은 에러가 해결이 되지 않아 글을 남깁니다..

error.png


에러는 크게 두 종류인데 


06-11 08:25:30.925: A/libc(30095): Fatal signal 11 (SIGSEGV) at 0x5acec000 (code=1), thread 30200 (m.example.test2)


06-11 08:25:30.925: A/libc(30095): Fatal signal 11 (SIGSEGV) at 0x5acec000 (code=2), thread 30200 (m.example.test2)


입니다. 서버에서 클라이언트쪽으로 h264디코딩된 결과를 보내주게되는데 처음에 sps(19byte) pps(9byte) 처리를 하지 못하는 탓인지 자꾸 에러가 발생합니다.

하여 avcodec_decode_video2 를 주석처리 한 결과 이상없이 데이터를 주고 받는 것을 보아 서버 클라이언트 문제는 아닌것 같았습니다. (하지만 이상하게도 간혹 될때도있습니다. 한 번 에러를 일으키고 난 뒤)

int ffmpegInit()
{
__android_log_print(ANDROID_LOG_DEBUG, "ffmpegInit", "Start");
avcodec_init();
av_register_all();
pCodec = avcodec_find_decoder(CODEC_ID_H264);
pCodecCtx = avcodec_alloc_context3(pCodec);

pCodecCtx->width = IMAGE_WIDTH;
pCodecCtx->height = IMAGE_HEIGHT;
pCodecCtx->codec_id = CODEC_ID_H264;
pCodecCtx->codec_type = AVMEDIA_TYPE_VIDEO;
pCodecCtx->flags2 |= CODEC_FLAG2_FAST;
pCodecCtx->thread_count = 0;
pCodecCtx->pix_fmt = PIX_FMT_YUV420P;

if(avcodec_open2(pCodecCtx, pCodec, 0) < 0)
return -1;

pVFrame = avcodec_alloc_frame(); // 디코딩 된 데이터를 담는 프레임 버퍼 할당
pFrameRGB = avcodec_alloc_frame();

img_size = avpicture_get_size(PIX_FMT_RGB24,IMAGE_WIDTH, IMAGE_HEIGHT);
buffer = (unsigned char *) malloc(sizeof(unsigned char) * img_size);
avpicture_fill((AVPicture *)pFrameRGB, buffer, PIX_FMT_RGB24, pCodecCtx->width, pCodecCtx->height);

img_convert_ctx = sws_getCachedContext(img_convert_ctx,
pCodecCtx->width, pCodecCtx->height, pCodecCtx->pix_fmt,
pCodecCtx->width, pCodecCtx->height, PIX_FMT_RGB24, SWS_BICUBIC, NULL, NULL, NULL);


return 1;
}


int ffmpegDecoding(unsigned char *sock_buffer, int ImageLength, int count, unsigned char *outputRGB)
{
AVPacket packet;
av_init_packet(&packet);

//__android_log_print(ANDROID_LOG_DEBUG, "ffmpegDecoding", "Start");

int bGotPicture = 0;

packet.data = sock_buffer;
packet.size = ImageLength;

int len;
__android_log_print(ANDROID_LOG_DEBUG, "FFmpegDecoing","Start");

if( ( len = avcodec_decode_video2( pCodecCtx, pVFrame, &bGotPicture, &packet )) < 0)
return -1;

__android_log_print(ANDROID_LOG_DEBUG, "FFmpegDecoing","Len : %d",len);
__android_log_print(ANDROID_LOG_DEBUG, "FFmpegDecoing","bGotPicture : %d",bGotPicture);
__android_log_print(ANDROID_LOG_DEBUG, "FFmpegDecoing","End");
/*
if(bGotPicture)
{
__android_log_print(ANDROID_LOG_DEBUG, "ColorConvert", "Start");

sws_scale(img_convert_ctx, pVFrame->data, pVFrame->linesize, 0,pCodecCtx->height, pFrameRGB->data, pFrameRGB->linesize);
memcpy(outputRGB, pFrameRGB->data[0], img_size);

__android_log_print(ANDROID_LOG_DEBUG, "ColorConvert", "End");
}
*/
av_free_packet(&packet);
return 1;
}

위 코드가 ffmpeg init 부분이고 decoding 하드 부분인데 어떻게 에러를 해결해야 할지 보통 감이 잡히질 않습니다.

혹시 도움될만한 것이 있다면 꼭 답변 부탁드립니다!.

List of Articles
번호 제목 글쓴이 날짜 조회 수
6088 안드로이드 파일 시스템 /data rw ro변경 [1] 박용순 2014-06-30 1695
6087 안드로이드 lib 인스톨 하는 방법 [4] 박용순 2014-06-28 1776
6086 안드로이드 서브 추가된 서브 폴더 컴파일 하기 [2] 박용순 2014-06-21 1390
6085 bootcmd 개수 늘리기 or fatload buffer size 변경? [4] 마빡 2014-06-20 3242
6084 poll_wait 함수 오작동 [1] wizard14 2014-06-19 1537
6083 audio codec chip(wm8731)에서 간혹 출력이 안나올때가 있습니다 [2] 문철민 2014-06-18 1565
6082 [S5PV210] NAND 업데이트 방법 문의 [2] 때끼때끼 2014-06-14 1716
6081 GlobalMemoryStatus 함수 질문 깜성 2014-06-13 1343
» avcodec_decode_video2 crash 관련.. file 시그인트 2014-06-11 1777
6079 임베디드 리눅스에서 fwrite 시간 관련 질문 [1] SpecialCase 2014-06-11 1396
6078 gcc, g++ 컴파일관련 질문인데요. [1] ice179 2014-06-05 1583
6077 getWeakRefs 관련 질문 있습니다. [1] 시안 2014-06-03 1256
6076 ALOG(LOG_ERROR,"media.log","test media") 여기서 media.log 파일 생... 시안 2014-05-28 1448
6075 [wince6.0] 메모리 확장에 대한 문제점... [3] 깜성 2014-05-27 1690
6074 kikat 개발 PC 사양에 대해서 질문있어요 [4] 시안 2014-05-26 1705
6073 크로스컴파일러 종류에 따른 성능차이 질문인데요 pedor11 2014-05-26 1722
6072 aesopev.c 실행하니 좌표가 이상한데요;; [1] timul1 2014-05-21 1536
6071 tslib calibrate 관련 질문드리겠습니다. [3] ice179 2014-05-21 1733
6070 Rtems 관련해서 문의 드립니다. [3] 이진우 2014-05-20 1715
6069 tslib calibrate 설정 및 환경변수 관련 질문입니다. [2] ice179 2014-05-19 1418

사용자 로그인