在webm转mp4时遇到该错误,原因是要转换的(转换后的?)视频的长宽尺寸中有奇数,比如我遇到的567*240。原始命令:
ffmpeg -i 1.webm -c:v libx264 ~/1.mp4
解决方案:
在libx264后面加上参数,这会让长宽都变为偶数:
-vf "pad=ceil(iw/2)*2:ceil(ih/2)*2"
加完后的完整命令:
ffmpeg -i 1.webm -c:v libx264 -vf "pad=ceil(iw/2)*2:ceil(ih/2)*2" ~/1.mp4
另外,在使用ffmpeg缩放视频尺寸时也会遇到此错误。我的意图是把视频的高缩放到240,宽按比例变动,原始命令如下:
ffmpeg -i input.mp4 -vf "scale=-1:240" ~/output1.mp4
input的原尺寸是1280*720
, 目标尺寸427*240
,427是奇数,出现报错:width not divisible by 2 (427x240)
根据stackoverflow(这里)的解释,似乎是因为某个视频格式要求视频的宽高尺寸必须是偶数?(不太懂视频编码,不确定)
不过解决方案我也成功地摸索出来了,就是使用过滤器链,scale完后再padding,这样生成的新视频尺寸就是偶数了。
可用的命令如下:
ffmpeg -i input.mp4 -vf "scale=-1:240,pad=ceil(iw/2)*2:ceil(ih/2)*2" ~/output1.mp4
这里用了scale和pad两个filter,中间用逗号隔开即可。这是我第一次使用ffmpeg,关于ffmpeg的用法我参考了这篇文章 及 这篇文章。