Führen Sie zwei Videoclips zu einem zusammen und platzieren Sie sie nebeneinander


38

Ich habe zwei Videoclips. Beide sind 640x480 und dauern 10 Minuten. Eines enthält Hintergrundmusik, das andere einen singenden Schauspieler. Ich möchte einen einzelnen 10-minütigen Videoclip mit einer Größe von 1280 x 480 erstellen (mit anderen Worten, ich möchte die Videos nebeneinander platzieren und sie gleichzeitig wiedergeben, wobei Audio aus beiden Clips gemischt wird). Ich habe versucht, herauszufinden, wie dies mit ffmpeg / avidemux gemacht werden kann, bin aber bisher leer ausgegangen. Sie beziehen sich alle auf Verkettung, wenn ich nach Zusammenführung suche.

Irgendwelche Empfehlungen?

Antworten:


44
ffmpeg \
  -i input1.mp4 \
  -i input2.mp4 \
  -filter_complex '[0:v]pad=iw*2:ih[int];[int][1:v]overlay=W/2:0[vid]' \
  -map [vid] \
  -c:v libx264 \
  -crf 23 \
  -preset veryfast \
  output.mp4

Dadurch wird die Größe von input1.mp4 im Wesentlichen verdoppelt, indem die rechte Seite mit Schwarz aufgefüllt wird, das der Größe des Originalvideos entspricht. Anschließend wird input2.mp4 mit dem Überlagerungsfilter über dem schwarzen Bereich platziert.

Quelle: https://superuser.com/questions/153160/join-videos-split-screen


Was macht -map [vid]das?
0xcaff

@caffinatedmonkey [vid]ist ein sogenanntes Linklabel , bei dem es sich um ein definiertes Output - Linklabel im Filterdiagramm handelt (die Zeile oben mit dem filter_complex). Es ordnet die Ausgabe des komplexen Filtergraphen der Ausgabedatei zu.
Jan

Ich bekomme Unrecognized option 'crf'. Fehler beim Aufteilen der Argumentliste: Option nicht gefunden. Wenn ich crdann entferneunrecognized option 'preset'
RS

Gettingno such filter
user1767754

25

Um ehrlich zu sein, hat die Verwendung der akzeptierten Antwort für mich zu einer Menge fehlender Frames geführt.

Mit dem hstackfilter_complex wurde jedoch eine perfekt flüssige Ausgabe erzielt:

ffmpeg -i left.mp4 -i right.mp4 -filter_complex hstack output.mp4

22

Dies kann mit nur zwei Filtern erfolgen und das Audio von beiden Eingängen wird ebenfalls einbezogen.

ffmpeg -i left.mp4 -i right.mp4 -filter_complex \
"[0:v][1:v]hstack=inputs=2[v]; \
 [0:a][1:a]amerge[a]" \
-map "[v]" -map "[a]" -ac 2 output.mp4
  • hstack platziert jedes Video nebeneinander.
  • amerge kombiniert die Audiodaten beider Eingänge zu einem einzigen Mehrkanal-Audiostream und -ac 2macht ihn stereo. Ohne diese Option kann der Audiostream als 4 Kanäle enden, wenn beide Eingänge Stereo sind.

Hallo, kann ich ein Video mit einem anderen Video überlagern?
Nisarg

@Nisarg Verwenden Sie den Überlagerungsfilter .
Logan

Ich möchte, dass das obere Video etwas transparent ist, damit man sieht, was im Hintergrund passiert. Kannst du mir dabei helfen?
Nisarg

Hallo Herr, können Sie sich darum kümmern, dies herauszufinden.
Nisarg

1
Ich habe den Ton mit der akzeptierten Antwort verloren. Dieser funktioniert perfekt.
Matt Hough

2
ffmpeg -y -ss 0 -t 5 -i inputVideo1.mp4 -ss 0 -t 5 -i inputVideo2.mp4 -i BgPaddingImage.jpg -filter_complex nullsrc=size=720*720[base];[base][2:v]overlay=1,format=yuv420p[base1];[0:v]setpts=PTS-STARTPTS,scale=345*700[upperleft];[1:v]setpts=PTS-STARTPTS,scale=345*700[upperright];[base1][upperleft]overlay=shortest=1:x=10:y=10[tmp1];[tmp1][upperright]overlay=shortest=1:x=366:y=10 -c:a copy -strict experimental -ss 0 -t 5 -preset ultrafast -an output.mp4

Fügen Sie zwei Videos nebeneinander hinzu und fügen Sie ein Überlagerungsbild hinzu, das auf Videos angezeigt [BgPaddingImage.jpg]wird.

Show This below Das Video wird mit dem Befehl "Von oben erstellen" erstellt

Bildbeschreibung hier eingeben


1
Welche Sprache ist das? Wie machst du das?
muru

@muru Check it out jetzt seinen FFMPEG-Befehl? :)
Sanjay Hadiya
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.