您的位置:首页 > 其它

ffmpeg 新老接口问题及对照集锦

2013-06-08 20:09 337 查看
网上很多关于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接口调整

旧代码:

[cpp] view
plaincopy

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

新代码:

[cpp] view
plaincopy

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()

旧代码

[cpp] view
plaincopy

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);

新代码

[cpp] view
plaincopy

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);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: