wie kann man zwei Videos nebeneinander zu einem zusammenfügen, wenn sie unterschiedliche Auflösungen haben?

wie kann man zwei Videos nebeneinander zu einem zusammenfügen, wenn sie unterschiedliche Auflösungen haben?

Ich habe zwei Videos

  1. deskshare.webm 1280x720 ohne Audio
  2. webcams.webm 640x480 mit Audio

Die unten beschriebenen Befehle funktionieren nach Bedarf

ffmpeg -i deskshare.webm -i webcams.webm -filter_complex 
"[0:v]pad=(iw+640):ih[bg]; [bg][1:v]overlay=w+640" out.mp4

ffmpeg -i deskshare.webm -i webcams.webm -filter_complex 
"[0:v]pad=(iw+640):ih[bg]; [bg][1:v]overlay=main_w-overlay_w" out.mp4

Gibt es eine Syntax, mit der ich die manuelle Eingabe der Auflösung des zweiten Videos (in meinem Fall 640 Pixel) umgehen kann?

Ist es möglich, etwas wie [1:v]width zu verwenden, um diesen Wert automatisch zu erhalten?

Bei mir funktioniert das auch prima

ffmpeg -i deskshare.webm -i webcams.webm -filter_complex "[0:v]pad=(iw+iw/2):ih[bg]; [bg][1:v]overlay=main_w-overlay_w" out.mp4

Dies funktioniert jedoch nur, wenn die Breite des ersten Videos doppelt so groß ist wie die Breite des zweiten Videos.

Antwort1

Dies kann auch auf Umwegen geschehen.

Verwenden

ffmpeg -i deskshare.webm -i webcams.webm -filter_complex 
   "[1:v][0:v]scale2ref=main_w:ih[sec][pri];
   [sec]setsar=1,drawbox=c=black:t=fill[sec];[pri][sec]hstack[canvas];
   [canvas][1:v]overlay=main_w-overlay_w" out.mp4

Scale2ref skaliert eine Kopie des sekundären Videos auf die Höhe des Hauptvideos, wobei die ursprüngliche Breite erhalten bleibt. Anschließend wird es mit Schwarz gefüllt und rechts neben dem Hauptvideo gestapelt.

Eine zweite Kopie des sekundären Videos wird dann auf die erweiterte Leinwand gelegt.

Sie benötigen ffmpeg 4.0 oder neuer.

verwandte Informationen