如何使用 ffmpeg 显着降低视频文件大小而不损失质量?

如何使用 ffmpeg 显着降低视频文件大小而不损失质量?

我看到 youtube 上有一些分辨率为 1080p 的视频,长度超过 10 分钟,大小只有 50-60 MB。

我的视频只有 3 分钟长,分辨率只有 720p,但无法将其大小降至 90mb 以下。

我检查了另一个在这里回答关于减小尺寸的问题。尝试使用更改比特率ffmpeg -i input.mp4 -b 1000000 output.mp4

也尝试过ffmpeg -i input.mp4 -vcodec libx265 -crf 20 output.mp4 将 -crf 在 18 到 24 之间更改,同时使用 libx264,265,但这都导致了几乎相同的输出大小,有时它甚至变得更大而不是更小。

答案1

我对 h265 编解码器有很好的体验。

输出视频的尺寸缩小了 2-8 倍,但质量没有任何明显的损失。

ffmpeg -i input.mkv -c:v libx265 -vtag hvc1 -c:a copy output.mkv

如果你想进一步减小文件大小,x265支持病例报告表以及两种不同的目标比特率算法:

与x264类似,x265编码器具有多种码率控制算法,包括:

  • 1-pass 目标比特率(通过设置 -b:v)
  • 2 遍目标比特率
  • 恒定速率因子 (CRF)

病例报告表:

虽然比特率随 CRF 变化,但帧与帧之间的质量几乎相同。

CRF 可以是 0 到 51 之间的任何值,其中较低的值将导致较高的质量。你想要做的就是设置一个相对较高的 CRF。这当然会使质量变差。

  • 选择 CRF。 CRF影响质量。默认值为 28,它在视觉上应与 CRF 23 处的 libx264 视频相对应,但文件大小约为一半。 CRF 的工作方式与 x264 中一样,因此请选择提供可接受质量的最高值。

  • 选择一个预设。默认值为中等。预设决定压缩效率并因此影响编码速度。有效预设为超快、超快、非常快、更快、快、中、慢、慢、非常慢和安慰剂。使用您有耐心的最慢预设。忽略安慰剂,因为它为编码时间的显着增加提供了微不足道的回报。

  • 选择一首曲子(可选)。默认情况下,此功能处于禁用状态,并且通常不需要设置调整选项。 x265 支持以下 -tune 选项:psnr、ssim、grain、zerolatency、fastdecode。 H.264 指南中对此进行了解释。

条件描述表示例

ffmpeg -i input -c:v libx265 -crf 28 -preset slower -c:a copy output.mp4

请注意,在示例中我们只是复制音频流。您还可以对音频流进行转码以节省额外的几MB。

相关内容