我查看了各种备忘单,但它们都过时了。哪些预设设置与最新版本的 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
或:main
high
ffmpeg -i input.mp4 -c:v libx264 -profile:v baseline output.mp4
有关更多信息以及何时应使用哪个配置文件,请参阅:H.264 配置文件之间有何区别?
选择 x264 编码preset
这些预设会影响编码速度。使用较慢的预设可获得更好的压缩率或单位文件大小的质量,而使用较快的预设则压缩率较差。一般来说,您应该只使用您可以等待的预设。预设可以是、 、 、 、ultrafast
(superfast
默认veryfast
)faster
和。以下是示例:fast
medium
slow
veryslow
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”似乎是一个简单的选择。
以下是 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 预设的质量与比特率 |
---|
对于给定的目标质量水平,较慢的预设更能降低速率。 此图是使用以下方法构建的:此代码通过结合“军事空军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 |
---|---|