如何设置编码器参数
  1bTlX33AWdQ4 2023年11月02日 42 0

编码器 (encode)的参数也是分为 通用部分 跟 私有部分。通用部分是指大部分编码器都有的属性,例如码率就是通用的。通用部分的参数是在 ​​avcodec_options​​ 变量里面的,如下:

如何设置编码器参数_编码器

也可以通过 ​​ffmpeg.exe -h > t.txt​​ 来查看通用部分,如下:

如何设置编码器参数_编码器_02

编码器私有部分的参数可以通过以下命令查询:

ffmpeg.exe -h decoder=libx264
ffmpeg.exe -h encoder=libx264

如何设置编码器参数_编码器_03


无论是通用还是私有属性,都是使用 ​​AVDictionary​​ 来设置的,就是最后一个参数 ​​AVDictionary **options​​,如下:

int avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options);

下面通过一个例子来演示如何设置编码器参数,本文代码可在 ​​GitHub​​ 下载:

如何设置编码器参数_编码器_04

上图中,演示了两种设置编码器属性的方法,一种是直接赋值各个字段,例如 ​​pix_fmt​​, ​​color_range​​ 就是采用第一种方法。

第二种是通过 ​​AVDictionary​​ 来设置,传递进去 ​​avcodec_open2()​​ 函数里面即可,libx264 的 ​​preset​​ 默认是 ​​medium​​ 的,我把他改成 ​​superfast​​ (超级快)。

提醒: ​​avcodec_open2()​​ 函数如果使用了 ​​AVDictionary​​ 的值,就会删除掉,例如 ​​avcodec_open2()​​ 函数执行完之后,​​preset​​ 这个值就会从 ​​AVDictionary​​ 里删除。

最后使用完之后,需要调 ​​av_dict_free()​​ 来释放 ​​AVDictionary​​ 的内存。


解码器参数的设置 跟编码器参数设置是类似,照葫芦画瓢就行。解码器的参数通常比较少。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  utcwpaXdbjbR   2023年11月02日   44   0   0 html选择器ffmpeg
1bTlX33AWdQ4