【FFmpeg】视频压缩:scale

908 阅读2分钟

背景

  • scale 是一个视频滤镜(filter),用于对视频进行缩放。scale 参数的格式为 scale=w:h,其中 w 表示缩放后的视频宽度,h 表示缩放后的视频高度。

scale 参数有以下三种常用的用法:

  1. 固定宽度或高度,等比例缩放:

    • scale=-1:720 :将视频的宽度等比例缩放,使得高度为 720 像素。
    • scale=1280:-1:将视频的高度等比例缩放,使得宽度为 1280 像素。
  2. 指定宽度和高度,非等比例缩放:

    • scale=640:480:将视频缩放为宽度为 640 像素,高度为 480 像素的大小。
  3. 指定宽度和高度,等比例缩放并填充黑边:

    • scale=1280:720:force_original_aspect_ratio=decrease,pad=1280:720:(ow-iw)/2:(oh-ih)/2
    • 将视频缩放为宽度为 1280 像素,高度为 720 像素的大小,并在视频周围填充黑边。这种方式可以保持视频的宽高比不变。

🌰例子

1.将视频宽度等比例缩放为 640 像素:

 ffmpeg -i input.mp4 -vf scale=640:-1 output.mp4

2.将视频高度等比例缩放为 480 像素:

ffmpeg -i input.mp4 -vf scale=-1:480 output.mp4
  1. 将视频缩放为宽度为 1280 像素,高度为 720 像素的大小,同时在视频周围填充黑边:
ffmpeg -i input.mp4 -vf "scale=1280:720:force_original_aspect_ratio=decrease,
pad=1280:720:(ow-iw)/2:(oh-ih)/2" output.mp4
  • NOTE: 在使用 scale 命令时,如果指定的宽度和高度比例与原始视频的宽高比例不同,那么视频的形状可能会发生变化。
    • 为了避免这种情况,可以使用 force_original_aspect_ratio=decrease 参数,让 FFmpeg 在缩放视频时保持原始宽高比例。
    • 同时,为了让视频在缩放后仍然填满整个画面,可以使用 pad 参数,在视频周围填充黑边。
  1. 将视频缩放为宽度为 640 像素,高度为 480 像素的大小,同时在视频周围填充黑边:
ffmpeg -i input.mp4 -vf "scale=w=640:h=480:force_original_aspect_ratio=decrease,pad=640:480:(ow-iw)/2:(oh-ih)/2" output.mp4

其他用于对视频进行缩放和裁剪的命令

  • crop
  • zoompan

命令温故

  • ffmpeg -y -c:v libx264 -c:a aac -vf scale= -1:1080 *- ffmpeg:FFmpeg 工具的命令名。
  • -y:覆盖输出文件而不询问。
  • -c:v libx264:使用 libx264 编码器对视频进行编码。
  • -c:a aac:使用 AAC 编码器对音频进行编码。
  • -vf scale=:使用视频滤镜对视频进行缩放。
  • 12:缩放后的视频宽度,高度为1080。