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

qua*_*fly 9 video avconv

如何减少视频的文件大小?出于某种原因,通过电话拍摄了巨大的视频。其中最糟糕的是 20 分钟的视频,占用了整个 13 GB。如何缩小这些文件的大小?它们是以 H.264 和 MPEG-4 AAC 编码的 mp4,以 30 fps 播放。

如果质量下降也没关系。

我尝试使用avconv降低分辨率,但即使输出的视频尺寸更小,尺寸也奇怪地增加了

减少这些文件大小的好方法是什么?

and*_*.46 18

要减小 mp4 的大小,FFmpeg有两个不错的选择:

  1. 试验恒定速率因子 (CRF) 设置以找到视频输出大小视频质量之间的匹配
  2. 尝试使用您选择的设置比特率并使用 2 pass 编码。

以下两者的详细信息:

1. 使用 FFmpeg 的 Constant Rate Factor (CRF) 选项调整大小:

在 FFmpeg 中,CRF 设置从 0 到 51 不等,其中 0 表示无损,51 表示质量非常差。默认值为 23,您需要通过一些实验为您的特定视频的文件大小视频质量找到“最佳位置” 。

示例命令行将是:

ffmpeg -i input.mp4 \
       -c:v libx264 -preset slow -crf 22 \
       -c:a copy \
       output.mp4
Run Code Online (Sandbox Code Playgroud)

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

  1. 如果大小仍然太大并且视频质量仍然可以接受,您可以尝试-crf 24依此类推(逐渐增加crf 整数),直到找到视频质量和文件大小之间可接受的折衷。
  2. 如果视频质量太差,您会尝试crf 20依此类推(逐渐减少crf 整数),直到找到视频质量和文件大小之间可接受的折衷。

2. 使用 FFmpeg 的 'set bitrate' + '2 pass encode' 选项调整大小:

另一种可能不会产生像 CRF 示例那样好的结果的选择是使用您选择的设置比特率并使用 2 pass 编码。以下示例是单个命令

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
Run Code Online (Sandbox Code Playgroud)

同样在这个例子中,视频被重新编码,音频被简单地复制。需要考虑的事项:

  1. 视频还是太大了?降低比特率...
  2. 质量太差?提高比特率...

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

参考:


qua*_*fly 6

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

所以运行:

ffmpeg -i inputfilename.mp4 -b 1000000 outputfilename.mp4
Run Code Online (Sandbox Code Playgroud)

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