La estructura básica del comando es la siguiente:
ffmpeg [global_options] {[input_file_options] -i input_file} ... {[output_file_options] output_file} ...Algunas opciones genéricas.
-h ► Muestra la ayuda.
-version ► Muestra la versión del programa.
-encoders ► Muestra todos los codificadores disponibles.
-decoders ► Muestra todos los decodificadores disponibles.
-formats ► Muestra los formatos disponibles.
Opciones principales.
-f format (input/output)
► Fuerza un formato determinado para el fichero de entrada o salida. Normalmente se detecta el formato de los ficheros de entrada y en el caso de los ficheros de salida se adivina por su extensión.
-i filename
► Indica el fichero de entrada.
-ss position
► Cuando se utiliza como opción de entrada (antes de -i), busca en input_file la position y lee los datos a partir de ahí. Duando se usa como opción de salida (antes de output_file), decodifica igual todo el fichero, pero descarta los datos hasta la position indicada.
-t duration
► Cuando se utiliza como opción de entrada (antes de -i), limita la duración de los datos leidos desde input_file hasta el valor indicado por duration. Cuando se utiliza como opción de salida (antes de output_file), detiene la escritura en output_file después de alcanzar duration.
-s ► Establece la resolución en píxeles del archivo de salida output_file (anchoXalto). Aunque esto funciona perfectamente, no es una solucción muy flexible, por lo que es mejor usar el filtro scale.
Opciones de vídeo.
-c:v, -vcodec codeec
► Indica el codificador de vídeo.
-b:v, -vb rate
► Establece el bitrate de vídeo.
-filter:v, -vf filtergraph
► Crea el gráfico de filtro/s especificado por filtergraph y lo usa para filtrar el vídeo.
-vn ► Desactiva el vídeo.
Opciones de audio
-c:a, -acodec codec
► Indica el codificador de audio.
-b:a, -ab rate
► Establece el bitrate de audio.
-ac num
► Establece los canales de audio (2= estereo, 6=envolvente).
-filter:a, -af filtergraph
► Crea el gráfico de filtro/s especificado por filtergraph y lo usa para filtrar el audio.
-an ► Desactiva el audio.
Algunos filtros.
yadif ► Deinterlace.
Algunos de los parámetros que acepta son:
scale ► Cambiar el tamaño del vídeo de entrada, usando la librería libswscale. Esta es una mejor alternativa a la opción -s.
Algunas parámetros del filtro scale son:
Algunos ejemplos del filtro scale:
scale=1280:720 scale=w=1280:h=720
scale=1920:trunc(ow/a/2)*2 removelogo ► Elimina los logotipos de las cadenas de televisión. Se usa un fichero de imagen para determinar que píxeles componen el logo.
Las opciones que acepta el filtro son:
crop ► Recorta el vídeo de entrada a una dimensiones dadas.
Algunas opciones que acepta son:
Algunos ejemplos del filtro crop:
crop=100:100:12:34 crop=w=100:h=100:x=12:y=34
crop=10:100
crop=iw-2*10:ih-2*100 threads ► Define o limita el número de hilos (núcles de CPU) que podrá usar ffmpeg.
Nota. En un HP Envy no limita el número de núcles, sino que limita el porcentaje de CPU. En cuaquier caso, cuanto menos CPU se utilice, menos FPS se procesarán y la conversión irá más lenta. Esta opción se puede poner después de los codecs, antes del fichero de salida.
Ejemplo:
-thrads 6
Límite de 6 núcleos, o porcentaje máximo de CPU equivalente al uso de solo 6 núcleos.
Filtros para usar después de -i input_file y antes de los codecs:
-vf "hqdn3d=1:1:4:4"
-vf "hqdn3d=2:2:4:4"
Aplican un ligero filtro para eliminar el granulado. Seleccionar unos valores más altos pueden dar mejor resultado contra el grano, pero pueden dejar las caras de las personas demasiado falsas. También un valaor demasiado alto, puede provocar efecto fantasma en escenas con movimiento
-vf "smartblur=lr=2.00:ls=-0.90:lt=-5.0:cr=0.5:cs=1.0:ct=1.5, eq=contrast=1.05:brightness=0.02:saturation=1"
smartblur=lr=1.00:ls=-0.70:lt=-3.0:cr=0.5:cs=1.0:ct=1.5 ← Nitidez más suave que la anterior.
- smartblur aplica una ligera nitidez y eq es para hacer algo más oscura la imagen.
-vf "hqdn3d=2:2:4:4, smartblur=lr=1.00:ls=-0.70:lt=-3.0:cr=0.5:cs=1.0:ct=1.5, eq=contrast=1.05:brightness=0.02:saturation=1"
Una combinación de los filtros hqdn3d, smartblur y eq.
Crear un vídeo a partir de varias imágenes.
ffmpeg -f image2 -framerate 12 -i img-%02d.jpg -s 720x576 video-fotos.mp4
Sintaxis:
Recodificar vídeo y audio, aplicando una serie de filtros para desentrelazar el vídeo, eliminar el logo de la cadena, recortar las bandas negras de arriba y abajo y escalar el vídeo de saĺida aplicando un ancho determinado, dejando que ffmpeg calcule el alto manteniendo la misma proporción.
ffmpeg -i input_video.ts -vf "yadif, removelogo=f=logo.png, crop=in_w-2*1:in_h-2*138, scale=1920:trunc(ow/a/2)*2" -c:v libx264 -b:v 3000000 -c:a libfaac -ac 2 -b:a 128000 propo1.mp4
Recodificar vídeo y audio, aplicando filtro para desentrelazar, escalar la salida aplicando un ancho determinado y dejando que ffmpeg calcule el alto manteniendo la proporción. Se usa el comando time para que al final nos informe del tiempo de duración de la codificación.
time ffmpeg -i video-entrada.ts -vf “yadif, scale=720:trunc(ow/a/2)*2” -c:v libx264 -b:v 1125000 -c:a libfdk_aac -b:a 128k video-salida.mp4
Recodificar vídeo y audio, aplicando un filtro para desentrelazar, también se escala la salida a un tamaño fijo para corregir el vídeo anamórfico de entrada. La imagen procedente de la emisión de TV es para pantallas 16:9, pero se trata de video anamórfico, el ancho está “comprimido”. En este caso es de 704x576 píxeles, respetando el mismo alto y proporción 1,78:1 se escala a 1024x576.
time ffmpeg -i video-entrada.ts -vf “yadif, scale=1024x576” -c:v libx264 -b:v 1120k -c:a libfdk_aac -b:a 128k video-salida.mp4
Recodificar audio AC3 5.1 de 6 canales en MP3 de 2 canales.
ffmpeg -i audio-entrada.ac3 -c:a libmp3lame -ar 48000 -ab 320k -ac 2 audio-salida.mp3
Recodificar audio DTS en AC3.
ffmpeg -i audio-entrada.dts -c:a ac3 -ac 6 -ab 448k audio-salida.ac3
Unir dos o más archivos de audio.
ffmpeg -i "concat:audio-1.mp3|..|audio-n.mp3" -c:a copy audio-salida.mp3
Cortar o extraer parde de un vídeo.
ffmpeg -ss 1 -t 3600 -i video-entrada.mp4 -c:v copy -c:a copy video-salida.mp4
Donde:
Grabar vídeo del escritorio con audio (Nota. Ver mejores opciones)
ffmpeg -f alsa -i plughw:0,0 -c:a mp3 -f X11grab -s 1920x1080 -r 25 -i :0.0 -s hd1080 -qscale 0 video-salida.mp4
Donde:
Añadir varias pistas de audio a un vídeo y definir el idioma de cada una.
ffmpeg -i video.mp4 -i audio1.m4a -i audio2.m4a -map 0:v -map 1:a -map 2:a -c copy -metadata:s:a:0 language=esp -metadata:s:a:1 language=tur salida.mp4
Por ejemplo:
time -p ffmpeg -i video-entrada.m2ts -i audio-spanish.m2ts -i audio-turkish.m2ts -map 0:v -map 1:a -map 2:a -c:v libx264 -b:v 2000k -c:a:0 copy -c:a:1 copy -metadata:s:a:0 language="spanish" -metadata:s:a:1 language="turkish" -threads 6 video-salida.mp4
Donde:
Para codificar, aplicar filtros, hacer pruebas y ver el resultado en VLC.
Por ejemplo: Aplicar filtros de vídeo y codificar. Formato de salida asf y redirigir la salida del comando hacia VLC.
ffmpeg -i video.mp4 -vf "filtros-de-video" -c:v libx264 -b:v 2000k -f asf | vlc -
2025 Alberto Picado