web-dev-qa-db-ja.com

「高さは2で割り切れない」と「最小」

このコマンドの使用:

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を超える場合にのみ、ピクセル形式を維持したまま画像を拡大縮小するにはどうすればよいですか?

2
Steven Penny

これが私が思いついたものです:

-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
Steven Penny

これが正確な答えであるかどうかはわかりませんが、私のグーグル検索がここに導きました。私は単にフレームサイズ(私の場合はダウンサンプリングしています)を見て、1796x1080のサイズを取り、1796を2(898)に分割し、それをサイズラインで使用しました:

-vf scale=898:-1

最終的にこのサイズになりました:898x540

0
wuxmedia

の代わりに

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

使用する

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

ih2で割り切れるかどうかをチェックし、そうでない場合は1で割り切れます。

0
MarianD