"Höhe nicht teilbar durch 2" mit "min"

1719
Steven Penny

Verwenden Sie diesen Befehl:

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

Ich erhalte diese Nachricht:

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

Ich kann den Fehler so vermeiden:

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

Dies ist jedoch nicht ideal, da das Bild dadurch vergrößert wird. Wie kann ich das Bild nur skalieren, wenn die Höhe größer als 1080 ist, während das Pixelformat unverändert bleibt?

2

2 Antworten auf die Frage

2
Steven Penny

Folgendes habe ich mir ausgedacht:

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

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

Oder:

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

Oder:

-vf 'scale=-2:min(1080\,ih-mod(ih\,2))' 
Das hat bei mir nicht funktioniert. Zum Beispiel: ffmpeg -r 30 -f image2 -i fft_% 05d.png -vcodec libx264 -crf 25 -pix_fmt yuv420p fft_.mp4 -vf 'scale = -2: min (1080 \, trunc (ih / 2) * 2 ) 'gibt immer noch "Breite nicht teilbar durch 2 (2265x2209)" an. Galen vor 5 Jahren 0
0
MarianD

Anstatt

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

benutzen

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

Es wird geprüft, ob ihes teilbar ist 2, und wenn nicht, wird es durch verringert 1.