FFmpeg es considerado uno de los pilares más robustos y versátiles en el mundo del procesamiento multimedia en Linux, siendo imprescindible para quienes buscan flexibilidad y control absoluto desde la terminal. A pesar de la existencia de programas gráficos, la consola te ofrece precisión, velocidad y la posibilidad de automatizar todo tipo de tareas audiovisuales. Con FFmpeg puedes convertir formatos, adaptar archivos para dispositivos, extraer pistas, recortar fragmentos, modificar calidad, gestionar subtítulos y mucho más, manejando tanto audio como vídeo y hasta imágenes, todo con unos pocos comandos bien estructurados.
En este extenso artículo, hemos recopilado y reescrito en detalle la información más completa y avanzada de los mejores artículos que posicionan en Google para convertir formatos y manipular archivos con FFmpeg en Linux. Aquí no solo vas a encontrar los comandos básicos, sino los trucos, parámetros y ejemplos prácticos que abordan desde la instalación, conversión masiva de archivos, edición de metadatos, optimización de calidad, hasta la solución de problemas habituales y casos avanzados como la automatización, el trabajo con subtítulos, la compatibilidad con televisores o la sincronización de audio y vídeo.
¿Qué es FFmpeg y por qué usarlo en Linux?
FFmpeg es un conjunto de programas y bibliotecas desarrollados para la gestión, conversión, transmisión y análisis de archivos multimedia. Nacido bajo el paraguas del software libre, destaca por su compatibilidad con una cantidad inmensa de códecs y contenedores. Aunque existe para Windows y Mac, su integración en el mundo Linux es legendaria: muchas aplicaciones gráficas emplean FFmpeg como motor interno, y en servidores o scripts, no tiene rival.
La principal ventaja de FFmpeg es el poder de la terminal: puedes manipular grandes volúmenes de datos, automatizar flujos de trabajo y personalizar cada aspecto técnico del archivo multimedia. Su flexibilidad lo hace útil tanto para usuarios novatos, que solo buscan cambiar de formato, como para expertos que necesitan ajustar parámetros específicos para cada archivo o realizar postprocesos avanzados.
Instalación de FFmpeg en Linux
La instalación de FFmpeg es sencilla en la mayoría de distribuciones Linux. Normalmente, se encuentra en los repositorios oficiales:
- Debian, Ubuntu y derivados:
sudo apt install ffmpeg
- Arch, Manjaro:
sudo pacman -S ffmpeg
- Fedora, CentOS, openSUSE:
sudo dnf install ffmpeg
Comprueba que FFmpeg está correctamente instalado ejecutando ffmpeg -version
o which ffmpeg
. Si aparece la ruta, puedes empezar a trabajar.
Conceptos clave: códecs, formatos y contenedores
Antes de sumergirte en los comandos, conviene asimilar algunos conceptos:
- Códec: Algoritmo que comprime y descomprime audio o vídeo. Ejemplos: h264, xvid, mp3, aac.
- Formato o contenedor: Fichero que agrupa pistas de vídeo, audio, subtítulos y metadatos. Ejemplos: mp4, mkv, avi, mov, webm.
- Parámetros: Opciones específicas para ajustar bitrate, resolución, fps, canales de audio, etc.
FFmpeg admite multitud de combinaciones, pero el resultado depende de compatibilidades entre códecs y contenedores. No todos los formatos admiten todos los tipos de pista, ni todas las configuraciones resultan igual de compatibles en todos los dispositivos.
Sintaxis básica de FFmpeg y estructura de los comandos
La estructura general de cualquier comando de FFmpeg es:
ffmpeg -i archivo_entrada archivo_salida
Algunos puntos importantes:
- Las opciones se aplican al archivo de entrada o salida que viene a continuación. El orden cuenta.
- Puedes tener varios archivos de entrada y de salida, manipulando cada uno con índices.
- Si no se especifica el archivo de salida, FFmpeg solo mostrará la información en la consola, no generará un nuevo fichero.
- Las opciones globales (por ejemplo, nivel de verbosidad) van al principio.
Por ejemplo, para convertir un fichero AVI a MP4:
ffmpeg -i video.avi video.mp4
Y si quieres establecer un parámetro específico, como la tasa de bits de vídeo a 2500 kb/s y la de audio a 192 kb/s:
ffmpeg -i video.avi -b:v 2500k -b:a 192k video_final.mp4
Comandos esenciales para conversión de formatos
Cambiar el formato de un vídeo o audio
- De MP4 a AVI:
ffmpeg -i entrada.mp4 salida.avi
- De MKV a MP4:
ffmpeg -i original.mkv convertida.mp4
- De AVI a MPG (MPEG):
ffmpeg -i video.avi video.mpg
- De FLV a MPEG:
ffmpeg -i video.flv video.mpeg
- De MOV a MP4:
ffmpeg -i archivo.mov resultado.mp4
El formato de salida se define solo cambiando la extensión, pero si quieres forzar un códec o ciertas características, añade los parámetros necesarios:
ffmpeg -i entrada.mov -c:v libx264 -c:a aac salida.mp4
Convertir audio entre formatos
- De WAV a MP3:
ffmpeg -i cancion.wav nueva.mp3
- De WMA a MP3:
ffmpeg -i audio.wma -f mp3 -ab 192 audio.mp3
- De FLAC a OGG:
ffmpeg -i original.flac destino.ogg
También puedes cambiar parámetros como el codec, la tasa de bits, los canales o el muestreo:
ffmpeg -i sonido.flac -acodec libmp3lame -ab 128k -ar 44100 nuevo.mp3
Ejemplo práctico: convertir varios archivos
Para convertir por lotes archivos de una carpeta, usa un bucle en bash:
for archivo in *.avi; do
ffmpeg -i "$archivo" "${archivo%.avi}.mp4"
done
Así transformarás todos los AVI de la carpeta en archivos MP4.
Control de calidad y ajuste de parámetros clave
Bitrate de vídeo y audio
- Vídeo:
-b:v 3000k
(3000 kbps) - Audio:
-b:a 192k
(192 kbps)
Puedes ajustar la calidad dependiendo del uso. Por ejemplo, para dispositivos móviles puedes reducir la resolución y el bitrate:
ffmpeg -i entrada.mkv -vf scale=1280:720 -b:v 1500k salida.mp4
Y para audios más ligeros:
ffmpeg -i cancion.wav -b:a 96k cancion_compacta.mp3
Cambiar la resolución y la relación de aspecto
- Para forzar una resolución de salida concreta:
ffmpeg -i entrada.mp4 -s 1280x720 salida_720p.mp4
- Para alterar la relación de aspecto:
ffmpeg -i entrada.mp4 -aspect 16:9 salida_16_9.mp4
En ocasiones, ciertos dispositivos requieren formatos específicos de píxel, como televisores LG que necesitan -pix_fmt yuv420p
: más sobre compatibilidad con píxeles.
Modificar la tasa de cuadros por segundo (FPS)
Para cambiar o forzar un número de FPS:
ffmpeg -i original.mp4 -r 30 salida_30fps.mp4
Recuerda que transformar la resolución o el framerate no mejora la calidad original, aunque puede ser necesario para compatibilidad.
Extracción de información y análisis de archivos
Antes de convertir, es fundamental conocer las características del fichero:
ffmpeg -i archivo.ext
Esto mostrará por consola el códec, duración, calidad, canales y metadatos.
Si quieres que la salida sea más limpia, añade -hide_banner
: más sobre análisis y metadatos.
ffmpeg -hide_banner -i archivo.ext
Para análisis exhaustivo y personalizable, utiliza ffprobe
: más sobre ffprobe y análisis avanzado.
ffprobe -i archivo.ext -print_format json -show_format -show_streams
Así obtienes toda la información estructurada en JSON.
Edición y manipulación avanzada de archivos multimedia
Editar metadatos
- Exportar metadatos de un archivo MP3:
ffmpeg -i cancion.mp3 -f ffmetadata metadata.txt
- Modificar e importar metadatos:
ffmpeg -i original.mp3 -metadata artist='Nuevo Artista' -acodec copy salida.mp3
Puedes editar información como artista, álbum, género, año, pista, etc. Ideal para organizar tu música o adaptarla a reproductores exigentes (por ejemplo, de Apple).
Extraer pistas de audio o eliminar el audio/video
- Extraer solo audio sin recodificar:
ffmpeg -i original.avi -vn -acodec copy solo_audio.mp3
- Extraer audio convertido a otro formato (por ejemplo, de un vídeo):
ffmpeg -i video.mp4 -q:a 0 -map a solo_audio.mp3
- Eliminar todas las pistas de audio de un vídeo:
ffmpeg -i original.avi -map 0 -map -0:a -c copy sin_audio.avi
- Eliminar todos los streams de audio excepto algunos concretos:
ffmpeg -i original.avi -map 0 -map -0:a:3 -map -0:a:6 -c copy con_dos_streams.avi
- Extraer solo una pista de audio específica:
ffmpeg -i original.avi -map 0:a:2 -c copy solo_pista2.avi
Extraer imágenes o crear vídeos a partir de imágenes
- Extraer todos los fotogramas como imágenes:
ffmpeg -i video.mp4 imagen%d.jpg
- Extraer un frame cada segundo:
ffmpeg -i video.mp4 -vf fps=1 imagen%d.jpg
- Extraer solo los keyframes:
ffmpeg -i video.avi -vf "select=eq(pict_type\,I)" -vsync vfr imagen%d.jpg
- Crear un vídeo a partir de una secuencia de imágenes:
ffmpeg -i imagen%d.jpg video.avi
- Crear un vídeo con una framerate personalizada:
ffmpeg -framerate 1 -i img%03d.png -r 25 -pix_fmt yuv420p salida.mp4
Convertir vídeo a GIF animado
FFmpeg te permite transformar un fragmento de vídeo en un GIF animado, útil para memes y redes:
ffmpeg -i original.mp4 -vf "scale=320:-1" animado.gif
Para mayor calidad, primero extrae los frames y usa una herramienta como gifski:
ffmpeg -i original.mp4 frame%04d.png
gifski -o salida.gif frame*.png
Transformar entre resoluciones 4K, FullHD, HD…
- De 4K a FullHD (cambiando contenedor):
ffmpeg -i 4k.mkv -vf scale=1920:1080 -q:a 0 -q:v 0 1080p.avi
- De FullHD a HD:
ffmpeg -i fullhd.mkv -vf scale=1280:720 -b:v 2000k hd.mp4
- De FullHD a 4K:
ffmpeg -i 1080p.mkv -vf scale=3840:-1 4k.mkv
Edición de fragmentos: cortar, unir, recortar y combinar archivos
Cortar un fragmento de vídeo o audio
Para extraer un trozo concreto de un archivo:
ffmpeg -ss 00:00:30 -t 00:00:15 -i original.mp4 -c copy fragmento.mp4
Esto corta desde el segundo 30, con una duración de 15 segundos. Si quieres definir el final en vez de la duración, usa -to
:
ffmpeg -ss 00:00:35 -to 00:01:05 -i original.mp4 -c copy fragmento.mp4
También puedes cortar desde el principio hasta un punto:
ffmpeg -t 00:01:36 -i original.mp4 -c copy recortado.mp4
Unir múltiples vídeos en uno solo
El método más fiable es a través de listas de archivos y el filtro concat
: más sobre unión de archivos con FFmpeg
- Crea un archivo de texto (por ejemplo,
lista.txt
) con los nombres de los vídeos:
file 'parte1.mp4' file 'parte2.mp4'
- Ejecuta:
ffmpeg -f concat -safe 0 -i lista.txt -c copy resultado.mp4
Este método es rápido y sin recomprimir, pero los vídeos deben tener codecs idénticos.
Combinar audio y vídeo de diferentes archivos
Puedes fusionar un archivo de audio con uno de vídeo:
ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac -strict experimental final.mp4
Para sustituir la pista de audio de un vídeo:
ffmpeg -i video.mp4 -i nuevo_audio.mp3 -map 0:v -map 1:a -c copy video_con_nuevo_audio.mp4
Automatización: conversión por lotes y scripting
Uno de los puntos fuertes de FFmpeg es automatizar procesos mediante scripts de bash. Puedes cambiar el formato de cientos de archivos con unas pocas líneas:
IFS=$'\n'
for i in *.webm; do ffmpeg -i "$i" "${i/%.webm/.mp3}"; done; unset IFS
Con bucles similares puedes convertir .flv a .ogg, o cualquier otra combinación. Recuerda que en nombres con espacios, el uso de IFS
es fundamental.
Corrección de problemas y compatibilidad
Reparar archivos problemáticos
Algunos vídeos pueden funcionar mal en dispositivos como Smart TVs. Soluciona generando en FFmpeg una copia sin recodificar:
ffmpeg -i video_orig.avi -c:v copy -c:a copy reparado.avi
Si hay problemas con la resolución, puedes forzar -vf "setdar=16:9,setsar=1:1"
para establecer la relación de aspecto adecuada. Más información sobre compatibilidad con diferentes formatos y dispositivos está en herramientas para convertir discos virtuales.
Optimizar para compatibilidad máxima
Si necesitas que un archivo MKV funcione en casi todos los televisores, usa:
ffmpeg -i original.mkv -c:a libmp3lame -pix_fmt yuv420p compatible.mkv
En ocasiones, los codecs de sonido pueden dar problemas, así que elige MP3 o AAC para máxima compatibilidad.
Otras tareas y operaciones avanzadas
Extraer y agregar subtítulos
- Convertir subtítulos de .vtt a .ass:
ffmpeg -i subtitulos.vtt salida.ass
- Agregar subtítulos a un vídeo:
ffmpeg -i video.mp4 -i subtitulos.srt -map 0 -map 1 -c copy -c:v libx264 -crf 23 -preset veryfast salida.mkv
Eliminar subtítulos y otros streams
ffmpeg -i entrada.mkv -map 0:v -map 0:a -c copy solo_video_audio.mkv
Agregar marcas de agua o logos
Puedes añadir una imagen (PNG con transparencia, por ejemplo) en cualquier esquina:
ffmpeg -i video.mp4 -i logo.png -filter_complex "overlay=10:10" salida.mp4
Para colocar el logo en la esquina inferior derecha:
ffmpeg -i video.mp4 -i logo.png -filter_complex "overlay=W-w-10:H-h-10" salida.mp4
Ajustar volumen o limpiar audio
- Aumentar volumen multiplicando x3.5:
ffmpeg -i entrada.mkv -filter:a "volume=3.5" -c:v copy -acodec mp3 salida.mkv
- Eliminar ruido de fondo (requiere sox):
Extrae primero el fragmento de ruido
ffmpeg -i entrada.mp3 -ss 00:00:00 -t 1 ruido.mp3
Después:
sox entrada.mp3 limpio.mp3 noisered noise.prof 0.21
Sincronizar audio y vídeo
Si detectas desincronización, retrasa el audio o el vídeo con -itsoffset
o -af adelay
:
ffmpeg -itsoffset 1.7 -i video.mkv -i video.mkv -map 0:0 -map 1:1 -acodec copy -vcodec copy sincronizado.mkv
En casos más sencillos para retrasar el audio 1.7 segundos:
ffmpeg -i video1.webm -af "adelay=1700|1700" -vcodec copy video_sincronizado.webm
Concatenar vídeos con diferentes codecs o formatos
Cuando los archivos no tienen igual códec y parámetros, lo ideal es recodificarlos antes o usar concat
con transcodificación. También puedes consultar .
ffmpeg -f concat -i lista.txt -c:v libx264 -c:a aac -strict experimental salida.mp4
Rotar vídeos
Para girar un vídeo 90 grados a la derecha:
ffmpeg -i original.mov -vf "transpose=1" -c:a copy rotado.mov
Para 180 grados:
ffmpeg -i original.mov -vf "transpose=2,transpose=2" -c:a copy rotado.mov
Hacer loop (repetir) un vídeo
ffmpeg -stream_loop 2 -i original.mp4 -c copy loop.mp4
El número indica las repeticiones; usa -1 para infinito.
Estabilizar vídeos temblorosos
Para vídeos inestables:
- Detecta el movimiento:
ffmpeg -i tembloroso.avi -vf vidstabdetect=stepsize=6:shakiness=3:accuracy=9:result=vectors.trf -f null -
- Corrige el vídeo:
ffmpeg -i tembloroso.avi -vf vidstabtransform=input=vectors.trf:zoom=1:smoothing=30,unsharp=5:5:0.8:3:3:0.4 -vcodec libx264 -preset slow -tune film -crf 18 -acodec copy corregido.avi
Velocidad de reproducción
Para acelerar o ralentizar un vídeo:
- Acelerar x2:
ffmpeg -i video.mpg -vf "setpts=0.5*PTS" rapido.mpg
- Ralentizar x4:
ffmpeg -i video.mpg -vf "setpts=4.0*PTS" lento.mpg
Grabar vídeo del escritorio o emisión en streaming
- Grabar escritorio (FullHD) y audio:
ffmpeg -f alsa -i default -f x11grab -s 1920x1080 -r 30 -i :0.0 -preset ultrafast -vcodec libx264 -tune zerolatency -f mpegts tcp://IP_DESTINO:4444
- Grabar desde cámara web:
ffmpeg -f v4l2 -i /dev/video0 -preset ultrafast salida.webm
Automatizar edición en masa y tareas repetitivas
Combina FFmpeg en scripts con bash, python o cualquier lenguaje que maneje procesos para convertir, renombrar y procesar cientos de archivos a la vez. Ejemplo de corte automático usando un archivo con lista de tareas y un script que recorra todo el directorio y ejecute los comandos adecuados para cada archivo según necesidades.
Cambiar múltiples archivos de formato automáticamente
Utiliza bucles o scripts personalizados. Por ejemplo, para convertir todos los .wav de un CD en MP3 y guardarlos en una carpeta:
cd /ruta/al/cd
mkdir ~/MP3s
IFS=$'\n'
for i in *.wav; do ffmpeg -i "$i" ~/MP3s/"${i/%.wav/.mp3}"; done; unset IFS
Caso avanzado: convertir contenidos de DVD, BluRay o ISOs
- Monta la imagen ISO en tu sistema.
- Identifica los fragmentos de vídeo (normalmente .VOB para DVD, .m2ts para BluRay).
- Concatena los archivos grandes para obtener la película completa:
cat VTS_01_1.VOB VTS_01_2.VOB VTS_01_3.VOB VTS_01_4.VOB > pelicula.vob
- Comprueba los streams:
ffmpeg -probesize 4G -analyzeduration 4G -i pelicula.vob
- Selecciona solo los streams necesarios (vídeo y audio en castellano, por ejemplo):
ffmpeg -i pelicula.vob -q:a 0 -q:v 0 -map 0:1 -map 0:2 pelicula_es.mkv
Todo el proceso es adaptable a necesidades, y puedes incluir subtítulos o pistas alternativas mediante los parámetros adecuados de -map
.
Redactor apasionado del mundo de los bytes y la tecnología en general. Me encanta compartir mis conocimientos a través de la escritura, y eso es lo que haré en este blog, mostrarte todo lo más interesante sobre gadgets, software, hardware, tendencias tecnológicas, y más. Mi objetivo es ayudarte a navegar por el mundo digital de forma sencilla y entretenida.