Unisci due videoclip in uno, posizionandoli uno accanto all'altro


38

Ho due videoclip. Entrambi sono 640x480 e ultimi 10 minuti. Uno contiene audio di sottofondo, l'altro un attore che canta. Vorrei creare un singolo videoclip di 10 minuti che misura 1280x480 (in altre parole, voglio posizionare i video uno accanto all'altro e riprodurli contemporaneamente, mescolando l'audio di entrambi i clip). Ho provato a cercare di capire come farlo con ffmpeg / avidemux, ma finora sono rimasto vuoto. Si riferiscono tutti al concatenamento quando cerco l'unione.

Qualche consiglio?

Risposte:


45
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

Questo essenzialmente raddoppia la dimensione di input1.mp4 riempiendo il lato destro con il nero della stessa dimensione del video originale, quindi posiziona input2.mp4 sopra la parte superiore di quell'area nera con il filtro overlay.

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


Cosa fa -map [vid]?
0xcaff,

@caffinatedmonkey [vid]è un cosiddetto linklabel , che è un'etichetta di collegamento di output definita nel grafico del filtro (la riga sopra con filter_complex). Mappa l'output dal grafico del filtro complesso al file di output.
gennaio

Sto ottenendo Unrecognized option 'crf'. Errore durante la divisione dell'elenco degli argomenti: opzione non trovata. Se rimuovo crquindiunrecognized option 'preset'
RS

Ottenereno such filter
user1767754 il

25

Ad essere sincero, l'uso della risposta accettata ha provocato molti frame persi per me.

Tuttavia, l'utilizzo di hstackfilter_complex ha prodotto un'uscita perfettamente fluida:

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

22

Questo può essere fatto con solo due filtri e verrà incluso anche l'audio da entrambi gli ingressi.

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 posizionerà ogni video fianco a fianco.
  • amerge combinerà l'audio di entrambi gli ingressi in un singolo flusso audio multicanale e -ac 2lo renderà stereo; senza questa opzione il flusso audio potrebbe finire come 4 canali se entrambi gli ingressi sono stereo.

Ciao, posso sovrapporre un video a un altro video?
Nisarg,

@Nisarg Utilizza il filtro overlay .
llogan,

Voglio che il video superiore sia poco trasparente in modo da poter vedere cosa sta succedendo in background, mi puoi aiutare con quello?
Nisarg,

Ciao Sir, si può cura di guardare questo fuori.
Nisarg,

1
Ho perso l'audio con la risposta accettata. Questo funziona perfettamente.
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

Aggiungi due video fianco a fianco e aggiungi anche un'immagine sovrapposta che mostra sull'imbottitura dei video Puoi cambiare l'immagine di sfondo [BgPaddingImage.jpg]qui imposta il tuo percorso immagine bg.

Mostra questo sotto Il video viene creato dal comando Sopra

inserisci qui la descrizione dell'immagine


1
Che lingua è questa? Come lo esegui?
muru,

@muru Dai un'occhiata ora al suo comando FFMPEG ?? :)
Sanjay Hadiya
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.