ffmpeg 新老接口問題及對照集錦

出處:http://bbs.rosoo.net/thread-6268-1-1.html 

     網上很多關於ffmpeg (libav)的資料都是N年以前的,而事實上ffmpeg數年來一直在“以時俱進”,因此無論是一些新手,或者號稱爲老手的人,有時候難免出頭痛。。。。。。

爲了解決大家的頭痛的問題,特列一個貼子,把ffmpeg相關的一些常見的、版本的問題列舉出來,供大家參考,同時也請大家一起補充。

1) 不認識guess_format.
解決:  #define guess_format  av_guess_format 
接口不變。

2) 不認識av_alloc_format_context
解決:  #define   av_alloc_format_context  avformat_alloc_output_context
接口調整。

3) 不認識CODEC_TYPE_VIDEO 和 CODEC_TYPE_AUDIO
解決:
#define CODEC_TYPE_VIDEO AVMEDIA_TYPE_VIDEO
#define CODEC_TYPE_AUDIO AVMEDIA_TYPE_AUDIO

4) 不認識audio_resample_init
解決:#define audio_resample_init av_audio_resample_init
接口調整。

5) avcodec_decode_video 到 avcodec_decode_video2接口調整

舊代碼:

len = avcodec_decode_video(c, (short *)outbuf, &out_size, inbuf_ptr, size);

新代碼:

av_init_packet(&pkt);
pkt.data = (unsigned char*)inbuf_ptr;
pkt.size = size;
len = avcodec_decode_video2(c, &tmpFrame, &got_picture, &pkt); 


6) img_convert()找不到

   新接口爲sws_getContext(), sws_scale()

舊代碼
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);

新代碼

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);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章