¿Cómo puedo fusionar o concatenar dos o más archivos MP4 creando otro archivo MP4? [duplicar]


14

¿Cómo puedo concatenar o fusionar 2 o más archivos MP4, en un archivo MP4 de salida final también?

Intenté en la ventana de DOS usar el comando COPIAR (lo he leído en alguna parte) pero no funciona bien.


Consulte también superuser.com/questions/43588/… para obtener más información. Sin embargo, no estoy seguro de si clasificaría esta pregunta como un duplicado.
Avance el

1
agregue amablemente su sistema operativo como etiqueta.
tumchaaditya

Respuestas:


12

MP4Box puede hacer esto, aunque es posible que desee utilizar una GUI como YAMB o My MP4Box GUI . (Nota: no es mi programa personalmente, ese es solo el nombre). Los binarios MP4Box para Windows están disponibles en este sitio .

Ejemplo:

MP4Box -tmp $HOME -add vid.01.m4v \
    -cat vid.02.m4v -cat vid.03.m4v vid-out.mp4

4

Recomiendo usind ffmpeg , que está disponible para Mac OS X, Linux y Windows .

Aquí hay un buen ejemplo de cómo concatenar dos películas: http://www.ffmpeg.org/faq.html#SEC27

En el último paso, solo necesita asegurarse de hacer un contenedor MP4 para el archivo resultante.


Según tengo entendido la respuesta de ffmpeg FAQ dada, esto no se puede hacer con video MP4 (presumiblemente H.264), porque no es uno de los "formatos privilegiados".
ttarchala

@ ttarchala: Lo intentaría si se puede hacer. Me he convertido a MP4 con FFmpeg antes, pero nunca he concatenado dos películas. Además: me gustaría señalar que FFmpeg tiene un desarrollo muy rápido. Lo que no funcionó con una versión, podría funcionar solo en la siguiente.
polemon

1
No todas las compilaciones de FFMPEG tienen soporte para MP4. Por un lado, es una tecnología patentada y podría decirse que es ilegal distribuir codificadores MP4 en los Estados Unidos sin pagar una tarifa. Sin embargo, muchas compilaciones pueden hacer esto.
CarlF

@CarlF: En cuanto a Linux y Mac OS X, este no es realmente un problema. El código se puede distribuir libremente, así que, básicamente, quien crea su propio FFmpeg, todo está bien. En cuanto a las patentes, me gustaría compartir un comentario: no encontraré el sitio disponible en este momento, pero la primera patente que caduca para AAC (que está parcialmente definida en MPEG-4), es en 2022. Y eso es sólo el primero, hay muchos más que necesidad de expirar hasta que es completamente legal ...
Polemon

4

Puedes intentar hacer esto con ffmpeg:

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

Esto no vuelve a codificar nada, los coloca en un nuevo contenedor de flujo de transporte, lo que los hace más fáciles de concatenar, y luego los concatena nuevamente en un MP4. Si output.mp4 ya existe, el comando fallará. La versión anterior usa canalizaciones con nombre, si está en un sistema que no admite aquellos que tendría que usar archivos intermedios:

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

¿Qué pasa si no es h264 sino mpeg4?
Edison

2

Actualización: Acabo de comprobar avidemux como lo tenía instalado, después de leer esa otra respuesta. Es lo que estás buscando (no pensé que puede hacer MP4 debido a su nombre ...).

Creo que VirtualDubMod es compatible con mp4, aunque no lo usé, así que no lo sé con seguridad.

Es posible que desee consultar MeGUI . Es una aplicación y herramientas bastante complejas y con muchas funciones.

La herramienta para incrustar en un contenedor (mp4 en su caso) se llama muxer, aunque probablemente no se puedan concatenar.

Puede usarlo en combinación con VirtualDub. Virtualdub para concatenar las transmisiones de video y el silenciador para convertirlo nuevamente en mp4 (sin tener que volver a codificar).


1

Lo estoy haciendo con mencoder, después de haberlos convertido a avi con ffmpeg

Aquí hay un script simple, suponiendo que tenga 15 archivos, llamados 01.mp4 ... 15.mp4

#!/bin/bash
for j in `seq -w 1 15`;
do
    echo converting file $j.avi
    ffmpeg -i $j.mp4 $j.avi        

    echo adding file $j.avi to list
    z="$z $j.avi"
done 

echo doing append
mencoder -oac copy -ovc copy $z -o all.avi

salud


1

Aquí está el comando:

ffmpeg -i concat:"video1.ts|video2.ts"

¿Se debe escapar ese carácter de tubería? ¿O estoy leyendo mal ese comando por completo?
Killermist

Necesitaba escapar. ¡Uy!
rogerdpack
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.