ffmpeg: Combiner/fusionner plusieurs vidéos mp4 ne fonctionne pas, la sortie ne contient que la première vidéo
Voici la commande que j'utilise de combiner plusieurs vidéos:
ffmpeg -i 75_540_38HQ2.mp4 -je 76_70_20.mp4 -je 76_173_80.mp4 -je 81_186_35.mp4 -vcodec copy-acodec copy Mux1.mp4
L'résultant Mux1.mp4
ne contient pas toutes les vidéos. Seule la première vidéo (75_540_38HQ2.mp4
). La taille du fichier de la source et la vidéo est ci-dessous (comme vous pouvez le voir, la vidéo obtenue est légèrement plus grande que la première vid):
$ ls -lh -rw-r--r-- 1 dbaker dbaker 42M 2011-03-24 11:59 75_540_38HQ2.mp4 -rw-r--r-- 1 dbaker dbaker 236 2011-03-24 12:09 76_173_80.mp4 -rw-r--r-- 1 dbaker dbaker 26M 2011-03-24 12:05 76_70_20.mp4 -rw-r--r-- 1 dbaker dbaker 54M 2011-03-24 12:15 81_186_35.mp4 -rw-r--r-- 1 dbaker dbaker 44M 2011-03-24 14:48 Mux1.mp4
Voici la sortie de la ffmpeg
de commande. Pour moi, il semble ok, montrant les multiples sources d'entrée et de la sortie unique.
FFmpeg version SVN-r26402, le droit d'Auteur (c) 2000-2011 les développeurs de FFmpeg construit sur Mar 21 2011 18:05:32 avec gcc 4.4.5 configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libfaac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-x11grab libavutil 50.36. 0 /50.36. 0 libavcore de 0,16. 1 /0.16. 1 libavcodec 52.108. 0 /52.108. 0 démultiplexeur 52.93. 0 /52.93. 0 libavdevice 52. 2. 3 /52. 2. 3 libavfilter 1.74. 0 /1.74. 0 libswscale de 0,12. 0 /0.12. 0 libpostproc 51. 2. 0 /51. 2. 0 Entrée #0, mov,mp4,m4a,3gp,3g2,mj2, à partir de '75_540_38HQ2.mp4": Métadonnées: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 creation_time : 1970-01-01 00:00:00 encodeur : Lavf52.93.0 Durée: 00:00:29.99, start: 0.000000, bitrate: 11517 ko/s Stream #0.0(fra): Video: h264, yuv420p, 1280x960 [PAR 1:1 DAR 4:3], 11575 kb/s, 29.94 fps, 29.97 tbr, 30k tbn, 59.94 tbc Métadonnées: creation_time : 1970-01-01 00:00:00 Stream #0.1(fra): Audio: aac, 48000 Hz, stereo, s16, 127 ko/s Métadonnées: creation_time : 1970-01-01 00:00:00 Input #1, mov,mp4,m4a,3gp,3g2,mj2, à partir de '76_70_20.mp4": Métadonnées: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 creation_time : 1970-01-01 00:00:00 encodeur : Lavf52.93.0 Durée: 00:00:19.98, start: 0.000000, bitrate: 10901 ko/s Stream #1.0(fra): Video: h264, yuv420p, 1280x960 [PAR 1:1 DAR 4:3], 10804 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc Métadonnées: creation_time : 1970-01-01 00:00:00 Stream #1.1(fra): Audio: aac, 48000 Hz, stereo, s16, 128 kb/s Métadonnées: creation_time : 1970-01-01 00:00:00 Entrée n ° 2, mov,mp4,m4a,3gp,3g2,mj2, à partir de '76_173_80.mp4": Métadonnées: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 creation_time : 1970-01-01 00:00:00 encodeur : Lavf52.93.0 Durée: 00:03:09.99, start: 0.000000, bitrate: 10393 ko/s Stream #2.0(fra): Video: h264, yuv420p, 1280x960 [PAR 1:1 DAR 4:3], 10321 kb/s, 29.96 fps, 29.97 tbr, 30k tbn, 59.94 tbc Métadonnées: creation_time : 1970-01-01 00:00:00 Stream #2.1(fra): Audio: aac, 48000 Hz, stereo, s16, 128 kb/s Métadonnées: creation_time : 1970-01-01 00:00:00 Semble flux 0 codec fréquence d'image diffère de conteneur taux de rafraîchissement: 119.88 (120000/1001) -> 30000.00 (30000/1) Entrée n ° 3, mov,mp4,m4a,3gp,3g2,mj2, à partir de '81_186_35.mp4": Métadonnées: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 creation_time : 1970-01-01 00:00:00 encodeur : Lavf52.93.0 Durée: 00:00:35.00, start: 0.000000, bitrate: 12700 ko/s Stream #3.0(fr): Video: h264, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 12620 kb/s, 59.91 fps, 30k tbr, 60k tbn, 119.88 tbc Métadonnées: creation_time : 1970-01-01 00:00:00 Stream #3.1(fra): Audio: aac, 48000 Hz, stereo, s16, 128 kb/s Métadonnées: creation_time : 1970-01-01 00:00:00 Sortie de #0, mp4, 'Mux1.mp4": Métadonnées: major_brand : isom minor_version : 512 compatible_brands: isomiso2avc1mp41 creation_time : 1970-01-01 00:00:00 encodeur : Lavf52.93.0 Stream #0.0(fra): Vidéo: libx264, yuv420p, 1280x960 [PAR 1:1 DAR 4:3], q=2-31, 11575 kb/s, 30k tbn, 29.97 tbc Métadonnées: creation_time : 1970-01-01 00:00:00 Stream #0.1(fra): Audio: libfaac, 48000 Hz, stereo, 128 kb/s Métadonnées: creation_time : 1970-01-01 00:00:00 La cartographie de la chaîne: Stream #0.0 -> #0.0 Stream #2.1 -> #0.1 Appuyez sur la touche [q] pour arrêter l'encodage frame= 883 fps=632 q=-1.0 Lsize= 44730kB temps=29.40 bitrate=12465.1 kbits/s vidéo:41678kB audio:2969kB global des en-têtes:0kB multiplexage généraux 0.184548%
Suis-je en train de faire quelque chose d'absolument stupide ici?
La source de vidéos est venu à partir d'une caméra vidéo, et sont de petits extraits prises avec ffmpeg -i bigfile.mp4 -ss 20 -t 10 -vcodec copy etc..
Tas merci!!
Dave
Edit: impossible de résoudre donc je viens de l'utiliser avidemux outil graphique. Il semblait ajouter le MP4 est juste bien.
Doit être un problème avec MP4 ou tout simplement ceux qui proviennent d'une caméra gopro.
- Si j'ai essayer plusieurs combinaisons des vidéos j'obtiens le même résultat. par exemple: seulement Input0 et Input1. Il aboutit toujours à une sortie contenant la première vidéo.
- Voir aussi stackoverflow.com/questions/7333232/... et trac.ffmpeg.org/wiki/Concatenate
- Pas tous les fichiers de permettre à l'une des trois méthodes. Par exemple, vous ne pouvez pas utiliser concat comme un protocole avec les fichiers MP4. Utilisation concat comme un filtre pour éviter la ré-encodage: trac.ffmpeg.org/wiki/Concatenate
Vous devez vous connecter pour publier un commentaire.
Vous devez les convertir dans un format MPEG qui peut facilement être concaténées. Ci-dessous est un script que j'utilise et l'appeler "ffcat" pour ma GoPro vidéos. Essentiellement, il exécute plusieurs "ffmpeg -i" commandes qui produisent concaténer-mesure MPEG, qui est transmis à un ffmpeg commande puis les convertit en un H. 264 mp4 fichier.
Elle aussi tailles les vidéos en 720p, mais vous ne voulez pas que.
La "h264options" sont des drapeaux j'ai récemment trouvé sur internet à h264.code-shop.com
Espère que cette aide,
Reid
En supposant que vous voulez concaténer le film, vous pouvez utiliser la commande suivante:
Avec le texte suivant dans inputs.txt:
Note: certaines distributions (comme Ubuntu) n'ont pas de ffmpeg dans leur référentiel et au lieu de définir de ffmpeg pour être un alias de avconv. Cela ne fonctionnera pas avec avconv, donc, dans un tel cas, vous devez compiler ffmpeg vous-même. Vous pouvez vérifier si vous avez la vraie ffmpeg par l'exécution de ffmpeg et en vérifiant si la première sortie de la ligne se termine par "les développeurs de FFmpeg".
Oublier FFmpeg, utilisez MP4Box au lieu de cela, il est facile et rapide:
Il est disponible pour Windows, Linux et OS X:
http://www.videohelp.com/tools/mp4box
Si vous êtes sur Windows, vous pouvez utiliser YAMB qui est une interface graphique pour MP4Box qui fonctionne très bien:
http://www.videohelp.com/tools/YAMB
Mise à JOUR de Juin-2016:
FFmpeg a ajouté une concaténation de filtre, plus d'info ici:
https://stackoverflow.com/a/11175851/218418
mp4box
est super rapide et facile à utiliser!De l'ffmpeg homme page de la section "Exemples":
Vous pouvez mettre beaucoup de cours d'eau de même type de la sortie:
En plus du premier flux vidéo et audio, le
fichier de sortie test12.avi contiennent la deuxième vidéo, et la deuxième
flux audio trouve dans le flux d'entrée de la liste.
L' "-newvideo", "-newaudio" et "-newsubtitle" options doivent être spécifiés immédiatement après le nom du fichier de sortie dans lequel vous souhaitez les ajouter.
Si vous vouliez dire que vous voulez concaténer, le FAQ a des instructions.
Je ne sais pas si cette question/réponse appartient à SuperUser.
Simple concat œuvres pour mp4 et mkv fichiers si tous les commentaires, les vidéos ont le même codec et vous voulez la vidéo de sortie aussi dans le même codec.
https://trac.ffmpeg.org/wiki/Concatenate
vous avez besoin de créer un fichier texte comme
Et ensuite utiliser la commande
J'ai utilisé l'exemple à partir de la même page de référence, cela fonctionne assez bien. Le seul problème vient quand la vidéo n'est pas correctement capturé. Il peut créer des problèmes de synchronisation audio-vidéo, car il copie tout simplement le PTS et DTS informations provenant de la source de vidéos à la vidéo de destination.
Pour obtenir une solution à toute épreuve, vous devez lire les vidéo de paquet par paquet et
ensuite, mettre ensemble tous les paquets dans une vidéo personnalisée, des optimisations comme la chute de répéter PTS paquets et le maintien d'une fonction monotone PTS valeurs.
J'ai été en utilisant ce script avec un certain succès. Les résultats sont parfaits parce que c'est à l'aide de matières de la vidéo.
http://trac.ffmpeg.org/wiki/How%20to%20concatenate%20%28join,%20merge%29%20media%20files
Assurez-vous de modifier les OPTIONS SUPPLÉMENTAIRES de la chaîne.
Concat demuxer
La méthode concat demuxer a été ajouté à la version 1.1. Si votre version de ffmpeg est à l'ancienne, obtenir le nouveau binaire statique à partir d'ici: http://www.ffmpeg.org/download.html
Instructions
Créer un fichier
mylist.txt
avec tous les fichiers que vous voulez avoir concaténés dans le formulaire suivant (les Lignes commençant par un tiret sont ignorés):Noter que ceux-ci peuvent être soit des chemins relatifs ou absolus. Ensuite, vous pouvez encoder vos fichiers avec:
Il est possible de générer ce fichier de liste avec un bash pour la boucle, ou à l'aide de printf. Soit l'une des opérations suivantes pourraient générer un fichier de liste contenant tous les *.wav dans le répertoire de travail:
Source: ffmpeg wiki
MP4Box fonctionne sans rupture de l'audio. J'ai fait ce qui suit pour obtenir de bons résultats:
Télécharger la dernière Linux deb construire à partir de la gpac site web:
http://gpac.wp.mines-telecom.fr/downloads/gpac-nightly-builds/
Utiliser le
-force-cat
optionLigne de commande exemple:
Quelques petits commentaires:
La façon décrite ci-dessus est important, car la dernière version de MP4Box distribué avec Linux Mint 13 est buggé, et ne provoquer une altération audio.
-force-cat
est important, comme le format vidéo tag a été modifié à partir des AVC à avc3 sans elle.Vous pouvez éviter de créer explicitement un fichier de la liste et de faire le tout en une seule ligne
Reportez-vous à ffmpeg wiki.