适用于 FFmpeg 1.0+ 的备忘单和预设设置

适用于 FFmpeg 1.0+ 的备忘单和预设设置

我查看了各种备忘单,但它们都过时了。哪些预设设置与最新版本的 FFmpeg 配合良好?我主要对低、中、高质量预设的 H.264 和 ProRes 编解码器感兴趣。

答案1

FFmpeg 不再包含 libx264 的基于文本文件的预设和配置文件,即您使用 选项时使用的预设和配置文件-vpre。这些已被弃用并删除,以便使用 、 和 选项访问实际的 x264 预设、配置文件(和曲调)-preset-profile:v-tune的文本文件仅模拟官方 x264 预设和配置文件,并且由于一些限制,无法提供新系统提供的全部功能。它也更易于维护。

此外,许多编码器都有自己单独的选项;也称为“私有选项”。您必须查看声音的视频FFmpeg 在线文档中常见编解码器的编码器选项,或查看输出ffmpeg -h full以获取受支持选项的完整列表。例如,x264libx264 AVOptions在完整帮助输出中列出了其选项。

如果您的 ffmpeg 支持,-preset则不应使用任何文本文件预设,并且 FFmpeg 不再附带除一些非标准 iPod 预设之外的任何其他预设。人们普遍误以为文本预设可以从任何地方复制并用于任何 ffmpeg。这是不正确的,会导致损坏。


基本上,预设允许您执行以下操作:

控制质量

质量是通过指定比特率-b:v(对于视频)或-b:a(对于音频)来控制的,或者通过指定编解码器可能支持的任何其他编码方法来控制的。

对于 x264,有多种编码方法,恒定利率因子该方法最为复杂。它会产生可变的比特率,但一次通过就能获得总体良好的质量。CRF 值的范围从 0 到 51,但合理的值介于 19 和 26 之间,具体取决于您的源和您想要的质量。23 是默认值,因此您可以例如选择 18 表示“高质量”,28 表示“低质量”,无论这对您意味着什么。

ffmpeg -i input.mp4 -c:v libx264 -crf 23 output.mp4

x264有其他编码方法但这超出了这里的范围。

约束H.264 配置文件

这些配置文件定义了编码器可能用来匹配特定解码器功能的功能集。在最近的 FFmpeg 中,使用以下语法来指定配置文件,其中配置文件可以是baseline或:mainhigh

ffmpeg -i input.mp4 -c:v libx264 -profile:v baseline output.mp4

有关更多信息以及何时应使用哪个配置文件,请参阅:H.264 配置文件之间有何区别?

选择 x264 编码preset

这些预设会影响编码速度。使用较慢的预设可获得更好的压缩率或单位文件大小的质量,而使用较快的预设则压缩率较差。一般来说,您应该只使用您可以等待的预设。预设可以是、 、 、 、ultrafastsuperfast默认veryfastfaster和。以下是示例:fastmediumslowveryslow

ffmpeg -i input.mp4 -c:v libx264 -preset slow output.mp4

编码无损视频

这可以通过指定 0 的 CRF 来实现,因此只需使用-crf 0

ffmpeg -i input.mp4 -c:v libx264 -crf 0 output.mp4

最后,我们来快速谈谈 ProRes。ProRes 接受固定比特率-b:v,也可以指定配置文件,配置文件应该是0 至 3 之间的值,其中比特率根据配置文件选择。 越高越好:

ffmpeg -i input.mp4 -c:v prores -profile:v 0 output.mov

ffmbc 维基建议可以使用配置文件的名称 - 但这在 FFmpeg 1.0 中失败了。

答案2

我做了一个测试,使用 libx264 编码将索尼摄像机的高质量视频转码为 ,.mp4使用全范围预设值(安慰剂除外)对一系列 CRF 值(18、21、24 和 27)进行编码。我想知道什么能给我带来编码速度、输出质量和文件大小的最佳组合。

对于每个 CRF 值,我为每个转码操作的编码时间打分(例如,对于 CRF = 18,预设值 ultrafast 的时间为 5.7 秒,得分为 1.0,veryslow 的时间为 162 秒,得分为 0,所有其他分数均介于两者之间)。我以类似的方式计算输出文件大小分数,当然,最小的文件得分最高。然后,我将这两个分数相加,得到“综合”速度/大小分数。

对于四个 CRF 值,预设“veryfast”毫无疑问是赢家,得分接近完美,分别为 1.94(CRF 18 和 21)、1.96(CRF 24)和 1.97(CRF 27)。我发现“veryfast”产生的效果非常奇怪每次几乎都是最小的文件大小,仅输给“veryslow”,且差距不大。

我确实注意到各种预设值之间的一个区别是操作系统 (Windows 7) 会给我不同的缩略图。较快的预设会在视频开始几秒后显示缩略图,而较慢的预设的缩略图会反映视频的开头帧。这对我来说并不重要;我了解到“-preset veryfast”似乎是一个简单的选择。

以下是我的结果(作为 Excel 电子表格的快照图像):
excel 快照

以下是 csv 文本格式的 Excel 电子表格:

CRF,Preset,Seconds,score,MB,score,totalscore
18,1_ultrafast,5.7,1.00,59.5,0.09,1.09
18,2_superfast,8.4,0.98,62.3,0.00,0.98
18,3_veryfast,10.8,0.97,30.9,0.98,1.94
18,4_faster,16.0,0.93,33.5,0.89,1.83
18,5_fast,24.0,0.88,36.8,0.79,1.68
18,6_medium,29.1,0.85,34.9,0.85,1.70
18,7_slow,48.1,0.73,33.9,0.88,1.61
18,8_slower,84.9,0.49,33.0,0.91,1.40
18,9_veryslow,162.0,0.00,30.1,1.00,1.00
21,1_ultrafast,5.7,1.00,38.0,0.00,1.00
21,2_superfast,7.9,0.98,35.0,0.15,1.14
21,3_veryfast,10.0,0.97,19.0,0.97,1.94
21,4_faster,14.2,0.94,21.0,0.87,1.80
21,5_fast,19.9,0.89,23.0,0.77,1.66
21,6_medium,24.6,0.86,22.0,0.82,1.67
21,7_slow,43.1,0.72,21.0,0.87,1.58
21,8_slower,69.8,0.51,20.5,0.89,1.41
21,9_veryslow,137.3,0.00,18.4,1.00,1.00
24,1_ultrafast,5.5,1.00,24.9,0.00,1.00
24,2_superfast,7.5,0.98,21.4,0.27,1.25
24,3_veryfast,9.3,0.97,12.0,0.99,1.96
24,4_faster,13.2,0.93,14.0,0.84,1.77
24,5_fast,17.4,0.90,15.0,0.76,1.66
24,6_medium,21.0,0.87,14.4,0.81,1.67
24,7_slow,37.3,0.72,14.0,0.84,1.56
24,8_slower,62.2,0.51,13.0,0.92,1.42
24,9_veryslow,121.1,0.00,11.9,1.00,1.00
27,1_ultrafast,5.5,1.00,16.8,0.00,1.00
27,2_superfast,7.4,0.98,13.6,0.38,1.36
27,3_veryfast,9.0,0.97,8.4,1.00,1.97
27,4_faster,12.6,0.93,10.1,0.80,1.73
27,5_fast,15.8,0.90,10.4,0.76,1.66
27,6_medium,18.8,0.87,10.0,0.81,1.68
27,7_slow,34.1,0.73,9.8,0.83,1.56
27,8_slower,59.6,0.48,9.0,0.93,1.41
27,9_veryslow,109.7,0.00,8.4,1.00,1.00

答案3

较慢的编码时间(即预设)往往会提供更好的质量与比特率权衡曲線。

4K 超高清视频中各种 H.265 预设的质量与比特率
vmaf_vs_bitrate_mbps
对于给定的目标质量水平,较慢的预设更能降低速率。

此图是使用以下方法构建的:此代码通过结合“军事空军vs CRF” 和 “比特率 vs CRF” 图来自此来源.
请注意,这些曲线可能因数据源和视频分辨率的不同而有所差异。

结果表:

-preset BD 速率(%)
ultrafast 51.2
superfast 39.0
veryfast 53.5
faster 53.3
fast 50.3
medium 37.5
slow 5.3
slower 0.8
veryslow 0.0

BD-Rate 表示相对于参考曲线的速率相对百分比增加(即veryslow)。

每个预设的编码时间是其紧接的前一个预设的 1.3 倍至 2.0 倍。

建议:

  • -preset ultrafast适用于流媒体等实时应用程序
  • -preset medium(默认)适合休闲使用
  • -preset slow适合长期个人存储
  • -preset veryslow用于发布(YouTube、Netflix 或 DVD)

-preset slow通常比 好得多-preset medium,并且值得花费 2 倍的编码时间。


源数据:

为了生成上面的图表,我们结合了以下数据:

VMAF 与 CRF 比特率与 CRF

相关内容