Fusionner deux clips vidéo en un, les plaçant l'un à côté de l'autre

38

J'ai deux clips vidéo. Les deux sont en 640x480 et durent 10 minutes. L'un contient un fond sonore, l'autre un acteur chantant. Je souhaite créer un seul clip vidéo de 10 minutes de 1280x480 (en d'autres termes, je souhaite placer les vidéos les unes à côté des autres et les lire simultanément, en mélangeant l'audio des deux clips). J'ai essayé de comprendre comment faire cela avec ffmpeg / avidemux, mais jusqu'à présent, je suis resté vide. Ils font tous référence à la concaténation lorsque je recherche une fusion.

Des recommandations?

Rétablir Monica
la source

Réponses:

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

Cela double essentiellement la taille de input1.mp4 en remplissant le côté droit avec du noir de la même taille que la vidéo d'origine, puis place l'entrée input2.mp4 au-dessus de la zone noire avec le filtre de superposition.

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

Jan
la source
Que fait -map [vid]-il?
0xcaff
@caffinatedmonkey [vid]est un libellé appelé linklabel , qui est un libellé de lien de sortie défini dans le graphe de filtre (la ligne ci-dessus avec filter_complex). Il mappe la sortie du graphe de filtre complexe au fichier de sortie.
Jan
Je vais avoir Unrecognized option 'crf'. Erreur lors du fractionnement de la liste d'arguments: Option non trouvée. Si je retire cralorsunrecognized option 'preset'
RS
Obtenirno such filter
user1767754
25

Pour être honnête, utiliser la réponse acceptée a entraîné beaucoup de pertes d'images.

Cependant, l’utilisation de hstackfilter_complex produisait une sortie parfaitement fluide:

ffmpeg -i left.mp4 -i right.mp4 -filter_complex hstack output.mp4
Albus Dumbledore
la source
22

Cela peut être fait avec seulement deux filtres et l'audio des deux entrées sera également inclus.

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 placera chaque vidéo côte à côte.
  • amerge combinera l'audio des deux entrées en un seul flux audio multicanal et -ac 2le rendra stéréo; sans cette option, le flux audio peut se transformer en 4 canaux si les deux entrées sont stéréo.
llogan
la source
Bonjour, puis-je superposer une vidéo sur une autre?
Nisarg
@Nisarg Utilisez le filtre de superposition .
llogan
Je veux une petite vidéo supérieure transparente pour que nous puissions voir ce qui se passe en arrière-plan. Pouvez-vous m'aider avec ça?
Nisarg
Bonjour Monsieur, Pouvez-vous vous occuper de cela ?
Nisarg
1
J'ai perdu l'audio avec la réponse acceptée. Celui-ci fonctionne parfaitement.
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

Ajoutez deux vidéos côte à côte et ajoutez également une image de surimpression apparaissant sur les vidéos. Vous pouvez également modifier l'image d'arrière-plan en [BgPaddingImage.jpg]définissant le chemin de l'image bg.

Montrer cette vidéo ci-dessous sa commande create from Above

entrez la description de l'image ici

Sanjay Hadiya
la source
1
Quelle langue est-ce? Comment le dirigez-vous?
Muru
@muru Découvrez maintenant sa commande FFMPEG? :)
Sanjay Hadiya