Aceleración por hardware en Jellyfin: ¿transcodifica la GPU o la CPU?

Guía práctica para autohospedadores: usa Transcode Doctor para probar NVENC, QuickSync y VA-API con el ffmpeg de Jellyfin, aplicar los ajustes que funcionan y ver por qué se transcodifica cada reproducción.

Jellyfin no detecta tu tarjeta gráfica por sí solo. Eliges el método de aceleración y los códecs a mano en Dashboard → Playback → Transcoding, y una elección equivocada o un permiso que falta devuelven la transcodificación al procesador sin avisar. Sin error, sin aviso visible: solo una CPU caliente y unos ventiladores que se oyen desde el pasillo.

Transcode Doctor es un plugin de Jellyfin que elimina las conjeturas. Prueba lo que tu servidor puede hacer de verdad con el propio ffmpeg de Jellyfin, identifica el problema del entorno con la solución exacta, aplica los ajustes que han funcionado con un clic y explica en palabras sencillas por qué se transcodifica cada reproducción. Este tutorial recorre todo el ciclo en un servidor autohospedado.

Reproducción directa frente a transcodificación, en un párrafo

Si el cliente puede reproducir el archivo tal cual, Jellyfin lo transmite sin tocarlo (reproducción directa) y la CPU apenas se entera. Cuando no puede —el contenedor, el códec de vídeo, el códec de audio, los subtítulos, el HDR o un límite de bitrate se interponen—, Jellyfin transcodifica, y ese trabajo recae en la GPU o en la CPU. Configurar bien la aceleración por hardware es lo que mantiene barato ese segundo caso.

Requisitos previos

  • Jellyfin Server 12.2 o superior, con jellyfin-ffmpeg (la compilación de ffmpeg que se distribuye con Jellyfin).
  • Una tarjeta gráfica NVIDIA, Intel o AMD con su controlador, accesible por Jellyfin: para NVIDIA, un controlador con nvidia-smi; para Intel y AMD, un dispositivo de render /dev/dri que el usuario de Jellyfin pueda abrir, normalmente a través del grupo render. En Docker, el dispositivo debe pasarse al contenedor.
  • Una cuenta de MediaLab Works con una licencia que cubra el plugin (suscripción, licencia de por vida dentro de su ventana de actualizaciones, el pack de Jellyfin o la prueba gratuita de 30 días).

Paso 1 — Instalar y activar el plugin

Instálalo desde tu repositorio privado de plugins (Dashboard → Plugins → Repositories y luego el catálogo), desde el catálogo público o manualmente desde el zip. La guía de usuario tiene las rutas exactas para instalaciones por paquete, Docker y Windows. Tras reiniciar Jellyfin, abre la página del plugin y haz clic en License, pega tu clave y pulsa Activate with key, o inicia la prueba gratuita de 30 días desde la misma página.

Paso 2 — Ejecutar el diagnóstico de aceleración por hardware

Abre Transcode Doctor en el menú del dashboard y haz clic en Run the tests. El plugin:

  • comprueba ffmpeg, la tarjeta NVIDIA y los dispositivos /dev/dri con los permisos del proceso de Jellyfin;
  • genera unos cuantos clips de prueba cortos con ffmpeg en la carpeta de caché de Jellyfin (transcode-doctor/); tus medios no se tocan;
  • prueba cada método —NVIDIA NVENC, Intel QuickSync y VA-API (Intel/AMD)— al decodificar H.264, HEVC, HEVC 10 bits, MPEG-2, VP9 y AV1 y al codificar H.264 y HEVC, con la velocidad medida.

Cada prueba tarda como mucho un minuto. La tabla muestra qué funciona y a qué velocidad; esa velocidad medida es el dato que de verdad importa, no el nombre comercial de la caja.

Paso 3 — Leer el problema y aplicar la solución exacta

Si algo bloquea la aceleración, la página indica qué es y cómo solucionarlo. El caso más habitual es Jellyfin sin acceso a /dev/dri/renderD128. El plugin muestra el comando que hay que ejecutar, que añade el usuario de Jellyfin al grupo render:

sudo usermod -aG render jellyfin

Reinicia Jellyfin y vuelve a ejecutar las pruebas. Otros casos que el plugin señala son una tarjeta NVIDIA cuyo controlador no responde y la ausencia de ffmpeg en la ruta configurada. En Docker, el dispositivo de la GPU debe pasarse al contenedor antes de que nada de esto pueda funcionar.

Paso 4 — Aplicar la recomendación (y saber cómo deshacerla)

Cuando terminan las pruebas, la página muestra el método que ha superado más pruebas, los códecs de decodificación, la codificación por hardware y aproximadamente cuántas transcodificaciones 1080p pueden ejecutarse a la vez, junto a tus ajustes actuales.

Apply the settings escribe la recomendación en Dashboard → Playback → Transcoding: el método de aceleración, los códecs de decodificación por hardware que han funcionado, la decodificación HEVC 10 bits, la codificación por hardware y el dispositivo de VA-API / QuickSync. Nada cambia hasta que haces clic. La decodificación VC-1, VP8 y MPEG-4 no se puede probar, así que se queda como la tengas; la codificación HEVC se desactiva si ha fallado y el plugin nunca la activa.

Antes de aplicar, el plugin guarda tus ajustes de transcodificación anteriores. Restore the previous settings los restaura exactamente, que es lo que quieres si una actualización del controlador o de Jellyfin cambia el panorama. También puedes editar los ajustes a mano en Jellyfin siempre que quieras.

Paso 5 — Averiguar por qué se transcodifica cada reproducción

Esta es la parte que ahorra más tiempo después. Why it transcodes lista las reproducciones transcodificadas recientes —cuándo, quién, qué— con los motivos de Jellyfin explicados en palabras sencillas y qué se puede hacer, además de si el trabajo lo hizo la GPU o la CPU. Se conservan hasta 500 reproducciones.

Motivos típicos que verás:

  • Subtítulos PGS incrustados. Los subtítulos basados en imagen deben dibujarse en los fotogramas de vídeo, así que el flujo se recodifica. Una pista de subtítulos basada en texto lo evita.
  • HDR en una pantalla SDR. El tone mapping es una transcodificación por definición, a menos que el cliente gestione el HDR por sí mismo.
  • Códec de audio. Puede que el cliente acepte el vídeo pero no la pista de audio, lo que igualmente obliga a transcodificar el flujo.
  • El límite de bitrate de la app. Un cliente configurado por debajo del bitrate del archivo pide un flujo de menor calidad.

"CPU (GPU not used)" en una reproducción con la aceleración configurada significa que la tarjeta no se usó en esa concreta; merece la pena revisar la combinación de método y códec.

Paso 6 — Dejar que el registro de actividad vigile el uso de la CPU

Cuando una transcodificación de vídeo se ejecuta en la CPU aunque la aceleración por hardware esté configurada, el plugin escribe una entrada en el registro de actividad de Jellyfin. La alerta está activada por defecto y solo escribe en local. Es el aviso temprano más barato que puedes tener tras una actualización del controlador o de Jellyfin.

Consejos y resolución de problemas

  • Vuelve a ejecutar las pruebas tras cualquier cambio de controlador, de Jellyfin o de hardware. Un método que funcionó el mes pasado puede fallar tras una actualización.
  • El diagnóstico indica que no se encuentra ffmpeg: instala jellyfin-ffmpeg, indica su ruta en el dashboard y vuelve a ejecutar las pruebas.
  • Docker: el dispositivo de render debe estar mapeado en el contenedor; los arreglos de permisos en el host no sirven de nada si el dispositivo nunca llega a Jellyfin.
  • Notas de plataforma: las comprobaciones están orientadas a Linux (/dev/dri, nvidia-smi, el grupo render). NVIDIA NVENC está verificado en una Quadro M2000 real; Intel QSV y VA-API los detecta y prueba el plugin, pero el desarrollador no los ha probado en hardware real. AMD AMF, Apple VideoToolbox y Rockchip no son compatibles.
  • Privacidad: el plugin no descarga archivos de prueba —los clips se generan en local— y nada de lo que almacena sale del servidor. El diagnóstico solo se ejecuta cuando pulsas el botón; consulta Licensing and privacy in our plugins.
  • Actualizaciones: mantén tu repositorio privado de plugins para que Jellyfin solo ofrezca las versiones que permite tu licencia, y usa Roll back to x.y.z en la página License si una actualización da problemas. Las notas de la versión están en el changelog.

Conclusión

La aceleración por hardware en Jellyfin no es una casilla que puedas configurar a ciegas: el método, los códecs y los permisos tienen que encajar, y cuando no lo hacen, el único síntoma es una CPU ocupada. Transcode Doctor lo convierte en una respuesta medida: prueba con el propio ffmpeg de Jellyfin, corrige lo que de verdad está roto, aplica lo que ha funcionado con un solo clic y una vuelta atrás también con un clic, y lee el motivo de cada transcodificación. Si te atascas, la base de conocimiento y las FAQ son un buen siguiente paso, o contacta con nosotros con el informe de diagnóstico.

Esta publicación se redactó con ayuda de IA a partir de la documentación de nuestros productos o de las fuentes indicadas y se revisó automáticamente antes de publicarse.

Sigue leyendo

¿Usas Emby, Jellyfin o Nextcloud?

Nuestros plugins y apps añaden TV en directo, subtítulos, registro de usuarios y seguridad a tu propio servidor, con prueba gratuita.