Cómo unir videos en GNU/Linux

Ayer en Carlos Pellegrini fue el Día del Pueblo. Una de las actividades que hubo fue una carrera de autos con obstáculos. Aproveché para filmar un poco y probar mi nuevo celular, por lo que terminé con varios archivos mp4. Para subirlos a Internet quería unirlos: ¿cómo hacerlo de forma fácil? Si tenés varios archivos de texto y querés unirlos, o expresándome de forma más correcta, contactenarlos, usás el comando cat. ¿Se puede hacer lo mismo con videos? Suena algo loco cuando se escucha por primera vez, pero hay algunos formatos que SI lo soportan, como mpeg 1 y 2.

Usando ffmpeg podemos convertir los archivos mp4 a mpeg. Parados en el directorio donde estén los videos:

for i in `ls *.mp4`; do ffmpeg -i $i -sameq $i.mpeg; done

Ahora simplemente los concatenamos y redirigimos la salida de cat a un nuevo archivo:

cat *.mpeg > video.mpeg

Notemos que el orden lexicográfico de los videos coincide con el orden en que fueron tomados; por eso puedo usar el * y obtener un resultado ordenado en el tiempo.

Listo, subí el resultado a YouTube.

Me hubiese gustado una transición más suave entre video y video, pero investigarlo y hacerlo excedía la ecuación costo beneficio. Se escuchan ideas!

About Juanjo

Mi nombre es Juanjo Conti, vivo en Santa Fe y soy Ingeniero en Sistemas de Información. Mi lenguaje de programación de cabecera es Python; lo uso para trabajar, estudiar y jugar. Como hobby escribí un libro de cuentos que se puede descargar gratuitamente.
This entry was posted in GNU/Linux, Siempre se aprende algo and tagged , . Bookmark the permalink.
  • El Barto

    No sé exactamente qué pasa con mpeg, pero con AVI podés unirlo con cat pero después necesitás reescribir unos índices, por ejemplo, para que el reproductor te muestre bien la duración del video y puedas saltar a una punto específico. Para hacer eso lo podés hacer con mencoder:

    mencoder -forceidx -oac copy -ovc copy video_concatenado.avi -o video_final.avi

  • jjconti

    Gracias por el dato, en mi resultado final no se ve bien el tiempo de duración.