Ich möchte aus einem Bild ein 5 Sekunden langes MP4-Video erstellen.
Wenn ich den untenstehenden Code verwende, läuft das Video flüssig. Die Standardrichtung ist das Heranzoomen nach oben links.
ffmpeg -loop 1 -i prop1.jpeg -vf "zoompan=z='min(zoom+0.0015,1.5)':d=125" -c:v libx264 -t 5 -s "800x450" fade.mp4
Um nach oben rechts zu zoomen, habe ich herausgefunden, dass ich den folgenden Code verwenden kann
ffmpeg -loop 1 -i prop1.jpeg -vf "zoompan=z='min(zoom+0.0015,1.5)':x='if(gte(zoom,1.5),x,x+1)':y='y':d=125" -c:v libx264 -t 5 -s "800x450" fade.mp4
Der Zoom erfolgt in die richtige Richtung, aber das Video ruckelt.
Beim Konvertieren trat außerdem ein Fehler auf:
[swscaler @ 0x429bda0] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 0x429bac0] deprecated pixel format used, make sure you did set range correctly
[swscaler @ 0x429bac0] Warning: data is not aligned! This can lead to a speedloss
[swscaler @ 0x429bac0] deprecated pixel format used, make sure you did set range correctly
Last message repeated 97 times
[output stream 0:0 @ 0x37af200] 100 buffers queued in output stream 0:0, something may be wrong.
[swscaler @ 0x429bac0] deprecated pixel format used, make sure you did set range correctly
Last message repeated 24 times
[swscaler @ 0x42b7040] deprecated pixel format used, make sure you did set range correctly
Last message repeated 1 times
Was ist falsch am Code?
Antwort1
Verwenden Sie Upscale vor dem Zoomen:
ffmpeg -loop 1 -i prop1.jpeg -vf "scale=8000:-1,zoompan=z='min(zoom+0.0015,1.5)':x='if(gte(zoom,1.5),x,x+1)':y='y':d=125" -c:v libx264 -t 5 -s "800x450" fade.mp4
Wie oben in den Kommentaren: das scheint ein ffmpeg-Fehler zu sein:https://trac.ffmpeg.org/ticket/4298
Habe diesen Workaround hier gefunden:ffmpeg: sanftes Zoomen ohne Wackeln