Aqui está o que eu criei:
-vf 'scale=-2:min(1080\,trunc(ih/2)*2)'
Ou:
-vf 'scale=-2:min(1080\,bitand(ih\,-2))'
Ou:
-vf 'scale=-2:min(1080\,ih-mod(ih\,2))'
Usando este comando:
ffmpeg -loop 1 -r 1 -i q.jpg -t 5 -pix_fmt yuv420p -vf 'scale=-2:min(1080\,ih)' z.mp4
Eu recebo esta mensagem:
[libx264 @ 00000000004d0ec0] height not divisible by 2 (954x953)
Eu posso evitar o erro assim:
ffmpeg -loop 1 -r 1 -i q.jpg -t 5 -pix_fmt yuv420p -vf scale=-2:1080 z.mp4
No entanto, isso não é ideal porque está aprimorando a imagem. Como posso dimensionar imagem apenas se a altura for maior que 1080, mantendo o formato de pixel Eu tenho isso?
Em vez de
'scale=-2:min(1080\,ih)'
use
'scale=-2:min(1080\,if(mod(ih\,2)\,ih-1\,ih))'
Ele verificará se ih
é divisível por 2
e, caso contrário, diminuirá em 1
.