
FFmpeg
Framework de procesamiento multimedia de código abierto
Codificar, decodificar, transcodificar, transmitir y convertir archivos de audio y video mediante la API de FFmpeg.
¿Qué es FFmpeg?
FFmpeg es un marco multimedia de código abierto líder que permite a los desarrolladores grabar, convertir y transmitir contenido de audio y video. Incluye un conjunto completo de bibliotecas —como libavcodec, libavformat, libavutil, libavfilter, libswscale y libswresample— que proporcionan herramientas robustas para manejar diversas tareas multimedia. Con soporte para cientos de códecs y formatos, FFmpeg impulsa innumerables aplicaciones, desde software de edición de video hasta servidores de transmisión y reproductores multimedia.
FFmpeg es ampliamente adoptado en diversas industrias debido a su flexibilidad, rendimiento y soporte activo de la comunidad. Maneja todo, desde la conversión simple de formatos hasta el filtrado de video complejo y la transmisión en tiempo real. Ya sea que estés construyendo un servidor de medios, un reproductor de escritorio o una canalización de transcodificación basada en la nube, FFmpeg ofrece capacidades de procesamiento fiables y de alta calidad. Sus herramientas de línea de comandos, como ffmpeg, ffplay y ffprobe, facilitan la integración en scripts y flujos de trabajo de automatización, mientras que su API en C y sus enlaces (p. ej., para Python) permiten un control programático profundo.
Comenzando con FFmpeg
Para comenzar a usar FFmpeg, instálalo a través del gestor de paquetes de tu sistema (p. ej., `apt install ffmpeg` en Ubuntu, `brew install ffmpeg` en macOS) o descarga los binarios precompilados desde el sitio oficial. Para uso programático, instala el contenedor de Python mediante `pip install ffmpeg-python` o utiliza los encabezados de la biblioteca C oficial. FFmpeg también está disponible en GitHub en [FFmpeg GitHub](https://github.com/FFmpeg/FFmpeg), donde puedes compilar desde el código fuente para configuraciones personalizadas. Su huella ligera y soporte multiplataforma lo hacen ideal para implementaciones de escritorio, servidor y embebidas.
Instalar FFmpeg mediante gestores de paquetes
# Ubuntu/Debian
sudo apt update && sudo apt install ffmpeg
# macOS (Homebrew)
brew install ffmpeg
# Python wrapper
pip install ffmpeg-python
Convertir medios entre formatos
FFmpeg sobresale en la conversión de archivos multimedia entre cientos de formatos y códecs. Puedes transcodificar video de MP4 a WebM, extraer audio de archivos de video o cambiar formatos de contenedor sin volver a codificar (copia de flujo). Sus configuraciones predeterminadas inteligentes garantizan alta calidad, mientras que las opciones avanzadas te permiten afinar el bitrate, la resolución, la velocidad de fotogramas y los parámetros del códec. Ya sea que estés preparando contenido para transmisión web, archivado o reproducción en dispositivos específicos, FFmpeg ofrece un control preciso sobre la calidad y compatibilidad de la salida. La interfaz de línea de comandos admite cadenas de filtros complejas para redimensionar, recortar y aplicar efectos durante la conversión.
¿Cómo convertir MP4 a WebM con FFmpeg?
ffmpeg -i input.mp4 -c:v libvpx-vp9 -crf 30 -b:v 0 -c:a libopus output.webm
Transmisión en tiempo real y emisión en vivo
FFmpeg admite la ingestión, transcodificación y transmisión de medios en vivo a través de protocolos como RTMP, HLS y SRT. Puede capturar desde webcams, micrófonos o fuentes de red y enviar flujos a plataformas como YouTube, Twitch o servidores RTMP personalizados. Con opciones de baja latencia y transmisión adaptativa de bitrate, FFmpeg impulsa pipelines de transmisión en vivo para eventos, juegos y vigilancia. Su capacidad para manejar múltiples entradas, superponer gráficos y aplicar filtros en tiempo real lo hace ideal para configuraciones de transmisión de nivel profesional. También puedes segmentar la salida para DASH/HLS para reproducción adaptativa en clientes móviles y web.
¿Cómo transmitir un archivo de video a YouTube Live?
ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -maxrate 3000k -bufsize 6000k -g 50 -c:a aac -b:a 160k -f flv "rtmp://a.rtmp.youtube.com/live2/your_stream_key"
Filtrado de video y postprocesamiento
El framework libavfilter de FFmpeg permite un filtrado de video en tiempo real y potente mediante un grafo dirigido acíclico de filtros. Puedes recortar, escalar, rotar, desentrelazar, reducir el ruido, superponer marcas de agua, añadir texto, ajustar colores y aplicar efectos complejos como cámara lenta o lapso de tiempo, todo sin volver a codificar todo el flujo. Los filtros pueden encadenarse para procesamiento en múltiples etapas, y la aceleración por hardware (p. ej., NVENC, VAAPI, VideoToolbox) garantiza el rendimiento en GPUs modernas. Esto hace que FFmpeg sea indispensable para editores de video, creadores de contenido y desarrolladores que construyen pipelines de procesamiento de medios que requieren mejoras visuales o normalización de formatos.
¿Cómo recortar, escalar y añadir una marca de agua a un video?
ffmpeg -i input.mp4 -i watermark.png -filter_complex "[0:v]crop=1280:720:0:0[scaled];[scaled][1:v]overlay=10:10" -c:a copy output.mp4
Extraer y manipular metadatos y subtítulos
FFmpeg ofrece control total sobre los metadatos (etiquetas) y los subtítulos incrustados en archivos multimedia. Puedes extraer, editar o eliminar metadatos (p. ej., título, artista, álbum, datos GPS) usando comandos simples, o convertir subtítulos entre formatos como SRT, ASS y VTT. Soporta quemar subtítulos en el video o incrustarlos como pistas separadas. Para flujos de trabajo de accesibilidad y localización, FFmpeg permite el procesamiento por lotes de archivos de subtítulos, ajustes de sincronización y gestión de pistas de idioma. Esto lo hace ideal para la localización de subtítulos, la gestión de activos multimedia y el cumplimiento de normas de radiodifusión que requieren metadatos incrustados.
¿Cómo extraer subtítulos de un archivo de video?
ffmpeg -i input.mkv -map 0:s:0 -c:s srt output.srt
