FFmpeg中使用libx264的码率控制

Posted jiayayao

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FFmpeg中使用libx264的码率控制相关的知识,希望对你有一定的参考价值。

    两种码率控制模式:crf模式和ABR模式

一、crf模式

    Constant Rate Factor(crf)优点是提供了最大的压缩效率,每一帧可以按照要求的视频质量去决定它需要的比特数。缺点是,不能计算规定时间的视频文件大小,或者准确控制输出码率。

1. 选择一个crf值

    crf值是视频质量的量化值,取值范围0~51,其中0为无损模式,23为默认值,51代表最差质量。crf值加6,输出码率大概减少一半;

2. 选择一个预设(preset)

    preset似的编码器能够在编码速度和压缩率之间做出权衡。也就是说,选择越慢的编码速度,压缩率就会越高。如果要求编码速度更快,一般选择ultrafast。

    开发者还可以基于输入内容的独特性通过使用--tune来改变参数设置。如果没有特殊要求,一般选择zerolantency。

av_opt_set(pCodecCtx->priv_data, "preset", "ultrafast", 0);
av_opt_set(pCodecCtx->priv_data, "crf", "20", AV_OPT_SEARCH_CHILDREN);

二、ABR模式

    Average Bit Rate(ABR)模式更注重码率控制,适合在一段时间内生成固定大小的视频,而不太注重视频质量的场景。

 

以上是关于FFmpeg中使用libx264的码率控制的主要内容,如果未能解决你的问题,请参考以下文章

x264的码率控制

FFmpeg h.264 mp4编码告警:non-strictly-monotonic PTS

FFmpeg h.264 mp4编码告警:non-strictly-monotonic PTS

H264编码系列之ffmpeg和x264码率控制分析

ffmpeg/libx264 C API:从短 MP4 末尾丢弃的帧

如何在 macos 上为 ffmpeg 启用 libx264