在 ubuntu 中减少视频文件大小?

在 ubuntu 中减少视频文件大小?

如何缩小视频文件大小?出于某种原因,手机拍摄的视频文件很大。最糟糕的是 20 分钟的视频占用了整整 13 GB。如何缩小这些视频文件大小?它们是用 H.264 和 MPEG-4 AAC 编码的 mp4,播放速度为 30 fps。

如果质量下降也没关系。

我尝试使用avconv降低分辨率,但尽管这样输出的视频尺寸较小,但尺寸却奇怪地增加

有什么好方法可以减少这些文件的大小?

答案1

为了减少你的mp4的大小,你必须FFmpeg 的良好选择:

  1. 尝试使用恒定速率因子 (CRF) 设置来找到匹配项视频输出尺寸视频质量
  2. 尝试设置比特率并选择 2 次编码。

以下两者的详细信息:

1. 使用 FFmpeg 的恒定速率因子 (CRF) 选项调整大小:

在 FFmpeg 中,CRF 设置在 0-51 之间变化,0 表示无损,51 表示质量极差。默认值为 23,您需要找到特定视频文件大小的“最佳点”通过一些实验来提高视频质量。

示例命令行如下:

ffmpeg -i input.mp4 \
       -c:v libx264 -preset slow -crf 22 \
       -c:a copy \
       output.mp4

请注意,在此命令行中,视频是重新编码音频很简单复制跨越。需要考虑的事项:

  1. 如果尺寸仍然太大并且视频质量仍然可以接受,你会尝试-crf 24等等(逐步增加我们可以使用 crf 整数来查找文件大小,直到找到视频质量和文件大小之间可接受的折衷点。
  2. 如果视频质量太穷了你会尝试crf 20等等(逐步减少我们可以使用 crf 整数来查找文件大小,直到找到视频质量和文件大小之间可接受的折衷点。

2. 使用 FFmpeg 的“设置比特率”+“2 遍编码”选项调整大小:

另一个选择,可以说不是产生与 CRF 示例一样好的结果的方法是使用您选择的设置比特率并使用 2 遍编码。以下示例是单个命令

ffmpeg -y -i input.mp4 \
       -c:v libx264 -preset slow -b:v 1000k -pass 1 \
       -c:a copy -f mp4 /dev/null && \
ffmpeg -i input.mp4 \
       -c:v libx264 -preset slow -b:v 1000k -pass 2 \
       -c:a copy \
       output.mp4

在此示例中,视频再次被重新编码,音频则被简单复制。需要考虑的事项:

  1. 视频仍然太大?减少比特率……
  2. 品质太差?增加比特率……

继续这样做,直到找到视频质量和文件大小之间可接受的折衷方案。

参考:

答案2

所以我搞明白了。ffmpeg 中的“-b”标志设置比特率。我还发现 1,000,000 是一个很好的通用值,可以在文件大小和质量之间提供适当的权衡。

因此运行:

ffmpeg -i inputfilename.mp4 -b 1000000 outputfilename.mp4

如果需要,您可以将 1000000 替换为其他比特率值。此外,您还可以添加“-s WxH”标志来设置输出视频的大小。因此,要使输出视频为 720p,您需要添加“-s 1080x720”

相关内容