Editar videos con ffmpeg

Como este blog lo uso para mis notas (espero hacerlo más seguido), hace unos días me enviaron un video que tenía que editar como parte del avance de un trabajo. Sin embargo, partes de ese video mostraba información confidencial y tenía que quitarlo, conocía una herramienta que en algún momento me sirvió para algo, por eso en este post vamos a aprender a editar videos con ffmpeg.

Yo no sé nada de edición de video (con esto me refiero a convertir entre formatos de videos, cortar o cositas así, nada como a hacer magia en After Effects), así que el plan era el siguiente:

  • Como era extensión wmv, hay que convertirlo primero a mp4 para trabajar mejor.
  • Cortar la primera marca de tiempo de 00:00:00 al 00:02:28 (formato hh:mm:ss)
  • Cortar la segunda marca de tiempo de 00:03:22 al 00:06:56 (formato hh:mm:ss)
  • Metemos las partes a un archivo de texto
  • Pegamos los dos archivos y lo hacemos uno

Seguramente hay maneras más fáciles, ¡qué te puedo decir, me gusta batallar!

Instalar ffmpeg

ffmpeg es una herramienta muy conocida que sirve para “editar” con formatos de video (aunque también para audio). Podemos cortar, unir, codificar o convertir. Tiene cientos de opciones, así que te recomiendo ir a la documentación.

Lo primero que haremos es instalar el software, así que podemos descargarla y ver documentación desde acá. Tiene mucho soporte, así que te la recomiendo como fuente principal.

En mi caso es Fedora 36, así que usé lo siguiente.

sudo dnf install ffmpeg ffmpeg-devel

Convertir de wmv a mp4

Puede ser que no necesites convertir tu archivo porque ya tiene el formato correcto, en mi caso sí necesitaba convertirlo de wmv a mp4.

ffmpeg -i source-file.wmv -c:v libx264 -preset fast out-video.mp4

Cortar el archivo en partes

Como necesito omitir cierta parte del video, debo tomar dos marcas de tiempo.

Vamos con la primera:

ffmpeg -ss 00:00:00 -to 00:02:28 -i out-video.mp4 -c copy cut-video-1.mp4

Seguimos con la segunda parte:

ffmpeg -ss 00:03:22 -to 00:06:56 -i out-video.mp4 -c copy cut-video-2.mp4

Cuando tengamos las dos partes, creamos un archivo con las dos partes que vamos a juntar al final en un solo archivo.

cat <<EOT >> files.txt
file 'cut-video-1.mp4'
file 'cut-video-2.mp4'
EOT

Finalizar

Cuando tengamos el archivo con la lista de archivos, le pasamos el parámetro concat y el archivo recién creado en el paso anterior.

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

Sencillo pero práctico… con esto deberían poder editar videos con ffmpeg.

Subtítulos con ffmpeg, utf8 y mp4

Cuando descargas videos o películas ;), por lo general son MKV y es posible que tengan los subtítulos incluidos, pero también puede que no, por lo que puedes convertirlo a MP4, por ejemplo, y luego pegarle subtítulos:

ffmpeg -i my-video.mkv -codec copy my-video.mp4

# Pegando subtítulos
# El archivo SRT o SSA deben estar en codificación UTF-8

ffmpeg -i my-video.mp4 -vf subtitles=my-video.srt video-with-subs.mp4

Saludos.


Posted

in

, ,

by