Fusionner plusieurs pistes vidéo très rapidement et facilement avec ffmpeg
Aujourd'hui, je voulais fusionner deux pistes vidéo pour mes gameplays de Tomb Raider 1 Remastered. J'avais ces deux vidéos séparées parce que j'avais enregistré deux parties pour le même niveau, puisque je n'avais pas la possibilité de le terminer en une seule session.
J'ai rencontré ce besoin à plusieurs reprises, mais je ne l'ai jamais approfondi.
Après une recherche rapide, j'ai découvert la solution toute puissante : cette opération peut être réalisée très rapidement et très facilement avec ffmpeg concatenate.
Important: cette méthode permet de fusionner une vidéo après l'autre, sans l'éditer. Si vous avez besoin d'ajouter des transitions ou de faire d'autres choses, cela nécessite des logiciels d'édition vidéo comme Openshot, Premiere, Vegas, ou similaires.
Table des matières
Fusion de vidéos avec exactement les mêmes codecs
Dans la plupart des cas, vous aurez des vidéos enregistrées de la même manière et il vous suffira d'afficher une piste après l'autre.
Pour cela, vous pouvez suivre ces instructions simples :
- Créez un dossier sur votre PC avec toutes les pistes que vous souhaitez fusionner.
- Renommez les pistes en quelque chose de plus facile, comme "part1.mp4", "part2.mp4", etc.
- Créez un fichier texte dans ce dossier et nommez-le "list.txt" ou quelque chose de similaire.
- Dans le fichier texte, écrivez le chemin d'accès à chaque fichier sur des lignes séparées comme dans l'exemple de code ci-dessous
- Exécutez la commande ffmpeg dans votre terminal pour fusionner les vidéos, voir l'extrait de code ci-dessous
Le fichier texte contenant la liste peut ressembler à ce qui suit :
# list.txt # Voir : https://trac.ffmpeg.org/wiki/Concatenate#samecodec fichier 'part1.mkv' fichier 'part2.mkv'
Les deux premières lignes sont des "commentaires" et ne seront pas utilisées par ffmpeg, vous pouvez les supprimer si vous le souhaitez. Bien sûr, dans votre cas, vous pouvez avoir différents types de fichiers comme mp4, wav, mov, ou autres. Ceci est juste un exemple.
La commande ffmpeg à exécuter dans votre terminal peut être adaptée à vos besoins, voici un exemple :
ffmpeg -f concat -safe 0 -i list.txt -c copy merged_video.mkv
Cela créera un fichier "merged_video.mkv" dans votre dossier. Vous pouvez utiliser d'autres types de fichiers comme mp4, mov, wav, etc. De plus, vous pouvez utiliser des chemins absolus à la fois dans le fichier list.txt et dans la commande ffmpeg. L'attribut "-safe 0" peut être omis si vous utilisez des chemins relatifs.
Si vous le souhaitez, vous pouvez enregistrer la commande ffmpeg ci-dessus dans un fichier run.bat et l'exécuter ainsi, au lieu de devoir copier la commande à chaque fois dans le terminal.
Fusionner des vidéos avec des codecs différents
Cette opération est certainement plus complexe et plus susceptible de mal tourner, je vous invite donc à lire également la documentation de ffmpeg à ce sujet.
En résumé, nous devons exécuter une commande similaire à la suivante, en fonction de nos besoins :
ffmpeg -i input1.mp4 -i input2.webm -i input3.mov \N -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0][2:v:0][2:a:0]concat=n=3:v=1:a=1[outv][outa]" \N -map "[outv]" -map "[outa]" output.mkv
Dans ce cas, nous supposons que nous avons trois types de fichiers différents en entrée : mp4, webm et mov. WebM est généralement la version compressée d'un fichier vidéo, tandis que MOV provient généralement d'appareils Apple.
Le paramètre "filter_complex" indique à ffmpeg quels flux prendre dans les fichiers d'entrée et les envoyer au filtre concat.
Enfin, les paramètres "map" indiquent à ffmpeg d'utiliser les résultats du filtre concat plutôt que les flux provenant directement de l'entrée.
Conclusions
Dans mon cas, j'ai fusionné une piste d'une heure avec une autre de 23 minutes. Le poids des deux fichiers était de 4,77 Go. Le fichier de sortie résultant avait la même longueur et le même poids et l'opération n'a pris que deux minutes .
C'était étonnamment facile et rapide et cela m'aidera certainement beaucoup à l'avenir. Si cela vous a été utile, suivez-moi sur Facebook et Twitch, et abonnez-vous à ma chaîne Youtube. Partagez également un commentaire ci-dessous!