このコマンドの使用:
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を超える場合にのみ、ピクセル形式を維持したまま画像を拡大縮小するにはどうすればよいですか?
これが私が思いついたものです:
-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))'
これが正確な答えであるかどうかはわかりませんが、私のグーグル検索がここに導きました。私は単にフレームサイズ(私の場合はダウンサンプリングしています)を見て、1796x1080のサイズを取り、1796を2(898)に分割し、それをサイズラインで使用しました:
-vf scale=898:-1
最終的にこのサイズになりました:898x540
の代わりに
'scale=-2:min(1080\,ih)'
使用する
'scale=-2:min(1080\,if(mod(ih\,2)\,ih-1\,ih))'
ih
が2
で割り切れるかどうかをチェックし、そうでない場合は1
で割り切れます。