我有一个 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
你将要无论感知“质量”如何,在重新编码时都会丢失数据。这就是尺寸减小的原因之一。使用压缩器的算法,微小或难以察觉的细节将会丢失或近似。
不过,主要的区别在于 Adobe 和 Snapdragon 的ffmpeg
默认质量和带宽设置不同。“VMAF 分数”看起来相似只是告诉您,人类可能看不出差异,而不是丢失了多少数据。
ffmpeg
将使用其默认设置解码帧并重新编码。默认值可能比较激进,根据https://trac.ffmpeg.org/wiki/Encode/H.265它将默认为medium
质量配置文件。
默认值为中等。预设决定压缩效率,因此会影响编码速度。有效预设为
ultrafast
、、、、、、、、、和。使用您有耐心接受的最慢预设。忽略它,superfast
因为它提供的回报微不足道,但编码时间veryfast
却大幅增加。faster
fast
medium
slow
slower
veryslow
placebo
placebo
较慢的压缩设置将更忠实地保留真实的原始质量,但代价是文件较大且压缩时间较长。
ffmpeg
还默认将 CRF 设置为 28,这将具有相当高的相对压缩率
选择 CRF。CRF 会影响质量。默认值为 28,它应该在视觉上与 CRF 23 的 libx264 视频相对应
甚至可能ffmpeg
默认启用了一些更高级的压缩功能。Adobe 可能会放弃一些编码近似功能而选择更高的比特率,以减少渲染时间,或保持质量或其他功能。如果不知道具体使用了哪些设置,就很难知道。
如果你想对 Adobe 和ffmpeg
输出进行公平的比较,那么你应该渲染为未压缩的格式,准确找出 Adobe 使用的设置,然后对其进行压缩未压缩两者都有文件。
重新压缩已压缩的文件(解码并重新编码)将导致发电损失虽然在一次传递过程中看起来可能并不明显,但会丢失数据和质量。经过几次传递后,损失将要具有重大意义。