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

안녕하세요. 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
번호 제목 글쓴이 날짜 조회 수sort
6088 Android 에 T-DMB porting [2] 신원 2010-04-03 2534
6087 혹시 비글본블랙(BeagleBoneBlack)보드로 [1] 은민아빠 2013-06-24 2531
6086 완료) DSUB 15핀에 있는 UART2를 사용가능한가요 ? [3] 김형기 2007-06-27 2529
6085 [질문]aesop-lx800 Linux(Slackware 11.0) install guide 보고 그대... [2] 조준동 2007-06-05 2529
6084 [질문]LX-800보드 전면 아크릴 도면구할수 있나요? [2] 안문기 2007-05-27 2529
6083 [질문]lx vga driver 관련. [2] 류영렬 2007-05-19 2529
6082 ADS1.2를 이용하여 bootloader를 만들어보고 있습니다. file 난리법석 2011-04-18 2528
6081 블루투스 포팅관련 질문입니다. [5] 안병기 2009-06-03 2526
6080 [질문] nfs 대몬 질문 드립니다. <= 완료 [2] 안정섭 2006-04-14 2524
6079 부팅시 이미지변경 및 LINUXBIOS [2] 조은성 2007-11-20 2518
6078 spidev.c 커널 컴파일시 probe()함수를 읽지를 않네요... [3] wook 2011-10-07 2517
6077 삼성 s3c6410 2.6.28 kernel 다운 받는 git 주소 가르쳐주세요 [2] 이성호 2009-04-13 2513
6076 [완료] Slackware 11.0 어디서 구하나요... [2] 김영곤 2007-05-22 2510
6075 터치스크린 구할 수 있나요?[완료] [2] 조준동 2007-06-04 2508
6074 YCbCr, YUV, BT601, BT656 ? 김경식 2013-03-30 2501
6073 mipi DSI 제어 [1] Gamja 2011-12-12 2497
6072 [질문] 안드로이드 절전모드 해제 방법 [1] 워리어 2011-05-20 2496
6071 [질문겸 이것저것] aESOP 3차보드에 Linux 2.6.21 적용과 오디오... [7] 이재훈 2007-06-23 2495
6070 안드로이드에서 H/W Codec 연결 [2] 김성훈 2010-08-03 2492
6069 RVDS 4.0 쓰시는 분들 질문이요 !! [3] 뿌삐뿌삐 2009-10-29 2487

사용자 로그인