13 – Como editar el video de Crab Rave meme con FFmpeg

Posted on Oct 26, 2020 – Updated on Oct 26, 2020 - by Franco
Cover del post

Aunque quizá algo ya antiguo, el meme del Crab Rave fue bastante conocido a mediados de 2018.  Aquí pueden ver algunos de los memes conocidos de esa época:

Hoy vamos a usar como ejemplo este meme para conocer un poco más de la herramienta ffmpeg para editar videos.

Preparación

Primero bajamos el video original de YouTube, usando youtube-dl u otra herramienta que conozcan.

Con youtube-dl podemos usar el siguiente comando:

cd ~/Downloads  		# nos ubicamos en una ruta conocida
youtube-dl https://www.youtube.com/watch?v=LDU_Txk06tM

Instalación de ffmpeg

Podemos ver las instrucciones de descargas en la página oficial de FFmpeg. Aqui dejaré algunos de los métodos para las plataformas más conocidas.

Mac OS

brew install ffmpeg

Ubuntu

sudo apt install ffmpeg

Verificamos que lo tengamos instalado:

ffmpeg -version

En mi caso (Mac OS) imprime lo siguiente:

built with Apple clang version 12.0.0 (clang-1200.0.32.2)
configuration: --prefix=/usr/local/Cellar/ffmpeg/4.3.1_1
....

Veamos entonces el comando que usaremos para modificar este video:

ffmpeg -ss 66 \
-i crab.mp4 \
-t 30 \
-crf 27 -preset veryfast \
-vf "drawtext=fontfile=~/Library/Fonts/SF-Compact-Display-Bold.otf:text='ESCRIBE_ALGO_AQUI':fontcolor=white:fontsize=68:shadowx=5:shadowy=5:box=1:boxcolor=black@0.0:boxborderw=5:x=(w-text_w)/2:y=(h-text_h)/2:enable='between(t,9,30)'" \
-c:v libx264 \
-filter:a "volume=0.2" \
output.mp4

Veamos qué significan las opciones:

-ss (time offset) esta opción modifica el inicio del video, es decir recorta todo lo anterior, esto esta en segundo así que en este caso empezaríamos del segundo 66 del video.

-i (de input) es el archivo que descargamos de YouTube.

-t (de time) es la duración del clip desde el inicio.

-crf (de Constant Rate Factor) es básicamente la calidad que queremos tener para el video final, de 0 a 51 donde los valores mas pequeños significan menor compresión pero mejor calidad, y los valores mas grandes significa más degradación pero archivos más pequeños.

-preset es la velocidad con la que queremos procesar el video, por lo general velocidades más lentas (slower, slow, medium) producen files más pequeños que las velocidades más rapidas (fast, faster, veryfast). El blog de Corbpie hizo un excelente post comparando los presets.

-vf aquí especificaremos el filtro que vamos a aplicar en el video veamos un poco más a detalle el argumento, lo separaremos en líneas para que se entienda mejor:

drawtext=
fontfile=~/Library/Fonts/SF-Compact-Display-Bold.otf
text='ESCRIBE_ALGO_AQUI'
fontcolor=white
fontsize=68
shadowx=5
shadowy=5
box=1
boxcolor=black@0.0
boxborderw=5
x=(w-text_w)/2
y=(h-text_h)/2
enable='between(t,9,30)'

Como vemos, primero seleccionamos la ruta del tipo de letra que queremos usar, en este caso estoy usando “SF Compact Display Bold”, Luego va el texto en sí, el color que queremos el teto, el tamaño del texto, la posición de la sombra, el tamaño y posicionamiento del texto con respecto al lienzo, en este caso (w-text_w)/2 posiciona el texto en el centro horizontalmente y (h-text_h)/2 centra el texto verticalmente. Finalmente, indicamos cuando queremos que se aplique el filtro, en este caso usamos la función between, para especificar que queremos mostrar el texto desde el segundo 9 hasta el segundo 30.

-c:v indicamos el códec que queremos usar, en este caso H264

-filter:a "volume=0.2" Indica un filtro de audio, en este caso queremos el volumen al 20%.

Conclusiones

Como vemos ffmpeg es muy rápido y en segundos podemos editar videos sin tener que levantar proyectos pesados de iMovie o Final Cut Pro X. En próximas ocasiones veremos como hacer más cosas interesantes con FFmpeg, como agregar timestamps, insertar texto en movimiento y más.

Lecturas recomendadas

Agradecimientos

Quiero agradecer al usuario ‘dqv’ de HN por haber compartido este comando.