ffmpeg:width not divisible by 2 (847×480)

当使用ffmpeg处理视频文件时,报以上错误,按提示内容来看,意思是宽度必须是偶数。

原来的参数:-vf scale=-1:480

修改后的参数:-vf scale=-1:480,pad=ceil(iw/2)*2:ceil(ih/2)*2

这样就不报错了。

具体原因如下:

当你在使用-vf scale滤镜时,指定为-1:480意味着让FFmpeg自动计算宽度,保持原始宽高比的同时将高度设定为480像素。这种情况下,如果原始视频的比例与目标比例不匹配,且没有足够的“灵活性”来适应这个变化(比如高度固定而宽度未指定),就可能导致错误,尤其是当输出容器有严格的尺寸要求时。

加入pad参数后不报错的原因是,pad滤镜不仅能够调整视频尺寸,还能通过添加填充来确保最终输出满足指定的尺寸要求,即使原始内容经过缩放后不能完美适配。当你在scale之后使用pad,你实际上是先按比例缩放视频(可能只指定高度或宽度),然后通过pad来扩展视频画面到一个确切的尺寸,这包括在必要时添加背景色来填补因尺寸调整造成的空缺部分。

Was this helpful?

0 / 0

发表回复 0