32blogby StudioMitsu

FFmpeg con aceleración GPU: NVENC, QSV y AMF comparados

Guía completa para usar los codificadores GPU NVIDIA NVENC, Intel QSV y AMD AMF con FFmpeg. Configuración, comandos y comparaciones de rendimiento reales en un solo lugar.

10 min read
FFmpegGPUNVENCQSVvideo-encodinghardware acceleration
Contenido

Un solo video 4K solía tardar 30 minutos en codificarse. Cambiar a codificación GPU lo redujo a 3 minutos. Esa fue mi experiencia, y cambió por completo cómo manejo el video.

FFmpeg usa la CPU por defecto. La codificación por CPU produce excelente calidad pero es lenta. Los codificadores GPU — NVENC de NVIDIA, QSV (Quick Sync Video) de Intel y AMF de AMD — sacrifican algo de margen de calidad por ganancias dramáticas de velocidad. Esta guía cubre cómo configurar cada uno, los comandos que realmente necesitas, y una comparación de rendimiento real para ayudarte a decidir cuál se adapta a tu flujo de trabajo.

Los límites de la codificación por CPU

Para entender por qué importa la codificación GPU, ayuda saber qué hace lenta la codificación por CPU.

Una CPU es un procesador de propósito general. Incluso los chips de gama alta alcanzan como máximo unas pocas docenas de núcleos. La codificación de video es una carga de trabajo masivamente paralela, y procesarla núcleo por núcleo lleva tiempo. Ejecutar x264 con el preset slow en un clip 4K puede tardar de 3 a 5 veces más que la duración real del video — eso no es inusual.

Las GPUs están construidas de forma diferente. Tienen miles de núcleos shader optimizados para computación paralela. Los codificadores GPU como NVENC van más allá descargando la compresión a silicio dedicado — un motor de codificación construido directamente en el chip — que opera independientemente de los núcleos shader y el uso de CPU.

La contrapartida es la eficiencia de compresión. El hardware de codificación dedicado ejecuta una versión simplificada del algoritmo de compresión comparado con lo que un codificador CPU puede ejecutar. Al mismo bitrate, la codificación por CPU generalmente gana en calidad. Cuánto importa esto depende de tu caso de uso — más sobre eso en una sección posterior.

Comparando los tres codificadores GPU

Aquí tienes una referencia rápida de lo que soporta cada codificador y dónde funciona.

CodificadorFabricanteHardware objetivoNombres de códec en FFmpeg
NVENCNVIDIAGeForce GTX 16xx+, RTX 20xx+h264_nvenc / hevc_nvenc / av1_nvenc
QSVInteliGPU (Gen 6+), Arc dGPUh264_qsv / hevc_qsv / av1_qsv
AMFAMDRadeon RX 5000+h264_amf / hevc_amf / av1_amf

Los tres funcionan en motores de codificación dedicados y dejan los núcleos de CPU libres para otro trabajo. Si tienes tanto una CPU Intel con gráficos integrados como una GPU NVIDIA dedicada, puedes ejecutar ambos codificadores simultáneamente en tareas separadas.

El soporte de codificación AV1 tiene requisitos de hardware que vale la pena mencionar: se necesitan NVIDIA RTX 4000+, Intel Arc y AMD RX 7000+. Las GPUs más antiguas están limitadas a H.264 y H.265.

NVIDIA NVENC: Configuración y uso

Verificar soporte

Comprueba si tu compilación de FFmpeg incluye NVENC:

bash
ffmpeg -encoders | grep nvenc

Salida esperada:

bash
 V....D h264_nvenc           NVIDIA NVENC H.264 encoder (codec h264)
 V....D hevc_nvenc           NVIDIA NVENC hevc encoder (codec hevc)
 V....D av1_nvenc            NVIDIA NVENC av1 encoder (codec av1)

Si no aparece nada, o la compilación de FFmpeg no tiene soporte NVENC o tu driver NVIDIA está desactualizado. Actualiza a la versión 550 o posterior del driver.

Codificación H.264 NVENC

bash
ffmpeg -i input.mp4 \
  -c:v h264_nvenc \
  -preset p4 \
  -cq 23 \
  -b:v 0 \
  -c:a copy \
  output_nvenc_h264.mp4

Desglose de opciones:

  • -c:v h264_nvenc — selecciona el codificador NVENC H.264
  • -preset p4 — equilibrio calidad/velocidad de p1 (más rápido) a p7 (mejor calidad)
  • -cq 23 — modo de calidad constante; valores más bajos significan mayor calidad (18–28 es el rango práctico)
  • -b:v 0 — necesario para activar el modo CQ deshabilitando un bitrate objetivo

Codificación H.265 (HEVC) NVENC

Cuando necesitas archivos más pequeños a calidad equivalente, H.265 reduce el tamaño del archivo en aproximadamente un 40–50% comparado con H.264.

bash
ffmpeg -i input.mp4 \
  -c:v hevc_nvenc \
  -preset p5 \
  -cq 28 \
  -tag:v hvc1 \
  -c:a copy \
  output_nvenc_hevc.mp4

La bandera -tag:v hvc1 mejora la compatibilidad de reproducción en dispositivos Apple (iPhone, Mac, Apple TV).

Límites de sesiones en GPUs GeForce

Las GPUs GeForce de consumo limitan las sesiones NVENC simultáneas a tres (sin parches de driver de terceros). Las tarjetas Quadro y RTX Professional no tienen tal límite. Si estás ejecutando codificaciones por lotes en múltiples procesos FFmpeg, ten esto en cuenta.

Intel QSV: Configuración y uso

Verificar soporte

bash
ffmpeg -encoders | grep qsv

En Linux, QSV requiere el driver Intel Media VA. Instálalo en Ubuntu con:

bash
sudo apt install intel-media-va-driver-non-free vainfo
vainfo

vainfo debería listar los perfiles de codificación/decodificación soportados. Si devuelve errores, el driver falta o tu kernel no reconoce la iGPU.

Codificación H.264 QSV

bash
ffmpeg -i input.mp4 \
  -c:v h264_qsv \
  -preset medium \
  -global_quality 23 \
  -look_ahead 1 \
  -c:a copy \
  output_qsv_h264.mp4
  • -preset medium — QSV usa veryfast / faster / fast / medium / slow / veryslow
  • -global_quality 23 — el equivalente de CRF en QSV; controla el nivel de calidad
  • -look_ahead 1 — habilita el búfer de anticipación para mejorar la calidad con un ligero costo de velocidad

QSV es la mejor opción cuando no tienes GPU dedicada. Los gráficos integrados de Intel manejan la codificación con bajo consumo de energía, lo cual importa en portátiles y máquinas de formato compacto sin ventilador.

AMD AMF: Configuración y uso

Verificar soporte

bash
ffmpeg -encoders | grep amf

En Windows, AMF funciona en cuanto se instala el driver Radeon — no se requieren pasos adicionales. En Linux, el soporte de AMF es limitado; la alternativa habitual es h264_vaapi o hevc_vaapi a través del driver Mesa.

Codificación H.264 AMF

bash
ffmpeg -i input.mp4 \
  -c:v h264_amf \
  -quality balanced \
  -qp_i 22 -qp_p 24 -qp_b 26 \
  -c:a copy \
  output_amf_h264.mp4
  • -quality balanced — preset de AMF: speed / balanced / quality
  • -qp_i / -qp_p / -qp_b — parámetros de cuantización por tipo de fotograma para I, P y B frames

AMF actualmente va por detrás de NVENC y QSV en eficiencia de compresión. AMD lo está mejorando con cada generación de GPU, pero el manejo limitado de B-frames mantiene la calidad general por detrás. AMF es adecuado para captura de juegos y streaming en tiempo real; para archivado o masterización no es la primera opción.

Compromisos de calidad vs. velocidad

La desventaja central de la codificación GPU es que el silicio dedicado omite o simplifica los costosos pasos de compresión que realizan los codificadores CPU — estimación de movimiento avanzada, particionamiento exhaustivo de macrobloques y análisis multipasada. Al mismo valor CQ/QP, un codificador GPU producirá un archivo más grande o menor calidad visual que su contraparte CPU.

Una guía práctica de decisión:

Caso de usoCodificador recomendado
Captura de juegos en tiempo real / streamingNVENC / QSV (prioridad velocidad)
Transcodificación para subida a YouTubeNVENC p5–p6 / QSV slow (equilibrado)
Creación de master de archivadox264 / x265 slow (prioridad calidad)
Compresión de rip de Blu-rayx265 veryslow / SVT-AV1 (prioridad calidad)
Conversión por lotes masivaNVENC / QSV (prioridad rendimiento)

Para codificación AV1 de alta eficiencia en CPU, consulta la guía de configuración óptima FFmpeg v8 + SVT-AV1.

Comparación de rendimiento

Los siguientes números provienen de codificar un clip fuente único 4K 30fps (10 minutos) en Windows 11 con un Core i9-13900K, RTX 4080 y 32 GB de RAM.

CodificadorPresetTiempo de codificaciónTamaño de salidaPuntuación VMAF
x264slow28m 14s2.1 GB94.2
x265slow41m 03s1.2 GB94.8
h264_nvencp52m 41s2.6 GB91.3
hevc_nvencp52m 58s1.5 GB91.7
h264_qsvmedium3m 22s2.8 GB90.1
h264_amfbalanced3m 08s2.9 GB89.4

VMAF es la métrica de calidad perceptual de Netflix (0–100, mayor es mejor). Estos son números de referencia solamente. Tus resultados variarán significativamente según el contenido fuente y la generación de GPU.

Para hacer benchmark de tu propio sistema, añade -benchmark a cualquier comando FFmpeg:

bash
ffmpeg -i input.mp4 -c:v h264_nvenc -preset p5 -cq 23 -b:v 0 -c:a copy output.mp4 -benchmark

La bandera imprime el tiempo de CPU y el tiempo del sistema al final de la ejecución. La velocidad de codificación en múltiplos de tiempo real aparece en el log como speed=.

Conclusión

La codificación GPU tiene más sentido cuando la velocidad importa más que la máxima eficiencia de compresión. NVENC es la opción más sólida en general — lidera en calidad, velocidad y soporte del ecosistema. QSV se gana su lugar en portátiles y máquinas con restricciones de energía donde una GPU dedicada no es una opción. AMF funciona bien para captura de juegos y streaming en Windows, aunque todavía va por detrás de los otros en calidad de compresión.

Para archivado a largo plazo y masterización profesional, la codificación por CPU sigue siendo la respuesta correcta. Pero para conversión por lotes, grabación en tiempo real y cualquier situación donde el rendimiento importa, cambiar a un codificador GPU es uno de los cambios de mayor impacto que puedes hacer en tu flujo de trabajo con FFmpeg.

Si aún no has instalado FFmpeg, empieza con la guía de instalación de FFmpeg.