56 votes

Comment fusionner deux fichiers mp4 sans perte de qualité ?

J'ai deux fichiers mp4 de haute qualité, qui correspondent à deux parties de la même émission.

Je veux les fusionner en un seul fichier, et j'utilise habituellement VirtualDub pour fusionner mes fichiers... Mais il ne semble pas supporter le mp4.

Quelles sont les alternatives disponibles (en particulier celles qui ne nécessitent pas de ré-encodage) ?

0 votes

49voto

bobince Points 9446

J'utilise habituellement VirtualDub pour fusionner mes fichiers, mais il ne semble pas supporter le mp4. Alors quelles sont les alternatives ?

Avidemux . C'est comme VirtualDub, mais avec plus de formats supportés et des codecs et filtres intégrés. Je l'utilise toujours de préférence ; il joint les fichiers AVC+AAC.MP4 (sans recodage) très bien pour moi.

Pour les rejoindre dans AviDemux :

  1. Fichier -> Ouvrir -> Sélectionner un fichier
  2. Fichier -> Ajouter -> Sélectionner le fichier
  3. Tout mettre sur Copie
  4. Fichier -> Enregistrer -> Nom du fichier
  5. Attendez

Selon les forums d'AViDemux, ce processus d'assemblage est sans perte ( http://www.avidemux.org/smf/index.php?topic=9467.0 )

0 votes

Oui, il semble excellent pour garder l'audio en synchronisation avec la vidéo alors que les réponses des autres personnes à cette question sont discutables sur ce point, IMHO.

1 votes

J'ai essayé d'utiliser Avidemux pour joindre deux fichiers ensemble mais l'audio est devenu désynchronisé.

0 votes

Vous pouvez rencontrer des problèmes de synchronisation lorsque la quantité de matériel audio disponible ne correspond pas à la longueur des images vidéo, ou lorsqu'il y a une corruption du flux. Vous pourrez peut-être résoudre ce problème avec les fonctions de correction de flux de VideoRedo ou ProjectX.

30voto

evilsoup Points 12077

Vous pouvez le faire avec ffmpeg :

mkfifo temp0 temp1
ffmpeg -i input0.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -y temp0 2> /dev/null & \
ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb -f mpegts -y temp1 2> /dev/null & \
ffmpeg -f mpegts -i "concat:temp0|temp1" -c copy -absf aac_adtstoasc output.mp4

Cela ne ré-encode rien, cela les place dans un nouveau conteneur de flux de transport, ce qui les rend plus faciles à concaténer, puis les concatène à nouveau dans un MP4. Si output.mp4 existe déjà, la commande échouera. La version ci-dessus utilise des tubes nommés, si vous êtes sur un système qui ne les supporte pas, vous devrez utiliser des fichiers intermédiaires (comme Windows) :

ffmpeg -i input0.mp4 -c copy -bsf:v h264_mp4toannexb temp0.ts
ffmpeg -i input1.mp4 -c copy -bsf:v h264_mp4toannexb temp1.ts
ffmpeg -i "concat:temp0.ts|temp1.ts" -c copy -bsf:a aac_adtstoasc output.mp4

0 votes

Quelqu'un peut-il expliquer comment cela se fait avec avconv au lieu de ffmpeg ? J'ai pu réaliser les deux premières étapes, mais la dernière ne reconnaît pas l'option -absf

0 votes

@becko Voir mon édition. Maintenant vous devriez utiliser un spécificateur de flux (voir ici libav.org/avconv.html#Options avancées ).

2 votes

+1 juste pour référence future, vous pouvez substituer avconv para ffmpeg dans les commandes ci-dessus et cela fonctionnera.

18voto

erik Points 1818

Démultiplicateur de concat

Le démuxer concat a été ajouté à ffmpeg 1.1. Si votre version de ffmpeg est trop ancienne, obtenir le plus récent binaire statique d'ici : http://www.ffmpeg.org/download.html

Instructions

Créer un fichier mylist.txt avec tous les fichiers que vous voulez concaténer sous la forme suivante (les lignes commençant par un tiret sont ignorées) :

# this is a comment
file '/path/to/file1'
file '/path/to/file2'
file '/path/to/file3'

Notez qu'il peut s'agir de chemins relatifs ou absolus. Ensuite, vous pouvez encoder vos fichiers avec :

ffmpeg -f concat -i mylist.txt -c copy output

Il est possible de générer ce fichier liste avec un bash boucle for, ou en utilisant printf. L'une ou l'autre des méthodes suivantes génère un fichier liste contenant tous les *.wav du répertoire de travail :

for f in ./*.wav; do echo "file '$f'" >> mylist.txt; done
printf "file '%s'\n" ./*.wav > mylist.txt

Source : wiki de ffmpeg

8voto

Eran Points 3311

YAMB ainsi que MP4BOX est une bonne option.
Téléchargez les deux et décompressez-les (aucune installation nécessaire et ensemble ils font environ 5MB), dans YAMB choisissez Paramètres et définissez le chemin du dossier de MP4box.
Pour joindre des fichiers mp4, choisissez Édition > Cliquer pour joindre pris en charge...

1 votes

Cela semble être la meilleure solution, en conservant le format de conteneur .mp4 qui semble être l'option la plus intéressante pour l'auteur ^^.

1 votes

Après difficulté, j'ai utilisé cette configuration : MP4Box_path= E:\Software\Video Modification de \Yamb -2.1.0.0_beta2 \MP4Box\MP4Box.exe dans une tentative de fusionner 4 fichiers MP4 de 500MB générés par AVIDemux . Cela n'a pas fonctionné. Le programme est resté là pendant 45 minutes sans rien faire jusqu'à ce que j'abandonne.

1 votes

J'ai eu du mal à utiliser cette méthode à cause de problèmes de synchronisation audio. c'était un cauchemar... je ne l'essaierai plus.

7voto

Breakthrough Points 33693

Essayez d'utiliser le conteneur vidéo Matroska.

Tout d'abord, vous devez mkvtoolnix . Téléchargez-le et installez-le, puis vous devez lancer l'interface graphique de mkvmerge (à moins que vous n'aimiez les outils en ligne de commande, ce qui me convient parfaitement - bien que vous puissiez vouloir jeter un coup d'oeil à la section sur la liaison des fichiers de la documentation de mkvmerge ).

Ajoutez votre premier fichier en cliquant sur "add". Ensuite, cliquez sur "append", et ouvrez votre deuxième fichier. Définissez le fichier de sortie, cliquez sur "Start muxing" en bas, et c'est parti !

enter image description here

Si le conteneur ne convient pas à vos besoins, vous pouvez le réencoder, ou essayer de le convertir dans un autre format... Bien que MKV soit un très beau conteneur !

0 votes

Il doit être muxé ? je ne peux pas être joint sans muxé ?

0 votes

Eh bien, si vous utilisez un conteneur MKV, techniquement, vous sont le remuxing. Essayez-le, il n'y a pas de pénalité de temps réel...

0 votes

Ça marche vraiment, je viens de l'essayer. J'avais l'impression qu'il ne pouvait fonctionner qu'avec les .mkv, mais ce n'est que le nom en fin de compte, c'est une très bonne solution.

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