2010-08-24 8 views
6

J'ai deux fichiers vidéo MTS, chacun d'une durée de 2 minutes. Je dois pouvoir joindre les fichiers ensemble et convertir le format en MPEG4. J'ai une ligne de commande appropriée pour convertir MTS en MP4 mais je ne sais pas comment joindre les fichiers ensemble en premier lieu.Utilisation de FFMPEG pour joindre deux fichiers MTS ensemble

Quelques articles sur le web suggèrent d'utiliser la commande CAT, comme:

cat video1.mts video2.mts > whole_video.mts 

Toutefois, cela ne fonctionne pas et selon FFMPEG, "whole_video.mts" est à seulement 2 minutes, pas 4 minutes.

Est-ce que quelqu'un sait comment joindre les fichiers ensemble? Est-ce que FFMPEG est le meilleur programme à utiliser pour cela? Merci d'avance.

Répondre

8

Ce qui suit a parfaitement fonctionné pour moi (ie résultat sans soudure joint):

ffmpeg -i "concat:00019.MTS|00020.MTS|00021.MTS|00022.MTS" output.mp4 
+0

Juste en ajoutant cela comme un novice: J'ai dû «cd» dans le dossier source et exécuter la commande à partir de là (j'ai même copié les bineries ffmpeg dans le dossier, mais ce n'est probablement pas nécessaire). D'abord j'ai essayé de 'cd' dans la commande d'exécution du dossier ffmpeg et d'utiliser des chemins absolus pour les fichiers à concaténer. Cela n'a pas fonctionné. –

+0

J'ai bien travaillé pour moi. Y a-t-il un moyen d'accomplir ceci sans ré-encoder? J'ai essayé "output.MTS" mais il a toujours semblé vouloir passer par image par trame (c'était plus rapide cependant). – dgig

+2

Ajoutez '-codec copy' à la ligne de commande. – TobiX

1

C'est bon, je l'ai trié. En utilisant les dernières versions SVN de FFMPEG, x264 et MP4Box (GPAC), voici ce que je l'ai fait ...

Utilisez ffmpeg pour convertir les fichiers MTS en MP4 comme normal:

ffmpeg -i video1.mts -vcodec libx264 -deinterlace -crf 25 -vpre hq -f mp4 -s hd480 -ab 128k -threads 0 -y 1.mp4 
ffmpeg -i video2.mts -vcodec libx264 -deinterlace -crf 25 -vpre hq -f mp4 -s hd480 -ab 128k -threads 0 -y 2.mp4 

Utilisez MP4Box pour rejoindre le MP4 fichiers ensemble:

MP4Box -cat 1.mp4 -cat 2.mp4 output.mp4 

Ce joint les fichiers ensemble dans « output.mp4 », mais quand je l'utilise « ffmpeg -i output.mp4 », il dit que la durée est plus longue qu'il devrait être. Pour résoudre ce problème, j'ai dû utiliser à nouveau FFMPEG:

ffmpeg -i output.mp4 -vcodec copy -y final.mp4 

Et voilà! L'interrogation du fichier "final.mp4" à l'aide de FFMPEG indique la durée correcte et la lecture de la vidéo est correcte.

Espérons que cela aide quelqu'un d'autre qui rencontre le même problème.

+0

Je reçois cette erreur, lorsque je tente la première commande ci-dessus: « Fichier pour le préréglage « hq » not found » –

+0

Regardez la documentation ffmpeg. "hq" a été remplacé il y a un moment. – Reado

+1

Votre première étape consiste à réencoder les fichiers et perd la qualité. – TobiX

3

Utilisation de travaux de chat. C'est juste que les lecteurs vidéo seront un peu dupés sur la longueur de la vidéo en lisant le result_video.mts résultant. Il y aura généralement un saut d'horodatage soudain où le fichier a été préalablement coupé. Mais ça va. Vous pouvez l'encoder et ensuite vous obtiendrez un bon fichier horodaté.

Encoder avec ffmpeg, puis rejoindre MP4Box est une mauvaise idée. Vous obtiendrez des images laides avec des blocs manquants à la position de passage si le second fichier ne démarre pas avec une image clé (ce qui se produit quand il a été coupé par un caméscope à cause de la limitation de 2 Go). Joignez-vous puis codez, pas le contraire.