將里面的ffmpeg,SDL,bin三個文件夾COPY到工程文件夾下,然后配置好include和lib的設(shè)置,這里有用的文件夾只有ffmpeg,后面兩個還沒用到。
設(shè)置好后,再將ffmpeg4mobile里的portab.h復(fù)制到工程文件下,在使用ffmpeg的頭文件之前要包含這個頭文件,不然會很多個錯誤,然后就可以用了。
這里要注意一下,在解碼MPEG4時找不到以下三個函數(shù)的:
avpicture_get_size
avpicture_fill
img_convert
后來看到以下文章就解決前面兩個函數(shù)的問題:
http://hi.baidu.com/mikenoodle/blog/item/81700bf3153af4c00b46e01f.html
int numBytes=avpicture_get_size(PIX_FMT_RGB24, g_pCodecCtx->width,g_pCodecCtx->height);
替換為
int numBytes=g_pCodecCtx->width*g_pCodecCtx->height*3;
avpicture_fill((AVPicture *)g_pFrameRGB, buffer, PIX_FMT_RGB24,g_pCodecCtx->width, g_pCodecCtx->height);
替換為
((AVPicture *)g_pFrameRGB)->linesize[0]=g_pCodecCtx->width*3;
((AVPicture *)g_pFrameRGB)->data[0]=buffer;
至于第三個應(yīng)該是過時的,已經(jīng)被另一個函數(shù)代替掉了詳細(xì)如下:
http://ianccani.tistory.com/27
FFMPEG video frame decode YUV420p decode ,
Win32 RGB24 .
yuv420p_to_rgb24 img_convert() ,
FFMPEG Compile --enable-swscale , sws_scale() .
# img_convert()
img_convert ( (AVPicture *)frameRGB, PIX_FMT_RGB24, (AVPicture*)frame,is->video_st->codec->pix_fmt, is->video_st->codec->width, is->video_st->codec->height);
# sws_getContext(), sws_scale()
static struct SwsContext *img_convert_ctx;
img_convert_ctx = sws_getContext (is->video_st->codec->width,
is->video_st->codec->height, is->video_st->codec->pix_fmt,
is->video_st->codec->width, is->video_st->codec->height,
PIX_FMT_RGB24, SWS_BICUBIC, NULL, NULL, NULL);
sws_scale (img_convert_ctx, frame->data, frame->linesize,0, is->video_st->codec->height, frameRGB->data, frameRGB->linesize);