如何使用FFmpeg调整视频大小以使其更小


101

是否可以使用FFmpeg调整视频大小以使其更小?

我的原始视频尺寸为1024x576,现在我想将视频尺寸调整为720x480,以满足要求。

我怎样才能做到这一点?


ffmpeg可能已弃用,请在此处此处查看
含糊

13
@nuttyaboutnatty“已弃用的”消息仅适用ffmpeg于Libav分支中的旧的,已死的,伪造的“ ”,不适ffmpeg用于在15.04中返回的FFmpeg。
llogan 2015年

Answers:


163

最基本的示例是这样的:

ffmpeg -i input.avi -s 720x480 -c:a copy output.mkv

使用scale过滤器将提供更多的灵活性:

ffmpeg -i input.avi -filter:v scale=720:-1 -c:a copy output.mkv

-1会告诉ffmpeg的自动选择相对于正确的高度与宽度设置以保持高宽比。-1如果提供给定的高度,也可以用于宽度。


使用时,比例尺的一个缺点libx264是该编码器需要偶数值,而比例尺可能会自动选择一个奇数值,从而导致错误:width or height not divisible by 2。您可以告诉比例尺为给定高度选择一个均匀值(在此示例中为720):

scale="trunc(oh*a/2)*2:720"

...或给定的宽度(在此示例中为1280):

scale="1280:trunc(ow/a/2)*2"

请注意,您的ffmpeg版本可能会抱怨无法识别-c-filter选择。它也可能不支持scale。在这种情况下,您应该使用较新的ffmpeg,您可以将下载为静态版本,也可以自己编译


1
我尝试了ffmpeg -i output.mkv -filter:v scale=720:-1 -acodec copy -threads 12 output_shrink.mkv(在ffmpeg版本0.8.6-6:0.8.6-0ubuntu0.12.10.1中),但收到错误Unrecognized option 'filter:v'
doug65536 2013年

6
多次浏览ffmpeg的手册页后,我发现-filter:v该选项似乎已改为,而不是-vf
doug65536 2013年

2
@ doug65536 -filter:v-vf都好。您所使用的Ubuntu版本已损坏且已过时,实际上不是FFmpeg的版本ffmpeg,而是Libav(FFmpeg分支)以相同名称提供的二进制文件。
slhck

1
@MightyPork您的ffmpeg构建可能已过时-发生什么问题?无论如何,这确实帮助我(使用了ffmpeg version 2.4.10)减少了一些大型视频的大小以释放一些空间-谢谢!
Wilf

4
“ -c”是-codec的缩写,“:a”指定音频流,“ copy”指定复制编解码器,它将复制该流(在这种情况下为音频)而无需重新编码。基本上,音频流将通过。仅在处理视频流时,这很常见。
jimhark'2

14

我使用以下命令对视频和图像进行重新缩放。对于固定的宽度和高度-

ffmpeg -i input.avi -vf scale="720:480" output.avi

如果您想保留宽高比,则将高度设置为-1,它将根据宽度自动调整大小-

ffmpeg -i input.avi -vf scale="720:-1" output.avi

如果要基于输入大小进行缩放,例如。可以说将宽度/高度减少一半,您可以做到-

ffmpeg -i input.avi -vf scale="iw/1:ih/2" output.avi

注意 :

iw : input width
ih : input height

可以从-https://johnvansickle.com/ffmpeg/下载静态版本。

文档:https : //ffmpeg.org/ffmpeg.html#filter_005foption


不工作 卡在handler_name:声音处理
Rushi M Thakker

使用此命令,我的视频质量很差。如果我创建output.mp4而不是avi会更好。因此扩展很重要。
sekrett
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.