FFmpeg es una potente herramienta de código libre que utilizo con frecuencia para editar o manipular vídeos individualmente o en bloque. Es compatible con una Muy amplia gama de códecs y formatos, lo que la convierte en una herramienta esencial para cualquier aficionado o profesional del vídeo.
Este artículo pretende ofrecerte una lista de 15 comandos FFmpeg breves y prácticos que te ayudarán a iniciarte con esta versátil herramienta.
La historia de FFmpeg se remonta al año 2000, cuando Fabrice Bellard, un programador francés, lo desarrolló como una colección de bibliotecas y herramientas para manejar datos multimedia.
Con el paso de los años, FFmpeg se ha convertido en una herramienta muy utilizada y respetada para la manipulación de vídeo y audio, gracias a su activa comunidad de desarrolladores y usuarios.
Comandos básicos de FFMPEG
Conversión básica
ffmpeg -i INPUT_VIDEO.mov OUTPUT_VIDEO.mp4
-i
Input o entrada del stream. En este caso el video original, en formato .mov, como ejemplo.- El último parámetro corresponde a la salida. En este caso, el video convertido.
Extraer el audio de un video
ffmpeg -i INPUT_VIDEO.mp4 -vn -c:a mp3 -b:a 128k -ac 2 -ar 44100 YOUR_AUDIO.mp3
-vn
No video.-c:a
Codec del audio.
-b:a
Biterate-ac
Canales de audio-ar
Audio rate kHz
Extraer video sin audio
ffmpeg -i YOUR_VIDEO -an -c:v copy OUTPUT
-an
No audio.-c:v
Codec de video. En este caso, sin codec, solo copiar.
Extraer una parte de un video
ffmpeg -ss 00:01:00.000 -i YOUR_VIDEO.mp4 -t 00:00:10.000 -c copy VIDEO_SEGMENT.mp4
-ss
Dado que se encuentra antes de la opción-i
, ubicará el inicio del stream aquí. En este caso, el inicio del corte, en este ejemplo justo en el minuto 1, formato HH:MM:SS:ms.-t
El tiempo de duración del stream. En este caso, la duración del corte, 10 segundos en formato HH:MM:SS:ms.
Cambiar el tamaño o resolución de un video.
ffmpeg -i YOUR_INPUT.mov -s 1280x720 YOUR_OUTPUT.mp4
-s
Es la resolución de salida deseada.
Obtener la longitud de un video:
fprobe -v error -select_streams v:0 -show_entries stream=duration -of default=noprint_wrappers=1:nokey=1 -sexagesimal YOUR_INPUT.mp4
Este comando muestra la duración del video o stream en formato horas:minutos:segundos:milisegundos. El comando ffprobe se utiliza para obtener información sobre el archivo de entrada.
Los parámetros -select_streams
, -show_entries
y -of
se utilizan para especificar la información que se desea obtener y el formato de salida.
Agregar logo a un video
ffmpeg -i INPUT+VIDEO.mp4 -i LOGO.png -filter_complex "overlay=100:100" -codec:a copy OUTPUT_VIDEO_WITH_LOGO.mp4
Este comando agrega un logo a un video existente.
- El parámetro
-i
se utiliza para especificar tanto el video de entrada como el archivo de logo. - El parámetro
-filter_complex
se utiliza para especificar el filtro a aplicar, en este caso el filtrooverlay
para agregar el logo al video. - Los parámetros numéricos (100:100) se utilizan para especificar la posición del logo en el video.
- El parámetro
-codec:a
copy se utiliza para copiar el códec de audio original sin realizar ninguna conversión.
Convertir un video en un GIF animado
Este comando convierte un video en un gif animado en tres pasos:
1. Cambiar el tamaño al video
ffmpeg -i output.mp4 -vf scale=640x360 -c:v h264 -crf 18 -c:a aac OUTPUT_1.mp4
2. Genera los frames en formato PNG
ffmpeg -i OUTPUT_1.mp4 frame%04d.png
3. Generar el gif a partir de los frames:
Para alta calidad:
gifski -o GIF_OUTPUT.gif frame*.png
Baja calidad
ffmpeg -i OUTPUT_1.mp4 GIF_OUTPUT.gif
Crear un video a partir de un grupo de imágenes
ffmpeg -framerate 1 -i img%03d.png -r 25 -pix_fmt yuv420p output.mp4
Este comando crea un video a partir de una serie de imágenes.
- El parámetro
-framerate
se utiliza para especificar la velocidad de fotogramas deseada - El parámetro
-i
se utiliza para especificar el patrón de nombres de archivo de las imágenes. - El parámetro
-r
se utiliza para especificar la velocidad de reproducción deseada (en este caso, 25 fotogramas por segundo). - El parámetro
-pix_fmt
se utiliza para especificar el formato de píxeles deseado (en este caso, yuv420p).
Generar ondas de audio
ffmpeg -i INPUT_AUDIO.AAC -filter_complex "[0:a]showwaves=mode=cline:s=1920x1080:colors=white[v]" -map '[v]' -map '0:a' -c:a copy -pix_fmt yuv420p OUTPUT_VIDEO.mp4
Este comando genera un video que muestra las ondas de audio de un archivo de audio.
- El parámetro
-filter_complex
se utiliza para especificar el filtro a aplicar, en este caso el filtroshowwaves
para mostrar las ondas de audio. - Los parámetros numéricos y de color se utilizan para especificar el tamaño y los colores del video.
- El parámetro
-map
se utiliza para especificar qué streams se deben incluir en la salida. - El parámetro
-c:a
copy se utiliza para copiar el códec de audio original sin realizar ninguna conversión.
Cambiar subtítulos de formato
ffmpeg -i YOUTUBE_SUBTITLES.vtt YOUR_SUB.ass
Este comando convierte un archivo de subtítulos de formato VTT a formato ASS.
- El parámetro
-i
se utiliza para especificar el archivo de entrada - El último parámetro se utiliza para especificar el archivo de salida.
Reemplazar la pista de audio de un video
ffmpeg -i INPUT_VIDEO.mp4 -i NEW_AUDIO.mp3 -map 0:v -map 1:a -c copy OUTPUT_VIDEO.mp4
Este comando reemplaza la pista de audio de un video existente por una nueva pista de audio.
- Los parámetros
-i
se utilizan para especificar tanto el video de entrada como el archivo de audio de entrada. - Los parámetros
-map
se utilizan para especificar qué streams se deben incluir en la salida (en este caso, el video del primer archivo y el audio del segundo archivo). - El parámetro
-c
copy se utiliza para copiar el códec de video y audio originales sin realizar ninguna conversión.
Extraer metadatos de un archivo multimedia
ffmpeg -i INPUT_FILE -f ffmetadata metadata.txt
Este comando extrae los metadatos de un archivo de entrada y los guarda en un archivo de texto.
- El parámetro
-f
se utiliza para especificar el formato de salida deseado (en este caso, ffmetadata).
Ajustar el volumen de un audio
ffmpeg -i INPUT_AUDIO.mp3 -vol 200 OUTPUT_AUDIO.mp3
-vol 200
: establece el volumen del archivo de salida. En este caso, se establece en 200, lo que significa que el volumen se duplicará con respecto al original. Los valores más altos aumentan el volumen, mientras que los valores más bajos lo disminuyen.
Extraer imágenes de un video
ffmpeg -i INPUT -f image2 -bt 20M -vf fps=1/1 %03d.png
-f
image2 Es el filtro encargado de crear la imagen a partir del video.-vf
fps=1/2 Frames por segundo. En este caso, el número de imágenes a obtener en cada segundo. En el ejemplo, 1 imagen cada 2 segundos.
Conclusión
FFmpeg es una herramienta increíblemente poderosa y versátil para manipular y editar videos. Los comandos que hemos presentado en este artículo son solo una pequeña muestra de lo que se puede hacer con FFmpeg Con un poco de práctica, puedes convertir FFmpeg en una herramienta indispensable en tu flujo de trabajo de edición de video.
Hace algunos años, editar o manipular vídeos sin una interfaz de usuario me resultaba difícil de imaginar. Sin embargo, una vez que me acostumbré a su uso, la eficiencia y flexibilidad que ofrece FFmpeg hacen que ahora me pregunte por qué no comencé a usarlo antes.