2010-08-24 48 views
6

Tengo dos archivos de video MTS, cada uno de 2 minutos de duración. Necesito poder unir los archivos y convertir el formato a MPEG4. Tengo una línea de comando adecuada para convertir MTS a MP4 pero, en primer lugar, no sé cómo unir los archivos.Usando FFMPEG para unir dos archivos MTS juntos

Algunos artículos en la web sugieren utilizar el comando CAT, como:

cat video1.mts video2.mts > whole_video.mts 

Sin embargo esto no funciona y de acuerdo con FFMPEG, "whole_video.mts" está a sólo 2 minutos de duración, no es un 4 minutos.

¿Alguien sabe cómo unir los archivos? ¿Es FFMPEG el mejor programa para usar para hacer esto? Gracias por adelantado.

Respuesta

8

El siguiente funcionó a la perfección para mí (es decir, lo que resulta en fisuras une):

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

Simplemente añadiendo esto como novato: tuve que 'cd' en la carpeta de origen y ejecutar el comando desde allí (incluso copié las bineries de ffmpeg en la carpeta pero eso probablemente no sea necesario). Primero intenté 'cd' en ffmpeg folder run command y usar rutas absolutas para que los archivos se concatenan. Eso no funcionó. –

+0

funcionó bien para mí. ¿Hay alguna manera de lograr esto sin volver a codificar? Intenté con "output.MTS" pero todavía parecía querer ir paso a paso (aunque fue más rápido). – dgig

+2

Agrega '-codec copy' a la línea de comando. – TobiX

1

Está bien, lo he ordenado. Utilizando las últimas versiones SVN de FFMPEG, x264 y MP4Box (GPAC), esto es lo que hice ...

Uso FFMPEG para convertir los archivos MTS a MP4 de forma 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 

Uso MP4Box para unirse a la archivos MP4 juntos:

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

Esto se une a los archivos juntos en "output.mp4", sin embargo cuando utilizo "output.mp4 -i ffmpeg", indica la duración es más larga que la que debería ser. Para solucionar esto, tuve que volver a utilizar FFMPEG:

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

Y listo! Consultar el archivo "final.mp4" utilizando FFMPEG muestra la duración correcta y el video se reproduce bien.

Espero que esto ayude a cualquier persona que tenga el mismo problema.

+0

consigo este error, cuando intento el primer comando anterior: "Archivo de código predeterminado 'HQ' no encontrado" –

+0

Mira la documentación de ffmpeg. "hq" fue reemplazado hace un tiempo. – Reado

+1

Su primer paso vuelve a codificar los archivos y pierde calidad. – TobiX

3

Uso de obras de gato. Es solo que los reproductores de video serán engañados sobre la duración del video mientras leen el video completo resultante. Normalmente habrá un salto de marca de tiempo repentino donde el archivo se cortó previamente. Pero esto está bien. Puedes codificarlo y luego obtendrás un archivo correcto con la marca de tiempo.

La codificación con ffmpeg y luego unirse a MP4Box es una mala idea. Obtendrá imágenes desagradables con bloques faltantes en la posición de cruce si el segundo archivo no comienza con un fotograma clave (que sucede cuando ha sido cortado por una videocámara debido a la limitación del archivo de 2GB). Únete y codifica, no lo contrario.

Cuestiones relacionadas