FFmpeg 的 H.265 编码为何比 Adob​​e 的效率高得多?

FFmpeg 的 H.265 编码为何比 Adob​​e 的效率高得多?

我有一个 30 秒的 1080p 视频文件,由 Premiere Pro/Media Encoder(目标比特率 10)渲染,并采用 H.265 编码。它有 36.6 MB。当我运行命令时

ffmpeg -i input -c:v libx265 -c:a copy output.mp4

新文件只有 5.04 MB。mediainfo显示新文件的比特率只有 1164 kb/s。尽管一个比另一个小很多,但两个视频看起来完全相同(与未压缩版本相比,两者的 VMAF 分数均高于 97)。

它是否可以libx265智能地选择比特率,从而使视频大小变得更小?

答案1

将要无论感知“质量”如何,在重新编码时都会丢失数据。这就是尺寸减小的原因之一。使用压缩器的算法,微小或难以察觉的细节将会丢失或近似。

不过,主要的区别在于 Adob​​e 和 Snapdragon 的ffmpeg默认质量和带宽设置不同。“VMAF 分数”看起来相似只是告诉您,人类可能看不出差异,而不是丢失了多少数据。

ffmpeg将使用其默认设置解码帧并重新编码。默认值可能比较激进,根据https://trac.ffmpeg.org/wiki/Encode/H.265它将默认为medium质量配置文件。

默认值为中等。预设决定压缩效率,因此会影响编码速度。有效预设为ultrafast、、、、、、、、、和。使用您有耐心接受的最慢预设。忽略它,superfast因为它提供的回报微不足道,但编码时间veryfast却大幅增加。fasterfastmediumslowslowerveryslowplaceboplacebo

较慢的压缩设置将更忠实地保留真实的原始质量,但代价是文件较大且压缩时间较长。

ffmpeg还默认将 CRF 设置为 28,这将具有相当高的相对压缩率

选择 CRF。CRF 会影响质量。默认值为 28,它应该在视觉上与 CRF 23 的 libx264 视频相对应

甚至可能ffmpeg默认启用了一些更高级的压缩功能。Adobe 可能会放弃一些编码近似功能而选择更高的比特率,以减少渲染时间,或保持质量或其他功能。如果不知道具体使用了哪些设置,就很难知道。

如果你想对 Adob​​e 和ffmpeg输出进行公平的比较,那么你应该渲染为未压缩的格式,准确找出 Adob​​e 使用的设置,然后对其进行压缩未压缩两者都有文件。

重新压缩已压缩的文件(解码并重新编码)将导致发电损失虽然在一次传递过程中看起来可能并不明显,但会丢失数据和质量。经过几次传递后,损失将要具有重大意义。

答案2

军事空军对于非常高质量的编码来说,这根本不是一个好的指标。即使比较数学上相同的内容,有时 vmaf 分数也会低至 97.4 左右,而即使 vmaf 100 也不能保证视觉透明度。

这意味着 VMAF 分数几乎不能告诉您这些特定编码的质量。

当时,最适合近透明视频的视觉指标是静态图像指标,例如巴特劳格利或 SSIMULACRA。

相关内容