21 – Como editar el video de Crab Rave meme con FFmpeg
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.