Unirse a H264 * sin * volver a codificar

39

Tengo dos mitades de un solo programa en dos archivos .MP4, codificados en H264. Me gustaría unirme a ellos sin volver a codificar.

es posible?

Logré crear un video unido como un archivo Quicktime (.mov) usando Quicktime Pro, pero luego Quicktime Pro no lo convertirá nuevamente a .MP4 sin volver a codificar. Esto puede deberse a que al mirar dentro del archivo .mov, los dos videos H264 todavía están separados como "objetos" individuales.

También estoy luchando con MPEG StreamClip sin llegar a una solución real. Pero puede que me haya perdido algo.

Tenga en cuenta que no tengo el mismo problema con los archivos MPEG2. Puedo exportarlos a un contenedor .MPEG o un archivo .TS, por ejemplo, y luego puedo unirlos sin volver a codificar usando MPEG Streamclip.

Cualquier sugerencia bienvenida, preferiblemente con el software de Mac.

jdmuys
fuente
1
Por supuesto, los videos deben tener los mismos aspectos para unirse sin volver a codificar (mismo tamaño, velocidad de bits, etc.). Debería poder hacerlo en VirtualDubMOD: abra el MP4, luego anexar segmento .
Synetech

Respuestas:

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

Cómo concatenar archivos flv en uno

Steven Penny
fuente
¿Qué pasa si es m4v (no h264 mp4), qué bsf se debe usar?
Edison
2
Lo dejé -bsf aac_adtstoascpara el comando concat
Csaba Toth
Necesitaba dejar de lado todos los -bsfargumentos, luego funcionó para mí.
KittMedia
Al hacer esto en MacOS 10.13.3, omití todo -bsf xxxcon buenos resultados. Sin embargo, la segunda vez que lo intenté, la segunda mitad de la película combinada estaba dañada. Resulta que, por razones desconocidas, Handbrake había codificado las dos mitades con diferentes anchos (640 vs. 636). Había usado el mismo valor predeterminado en ambos casos. De todos modos, volví y usé el freno de mano nuevamente en la primera mitad, que ahora coincidía con la segunda mitad. La película combinada estaba bien. Consejo: exiftool mostrará todo sobre un archivo mp4 / m4v.
Jamie Cox
15

MP4Box hará esto por usted:

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

MP4Box es multiplataforma y funciona en OSX, sin embargo, intenté esto en Ubuntu Linux con videos H264 creados por Handbrake para el iPhone 4S.

Esto funciona bastante rápido ya que los archivos no se vuelven a codificar.

thinkOfaNumber
fuente
1
Funciona genial. Use sudo apt-get install gpacpara instalarlo. Puede usar esta línea de comando si tiene muchos archivos para unirse:MP4Box $(for file in single*m4v; do echo -cat $file; done) joined.m4v
guettli
2

La opción de códec Quicktime MP4 tiene un modo de "paso a través".

Aquí hay una receta detallada para unir dos videos MP4 H264, usando Quicktime. Tenga en cuenta que Quicktime X aún no es lo suficientemente avanzado, así que use Quicktime 7 (una instalación opcional con Snow Leopard):

  1. Abra los dos videos H264 en Quicktime 7. Supongamos que se llaman video1.mp4 y video2.mp4.
  2. Trabajando en video1.mp4, Seleccionar todo, luego Copiar.
  3. Cambie a video2.mp4, asegúrese de que el "cursor" esté al comienzo del video, luego Pegue. Esto inserta el contenido de video1.mp4 en la parte frontal de video2.mp4.
  4. Este paso es probablemente opcional . "Guardar como" el video2.mp4 modificado. Solo podrá guardar en formato .mov. Lo guardé como una película independiente, pero supongo que una película de referencia también funcionaría. Usé el nombre de archivo "video.mov".
  5. Seleccione "Exportar" en el menú de archivo para exportar video.mov al archivo H264 unido. La "Exportar" para seleccionar es "Película a MPEG-4". El valor predeterminado no es importante, elegí "LAN / Intranet". El valor predeterminado no es importante porque lo anulamos en el siguiente paso.
  6. Haga clic en "Opciones" para acceder al cuadro de diálogo de configuración. En el panel de video, "Formato de video" está seleccionado para ser "H.264". Haga clic en el menú, seleccione "Pasar por". Como se esperaba, todas las demás opciones se deshabilitarán.
  7. Haga clic en Aceptar, luego en Guardar y observe cómo su archivo unido se guarda a la velocidad de su disco duro.

Alternativamente, podría usar SimpleMovieX , un editor de video shareware que anuncia exactamente esto como una característica.

jdmuys
fuente
1
Guardar en mov supongo que necesitará alguna forma de volver a codificar desafortunadamente.
Csaba Toth
0

Creo que esto debería ser posible, aunque es posible que las dos partes deban ser las "mismas" formas (resolución, etc.) para que la unión funcione. Esto suena como que probablemente será el caso con su situación.

Puede probar esta herramienta: http://www.smlabs.net/tsmuxer_en.html ... No la he usado, pero enumera específicamente la unión de archivos como parte de su conjunto de características y H.264 es una de las codificaciones compatibles.

Zac Thompson
fuente
Gracias por el enlace. No pude probarlo porque el sitio dice que este programa no es compatible con Snow Leopard. Además, acabo de encontrar una solución de trabajo usando Quicktime solamente (vea mi respuesta). Además, aunque no lo sé en este caso, algunas herramientas anuncian unir archivos de video pero lo hacen con una nueva codificación completa, lo que es, en el mejor de los casos, engañoso.
jdmuys
Mis disculpas; Leí mal ese bit en el sitio. Me alegra que hayas encontrado un enfoque más simple; parecía extraño que fuera necesario obtener una herramienta especial para esto.
Zac Thompson
0

Usa mkvtoolnix . Luego abra "mkvtoolnix-gui.exe" (en Windows 8.1 64 bits se encuentra en: C: \ Archivos de programa \ MKVToolNix \ mkvtoolnix-gui.exe). Agrega el primer archivo. Luego seleccione este primer archivo y haga clic con el botón derecho en "agregar archivos" y seleccione los archivos que desea fusionar. Tal vez cambie la carpeta de destino y el nombre de archivo. Luego, finalmente, haga clic en "iniciar multiplexación".

Erb
fuente