· Cambiar idioma (Actualmente: Español)

Unir videos en formato MP4 con FFmpeg

Noviembre 06, 2019 00:00 -0500

La semana pasada necesitaba unir varios videos en formato MP4 y lo pude hacer con FFmpeg como describo a continuación.

Primero, se listan en un archivo de texto los videos que se van a unir. Así:

file '/ruta/a/video1'
file '/ruta/a/video2'
file '/ruta/a/video3'

Finalmente, suponiendo que los videos quedaron listados en un archivo llamado videos.txt, se ejecuta el programa ffmpeg de la siguiente forma:

$ ffmpeg -f concat -safe 0 -i videos.txt -c copy video-final.mp4

Eso es todo.

Explicación de la orden

La opción -f concat indica que debe usarse el formato concat. Un formato se refiere a un multiplexor o demultiplexor. concat es del segundo tipo y permite leer la lista de videos desde un archivo y demultiplexarlos uno tras otro de tal manera que todos sus paquetes de información quedan como si hubieran sido multiplexados juntos.

La opción -safe 0 indica que deben aceptarse cualquier tipo de rutas de archivos. O sea, rutas absolutas, rutas relativas, rutas que contengan cualquier tipo de caracteres, entre otras cosas. Esto hace que sea más fácil leer archivos en un computador de escitorio común y corriente, que es el caso del ejemplo de arriba.

Sin embargo, hay que tener en cuenta que las rutas que se permiten con el valor 0 se consideran inseguras. El valor predeterminado de la opción safe es 1, que acepta únicamente rutas seguras. Según la documentación de opciones de concat, una ruta se considera segura cuando no contiene especificación de protocolo, es relativa, todos sus componentes contienen únicamente caracteres del conjunto de caracteres portables (que es un subconjunto de ASCII) y ninguno de sus componentes empieza con punto.

La opción -i videos.txt es obvia y la opción -c copy significa que deben copiarse todos los flujos (audio y video) del video sin recodificar (sin cambiar de códec).

Temas relacionados: