错误
执行 ffmpeg -loop 1 -r 1 -i q.jpg -t 5 -pix_fmt yuv420p -vf"
scale=-2:min(1080\,ih)" z.mp4报错
height not divisible by 2 (954x953)
解决办法:
-vf
"
scale=-2:min(1080\,bitand(ih\,-2))"
================================================================================================================================================================================
其他代码解决方式
如这种错误,就是说 宽度/高度不能被2除尽
其实解决方法也很简单,先看代码
//设置或保存ffmepg的参数
string ffmpegFormart = string.Empty;
if ( width > height && width > 960 )
{
//如果宽度比高度大且又大于960的情况下,以宽度为960来缩放
ffmpegFormart = string.Format (" -vf scale=960:{0}/({1}*1.00/960) " , height , width);
//下面这种方法可以解决一部分,但是遇到高度无法被2除尽的时候会报错误
//ffmpegFormart = $" -vf scale=960:-1 ";
}
else if ( width < height && height > 540 )
{
//如果高度比宽度大且又大于540,以高度540来缩放
ffmpegFormart = string.Format (" -vf scale={0}/({1}*1.00/540):540 " , width , height);
}
思路就是一个小学数学的思路
例如有一个视频分辨率为1280*720
如果我要将高度设为固定的540,那么,宽度就应该为 1280/(720/540) 约等于962的样子
当然,这样肯定会有一像素之内的差距,但也不会有什么影响
所以如果视频在处理的时候
宽度:width
高度:height
固高:XHeight
那么可以得出
动宽 ≈ +width/(height*1.00/XHeight)