FFMpeg中apiexample.c例子分析——编码分析1

apiexample.c例子教我们如何去利用ffmpeg库中的api函数来自己编写编解码程序。

 

FFMpeg中apiexample.c例子分析——编码分析1

 

  (1)首先,main函数中一开始会去调用avcodec_init()函数,该函数的作用是初始化libavcodec,而我们在使用avcodec库时,该函数必须被调用。

  (2)avcodec_register_all()函数,注册所有的编解码器(codecs),解析器(parsers)以及码流过滤器(bitstream filters)。当然我们也可以使用个别的注册函数来注册我们所要支持的格式。

  (3)video_encode_example()函数用于视频编码,由图可知,所有的编码工作都在该函数内完成。

  (4)avcodec_find_encoder()函数用于查找一个与codec ID相匹配的已注册的编码器。

  (5)avcodec_alloc_context()函数用于分配一个AVCodecContext并设置默认值,如果失败返回NULL,并可用av_free()进行释放。

  (6)avcodec_alloc_frame()函数用于分配一个AVFrame并设置默认值,如果失败返回NULL,并可用av_free()进行释放。

  (7)设置参数:

    设置采样参数,即比特率。

    c->bit_rate = 400000;

    设置分辨率,必须是2的倍数。

    c->width = 352;

    c->height = 288;

    设置帧率。

    c->time_base = (AVRational){1,25}; 该帧率为25,其实timebase = 1/framerate,花括号内分别为分子和分母。

    设置GOP大小。

    c->gop_size = 10; 该值表示每10帧会插入一个I帧(intra frame)。

    设置B帧最大数。

    c->max_b_frames = 1; 该值表示在两个非B帧之间,所允许插入的B帧的最大帧数。

    设置像素格式。

    c->pix_fmt = PIX_FMT_YUV420P; 该值将像素格式设置为YUV420P。

  (8)avcodec_open()函数用给定的AVCodec来初始化AVCodecContext。

  (9)接着是打开文件,f = fopen( filename, “wb” );

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值