74 votes

Comment fusionner plusieurs vidéos (plus de deux) sur Ubuntu ?

Je veux fusionner des vidéos par lots de vingt (20) chacune. Je utilise un ordinateur Linux. Les vidéos sont au format mp4 et de qualité moyenne. Certains ont même le flux audio manquant. J'ai essayé jusqu'à présent ffmpeg, mencoder, cvlc/vlc et MP4Box. Je veux écrire un script en ligne de commande pour y parvenir, car je fais du traitement par lots.

Le problème principal est que certaines des solutions que j'ai essayées fonctionnent bien pour deux vidéos, certaines fonctionnent bien pour des vidéos avec un flux audio et d'autres fonctionnent bien pour une autre sous-ensemble de mon ensemble de vidéos. Cependant, je n'ai pas réussi à trouver une solution globale pour cette tâche.

71voto

Wes Grant Points 979

Je suis en train d'utiliser mkvmerge pour joindre plusieurs fichiers MP4 en un seul :

mkvmerge -o outfile.mkv infile_01.mp4 \+ infile_02.mp4 \+ infile_03.mp4

44voto

Maythux Points 77506

Vous pouvez le faire en utilisant ffmpeg :

ffmpeg -i concat:"input1.mp4|input2.mp4" output.mp4

référence et plus d'informations

29voto

ShaDeRzz Points 391

Créez un fichier files.txt avec tous les fichiers que vous voulez avoir concaténés dans la forme suivante (les lignes commençant par un # sont ignorées):

# ceci est un commentaire
fichier 'file1.mp4'
fichier '/chemin/vers/file2.mp4'
fichier 'file3.mp4'

Notez que ces chemins peuvent être relatifs ou absolus. Ensuite, vous pouvez copier en flux ou réencoder vos fichiers:

ffmpeg -f concat -safe 0 -i files.txt -c copy output.mp4

11voto

Dhruv Singal Points 951

Cela a résolu le problème : https://stackoverflow.com/a/22324018/5014767

melt est un excellent utilitaire en ligne de commande pour cela. Ici se trouve la page

Édition des commentaires : La commande qui a résolu mon problème était la suivante : melt {input-sequence} -consumer avformat:{output-name} acodec=libmp3lame vcodec=libx264

6voto

davidsheldon Points 2287

J'ai écrit un petit script shell pour concaténer des MP4 sans transcodage en utilisant ffmpeg.

for f in $(ls *.MP4); do
    ffmpeg -i $f -c copy -bsf:v h264_mp4toannexb -f mpegts $f.ts
done

CONCAT=$(echo $(ls *.ts) | sed -e "s/ /|/g")

ffmpeg -i "concat:$CONCAT" -c copy -bsf:a aac_adtstoasc output.mp4

rm *.ts

Cela crée des fichiers intermédiaires dans un conteneur MPEG puis les concatenate en un MP4.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X