如何在不损失质量的情况下使用 ffmpeg 显着降低视频文件大小?

San*_*hit 5 ffmpeg video video-encoding

我看到 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 尝试在 18 到 24 之间更改 -crf,同时使用 libx264,265 但这都导致几乎相同的输出大小,有时甚至变得更大而不是更小。

mas*_*ice 12

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

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

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

如果你想进一步减小文件大小,x265支持CRF和两种不同的目标比特率算法:

与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。

  • @PrimoPetri 注意:您应该使用编码时间而不是 CPU 负载作为指标,因为“ffmpeg”将使用所有可用资源。较低的 CRF 将导致处理更多数据,因此编码持续时间更长。目前尚不清楚您所说的后处理是什么意思,最好创建一个专门的问题。您可以通过“@mashuptwice”在评论中链接我 (2认同)