Concatenar y cortar vídeo con FFmpeg
Publicado el 30/10/2023 en it • Etiquetado con video, ffmpeg
Hace unos meses me pidieron grabar un concierto de música de la banda del colegio en la que participa mi hijo para luego poder incorporarlo a un proyecto que están realizando junto con otros colegios de otros países europeos.
De entre toda la grabación, el director de la banda me ha pedido la primera pieza que tocaron.
Al buscarla, me he encontrado que debido a la introducción que hicieron, el vídeo superó los 4 GB que es el tamaño máximo de fichero que admite la cámara con la que realice la grabación y la pieza en cuestión quedó dividida en dos ficheros.
Por ello, para poder facilitarsela al director he tenido que hacer dos operaciones con los vídeos. Primero juntar los dos primeros vídeos en uno para posteriormente recortar el trozo que nos interesaba.
Por comodidad, las dos operaciones las he realizado con FFmpeg.
Estos son los comandos que he utilizado:
ffmpeg -safe 0 -f concat -i videos.txt -vcodec copy -acodec copy concierto.mov
Donde los flags quieren decir lo siguiente:
-
-safe 0
. Para indicar que los ficheros son seguros puesto que los paths que he utilizado en este caso son absolutos y FFmpeg no los considera como tales. -
-f concat
. Operación de concatenado. -
-i videos.txt
. Fichero de texto conteniendo los ficheros a concatenar. El formato ha de ser el siguiente:
file /home/myuser/Videos/concierto_01.MOV
file /home/myuser/Videos/concierto_02.MOV
vcodec copy
y-acodec copy
. Copiar el codec tanto de vídeo como de audio. De esta manera no se recodifica el vídeo.
Y una vez finalizada la concatenación, para extraer el trozo que nos interesaba:
ffmpeg -i concierto.mov -ss 00:09:55 -to 00:14:20 -acodec copy -vcodec copy concierto-01.mov
Donde:
-
-ss 00:09:55
. Instante en el que comienza el fragmento a recortar. -
-to 00:14:20
. Instante final del fragmento. -
vcodec copy
y-acodec copy
. Igual que antes, para no recodificar.
Tras estas operaciones en concierto-01.mov
tengo el vídeo que me han pedido.
Fuentes: