2017-11-11 3 views
0

Ich habe ffmpeg Befehl, der Bildüberlagerung andere und Zoomen machen kann, aber Zoom-Effekt funktioniert nicht gut, es funktioniert nur innerhalb Overlay-Bildrahmen.Ffmpeg Video Slideshow mit Bildern Overlay anderen erstellen und Zoomen

ffmpeg -loop 1 -i pic001.jpg -i pic002.jpg -filter_complex "[0:v]scale=-1:720,zoompan=z='min(zoom+0.0015,1.5)':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d=125,trim=duration=5[scaled_video];[1:v]scale=1920:1080,boxblur=15[blur_image];[blur_image][scaled_video]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2[outv]" -c:v libx264 -aspect 1280/720 -map [outv] -t 10 -y fixed.mp4 

Kann mir jemand dabei helfen?

Antwort

0

Overlay-Filter unterstützen keine dynamische Größenanpassung, so dass Sie einen Hack benötigen, dies zu tun:

ffmpeg -i pic001.jpg -i pic002.jpg -filter_complex 
"[0:v]scale=-1:720,format=yuva422p,pad=1.5*iw:1.5*ih:(ow-iw)/2:(oh-ih)/2:[email protected], 
    zoompan=z='min(zoom+0.0015,1.5)':x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':d=125:s=WxH, 
    trim=duration=5[scaled_video]; 
    [1:v]scale=1920:1080,boxblur=15[blur_image]; 
    [blur_image][scaled_video]overlay=(main_w-overlay_w)/2:(main_h-overlay_h)/2[outv]" 
-c:v libx264 -aspect 1280/720 -map [outv] -t 10 -y fixed.mp4 

Der Trick ist, einen Alphakanal hinzufügen und dann Pad das Bild mit transparentem Schwarz. Bei Überlagerung verschwindet das schwarze Padding aufgrund des Alphas.

Im Zoombereich müssen Sie W und H manuell durch die Breite & Höhe des gepolsterten Bildes ersetzen. In diesem Fall ist es 1,5 x Breite und 1,5 x Höhe des Bildes nach der anfänglichen Skalierung. Ich habe 1,5 als Multiplikator gewählt, da dies die maximale Zoomstufe in der Zoomspanne ist.

+0

Es funktioniert. Vielen Dank. Wie kann ich Pad kleiner machen. Ich möchte das Bild vergrößern, bis es den oberen Rand des Hintergrunds erreicht. –

+0

Erhöhen Sie den maximalen Zoom und den Pad-Multiplikator. – Mulvya

Verwandte Themen