如何最大效率压缩视频文件(ffmpeg)

转载并翻译,原文:stackexchange

我测试了针对这个问题提出的大多数其他答案,测试数据结论如下。以下是我测试的方法:

(BR)修改码率

# $infile: 输入视频路径
# $outfile: 输出视频路径
ffmpeg -i $infile -b $bitrate $outfile

(CR)修改固定码率系数

ffmpeg -i $infile -vcodec libx264 -crf 23 $outfile

(SZ)修改视频分辨率(举例为修改为原分辨率的一半)

ffmpeg -i $infile -vf "scale=iw/2:ih/2" $outfile

(BL)更改H.264 profile为“baseline”

ffmpeg -i $infile -profile:v baseline $outfile

(DF)ffmpeg默认方法

ffmpeg -i $infile $outfile

数据

  • “size”: 输出视频大小与原视频比较百分比
  • “bitrate”:码率
  • “defination”:分辨率
  • “convert”:程序处理事件

文件A:低码率低分辨率

如何最大效率压缩视频文件(ffmpeg)_第1张图片

文件B:高码率高分辨率

如何最大效率压缩视频文件(ffmpeg)_第2张图片

结论

  • (SZ)毫无疑问是最快的方法,通常是其他方法的两倍到四倍快。这种速度上的优势在高分辨率的视频处理中很占优势,因为其他方法所需时间甚至可能比视频文件的时间还要长!譬如(CR)方法在处理21分钟的视频时花费了53分钟。
  • 当视频分辨率大于显示器的分辨率时,(SZ)无疑是压缩视频最好的方法。举例来说,如果你的手机只能播放最大1080p的视频,发送一个2k的视频就显得浪费空间,毕竟将它压缩成1080p的视频可以缩小一半的空间。
  • 其中的一些压缩方法甚至还增加了视频的大小,说明除了(SZ)方法以外的其他方法不适用于所有情况。

正确(最佳)答案

将视频分辨率降低到显示器能支持的最大分辨率总是没错的。
如果你想继续压缩视频,就将取决于你的个人选择。你可以选择减少信息内容或者进一步压缩。

  • 如果你不是很在乎分辨率,就继续减少它。
  • 如果你的视频不包含快速的动作场景,可以尝试降低帧率。
  • 如果你的CPU很强大,可以增加压缩率。
  • 码率是多种因素共同作用的结果。因此,仅仅告诉ffmpeg去降低码率可能不会给你想要的结果。

你可能感兴趣的:(视频处理,ffmpeg,视频处理,信息压缩)