“高度不能被 2 整除” 和 “min”

“高度不能被 2 整除” 和 “min”

使用此命令:

ffmpeg -loop 1 -r 1 -i q.jpg -t 5 -pix_fmt yuv420p -vf 'scale=-2:min(1080\,ih)' z.mp4

我收到此消息:

[libx264 @ 00000000004d0ec0] height not divisible by 2 (954x953)

我可以像这样避免错误:

ffmpeg -loop 1 -r 1 -i q.jpg -t 5 -pix_fmt yuv420p -vf scale=-2:1080 z.mp4

但这并不理想,因为它会放大图像。如何才能仅在高度大于 1080 时缩放图像,同时保持像素格式不变?

答案1

以下是我的想法:

-vf 'scale=-2:min(1080\,trunc(ih/2)*2)'

http://trac.ffmpeg.org/ticket/309

或者:

-vf 'scale=-2:min(1080\,bitand(ih\,-2))'

或者:

-vf 'scale=-2:min(1080\,ih-mod(ih\,2))'

答案2

代替

'scale=-2:min(1080\,ih)'

使用

'scale=-2:min(1080\,if(mod(ih\,2)\,ih-1\,ih))'

它将检查是否ih能被整除2,如果不能,则将其减少1

答案3

不确定这是否是确切的答案,但我的谷歌搜索找到了答案。我只是查看了帧大小(在我的情况下,我正在下采样),取大小:1796x1080,将 1796 除以 2(898),并将其用于尺寸行:

-vf scale=898:-1

最终尺寸为:898x540

相关内容