Rejoindre H264 * sans * réencodage


39

J'ai deux parties d'un spectacle dans deux fichiers .MP4, encodés en H264. Je voudrais les rejoindre sans ré-encodage.

Est-ce possible?

J'ai réussi à créer une vidéo jointe sous forme de fichier Quicktime (.mov) à l'aide de Quicktime Pro, mais Quicktime Pro ne la reconvertira pas en .MP4 sans réencodage. Cela peut être dû au fait que, dans le fichier .mov, les deux vidéos H264 y sont toujours séparées en tant qu’objets "individuels".

Je suis également aux prises avec MPEG StreamClip sans parvenir à une solution réelle. Mais j'ai peut-être manqué quelque chose.

Notez que je n'ai pas le même problème avec les fichiers MPEG2. Je peux les exporter vers un conteneur .MPEG ou un fichier .TS, par exemple, puis les joindre sans recoder à l'aide de MPEG Streamclip.

Toute suggestion est la bienvenue, de préférence avec le logiciel Mac.


1
Bien entendu, les vidéos doivent présenter les mêmes aspects pour pouvoir être reliées sans réencodage (taille identique, débit binaire, etc.). Vous devriez pouvoir le faire dans VirtualDubMOD: ouvrez le MP4, puis ajoutez un segment .
Synetech

Réponses:


41
ffmpeg -i q.mp4 -c copy -bsf h264_mp4toannexb q.ts

ffmpeg -i r.mp4 -c copy -bsf h264_mp4toannexb r.ts

ffmpeg -i "concat:q.ts|r.ts" -c copy -bsf aac_adtstoasc qr.mp4

Comment concaténer un fichier flv en un seul


Que se passe-t-il s'il s'agit de m4v (non-h264 mp4), quel bsf doit être utilisé?
Edison

2
Je suis parti -bsf aac_adtstoascpour la commande concat
Csaba Toth

J'avais besoin de laisser tous les -bsfarguments, alors cela a fonctionné pour moi.
KittMedia

En faisant cela sur MacOS 10.13.3, j’ai omis tout -bsf xxxce qui donne de bons résultats. Cependant, la deuxième fois que je l'ai essayé, la deuxième moitié du film combiné était corrompue. Il s'avère que, pour des raisons inconnues, Handbrake avait codé les deux moitiés avec des largeurs différentes (640 contre 636). J'avais utilisé le même préréglage dans les deux cas. Quoi qu'il en soit, je suis retourné et utilisé Handbrake à nouveau sur la 1ère mi-temps, qui correspond maintenant à la 2ème mi-temps. Le film re-combiné était d'accord. Astuce: exiftool affiche tout ce qui concerne un fichier mp4 / m4v.
Jamie Cox

15

MP4Box le fera pour vous:

MP4Box -cat File01.m4v -cat File02.m4v File-joined.m4v

MP4Box est multi-plateforme et fonctionne sur OSX. Cependant, j'ai essayé ceci sur Ubuntu Linux avec des vidéos H264 créées par Handbrake pour l'iPhone 4S.

Cela fonctionne assez rapidement car les fichiers ne sont pas ré-encodés.


1
Fonctionne très bien. Utilisez sudo apt-get install gpacpour l'installer. Vous pouvez utiliser cette ligne de commande si vous avez beaucoup de fichiers à joindre:MP4Box $(for file in single*m4v; do echo -cat $file; done) joined.m4v
guettli

2

Le choix du codec MP4 Quicktime a un mode "pass through".

Voici une recette complète et détaillée pour joindre deux vidéos MP4 H264 à l’aide de Quicktime. Notez que Quicktime X n’est pas encore assez avancé, utilisez donc Quicktime 7 (une installation optionnelle avec Snow Leopard):

  1. Ouvrez les deux vidéos H264 dans QuickTime 7. Supposons qu’elles s’appellent video1.mp4 et video2.mp4.
  2. Travailler sur video1.mp4, Sélectionner tout, puis Copier.
  3. Basculez sur video2.mp4, assurez-vous que le "curseur" est au début de la vidéo, puis Coller. Cela insère le contenu de video1.mp4 à l'avant de video2.mp4.
  4. Cette étape est probablement optionnelle . "Enregistrer sous" le video2.mp4 modifié. Vous pourrez enregistrer au format .mov uniquement. J'ai enregistré en tant que film autonome, mais je suppose qu'un film de référence fonctionnerait également. J'ai utilisé le nom de fichier "video.mov".
  5. Sélectionnez "Exporter" dans le menu Fichier pour exporter video.mov vers le fichier H264 joint. Le "Export" à sélectionner est "Movie to MPEG-4". Le préréglage n'est pas important, j'ai choisi "LAN / Intranet". Le préréglage n’est pas important car nous le remplaçons à l’étape suivante.
  6. Cliquez sur "Options" pour accéder à la boîte de dialogue de configuration. Dans le volet Vidéo, "Format vidéo" est "H.264". Cliquez sur le menu, sélectionnez "Pass Through". Comme prévu, toutes les autres options seront désactivées.
  7. Cliquez sur OK, puis sur Enregistrer et regardez votre fichier joint enregistré à la vitesse de votre disque dur.

Vous pouvez également utiliser SimpleMovieX , un éditeur de vidéo shareware qui en fait une publicité.


1
Je présume qu'il faudra malheureusement ré-encoder pour enregistrer en mov.
Csaba Toth

0

Je pense que cela devrait être possible, bien que les deux parties aient besoin d'être "identiques" de certaines manières (résolution, etc.) pour que la jointure fonctionne. Cela semble être le cas avec votre situation.

Vous pouvez essayer cet outil: http://www.smlabs.net/tsmuxer_en.html ... Je ne l'ai pas utilisé, mais il répertorie spécifiquement les fichiers joints dans le cadre de ses fonctionnalités et H.264 est l'un des encodages pris en charge.


Merci pour le lien. Je ne pouvais pas l'essayer car le site indique que ce programme ne prend pas en charge Snow Leopard. De plus, je viens de trouver une solution opérationnelle utilisant uniquement Quicktime (voir ma réponse). De plus, bien que je ne sache pas dans ce cas, certains outils proposent de joindre un fichier vidéo mais le font avec un réencodage complet, ce qui est au mieux trompeur.
jdmuys

Mes excuses; J'ai mal lu ce bit sur le site. Je suis content que vous ayez trouvé une approche plus simple - il semblait étrange qu’il faille obtenir un outil spécial pour cela.
Zac Thompson

0

Utilisez mkvtoolnix . Ensuite, ouvrez "mkvtoolnix-gui.exe" (sous Windows 8.1 64 bits, il se trouve dans l'emplacement suivant: C: \ Program Files \ MKVToolNix \ mkvtoolnix-gui.exe). Ajoutez le premier fichier. Sélectionnez ensuite ce premier fichier, cliquez avec le bouton droit de la souris sur "ajouter des fichiers", puis sélectionnez le ou les fichiers que vous souhaitez fusionner. Peut-être changer le dossier de destination et le nom du fichier. Enfin, cliquez sur "démarrer le multiplexage".

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.