如何使用 ffmpeg 设置 h.264 配置文件级别?

Sam*_*Sam 27 appletv profile ffmpeg x264

我有一部电影 (m4v/h.264/AAC) 可以在我的 Mac 上正常播放,但我最近发现它无法在我的 Apple TV3 上播放。查看此电影文件的属性后,我发现它的配置文件为 High@4.1,但 Apple TV3 仅支持 High@4.0。我认为使此视频不兼容的唯一属性是最大视频比特率,所有其他属性看起来都在 High@4.0 中受支持。

如何使用 ffmpeg 将此视频降级到 High@4.0?

或者我是否必须更改使此视频变为 4.1 而不是 4.0 的实际属性(最大比特率)?我担心如果我只是更改比特率,尽管文件将与 High@4.0 兼容,但它仍会被“标记”为 High@4.1,因此仍然无法在我的 Apple TV3 上播放。

slh*_*hck 38

使用 编码时libx264,您可以设置 H.264 配置文件和级别:

  • -profile:vhigh, main, or 之一baseline(以及其他,但这在这里无关紧要)
  • -level:v– 如 H.264 标准的附件 A 中所定义,例如4.0

例如:

ffmpeg -i input.mp4 -c:v libx264 -profile:v high -level:v 4.0 -c:a copy output.mp4
Run Code Online (Sandbox Code Playgroud)

这里我们只是复制了音频流,因为它不会受到影响。

输出将在其元数据中设置正确的配置文件和级别。您可以在编码时检查这一点,其中x264说的是:

[libx264 @ 0x7fb26103a000] profile High, level 4.0
Run Code Online (Sandbox Code Playgroud)

MediaInfo还可以帮助您分析容器和编解码器的详细信息。

当然,考虑到您再次应用有损转换,重新编码视频会在一定程度上降低其质量。尝试设置-crf影响恒定质量参数的选项。这里的默认值是 23,而 18 到 28 之间的值被认为是合理的。较低意味着更好的质量。如果您的输入具有高达 65,000 kBit/s 的比特率,那么转换后它看起来仍然很不错。

  • 我只是偶然发现了一种方法来实现这一目标。Subler 实际上有一个选项,当您选择视频流时,可以更改配置文件和级别以使其与某些设备兼容。它告诉您确保视频与您设置的配置文件兼容,因此我认为它不会进行任何重新编码,它必须仅更改元数据。 (2认同)