16 votos

Herramienta de terminal para unir videos mp4

Me gustaría unir videos mp4 como uno pdfs con pdfjoin.

¿Hay alguna herramienta predeterminada para unir videos?

19voto

CousinCocaine Puntos 3615

Sí, puedes unir varios videos en un solo archivo usando los comandos predeterminados del terminal. Usar un simple cat hará lo que deseas.

cat video1.avi video2.avi videon.avi > output.avi

Aquí hay un gran pero: este método colocará el encabezado del video1.avi en el output.avi. Por lo tanto, el encabezado del output.avi es el mismo que el de video1.avi, por lo que en la mayoría de los reproductores de video, parecerá que se pierden video2.avi y videon.avi - fuente 1, fuente 2.

Para solucionar esto, necesitas herramientas adicionales. Hay muchas otras herramientas de terminal para unir películas que actualizan el encabezado también. Las herramientas de edición de video más conocidas son mencoder (que es parte de MPlayer) y ffmpeg. Ambos tienen una enorme cantidad de opciones y configuraciones, y es más allá de este foro entrar en mucho detalle, pero daré los comandos breves a continuación.

El uso e instalación de mencoder o ffmpeg puede ser intimidante, pero las capacidades de edición de video son las más potentes que he encontrado hasta ahora. Dado que la instalación desde la fuente puede ser una molestia para los usuarios nativos de OS X, te aconsejo que uses Homebrew.

Para instalar estas herramientas usando Homebrew, ejecuta este comando en tu terminal:

ruby -e "$(curl -fsSL https://raw.github.com/mxcl/homebrew/go)"

Ahora que tienes instalado Homebrew, es prudente seguir las sugerencias del instalador después de la instalación. Ahora instalamos ffmpeg y mencoder usando brew.

brew install ffmpeg mplayer

Ahora podemos usar mencoder para fusionar los dos videos:

mencoder -oac copy -ovc copy -idx -o output.mp4 video1.mp4 video2.mp4 video3.mp4

O podemos usar ffmpeg para fusionar los dos videos:

ffmpeg -i concat:"video1.mp4|video2.mp4" -codec copy output.mp4

Nota que es posible que necesites escapar el carácter "|" que es especial para muchos shells, entonces

ffmpeg -i concat:video1.mp4\|video2.mp4

Específicamente solicitas archivos .mp4. mp4 es un formato contenedor, es posible que la instalación predeterminada de ffmpeg o mencoder no tenga los paquetes de codificación/decodificación ('codecs') correctos por defecto y que necesites instalar estos por separado. Pero eso está más allá del alcance de este tema.

0 votos

Los comentarios no son para discusiones extensas; esta conversación ha sido trasladada a un chat.

8voto

Michael Sims Puntos 101

La primera respuesta anterior no funcionó para una versión reciente de ffmpeg, lo que serían 5 años ahora desde que se dio esta respuesta.

Así que, para hacer una simple concatenación de archivos de video sin volver a codificarlos utilizando una versión moderna de ffmpeg (actualmente 4.4.1):

Cree un archivo .txt con cada línea que contenga los archivos que desea concatenar, y cada nombre de archivo debe ir precedido por la palabra file y el nombre de archivo debe estar rodeado por comillas invertidas. Debería terminar viéndose así:

file 'Video1.mov'
file 'Video2.mov'
file 'Video3.mov'

Además, si está ejecutando el comando ffmpeg desde la misma carpeta en la que se encuentran sus archivos y el archivo de texto, entonces no hay necesidad de preocuparse por usar rutas absolutas en el archivo de texto.

Guarde ese archivo como sea ... yo lo llamé files.txt.

Entonces este comando los unirá y colocará el resultado en un solo archivo de video:

ffmpeg -f concat -safe 0 -i files.txt -c copy VideoFinal.mov

Si necesita usar rutas absolutas en su archivo de texto, entonces OMITIRÍA el -safe 0 del comando de la siguiente manera:

ffmpeg -f concat -i files.txt -c copy VideoFinal.mov

Esto funcionó de maravilla para mí y unió un par de cientos de megas de video en menos de tres segundos.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X