Mi servidor Plex llevaba meses quejándose. Tres streams simultáneos y el pobre Xeon E3-1230v3 se ponía a 80% de CPU, el ventilador sonaba como un reactor nuclear y empezaban los tirones. Si alguien intentaba ver una película 4K, ni te cuento.
Sabía que la solución era transcodificación por hardware, pero tardé semanas en configurarlo bien. Internet está lleno de tutoriales que asumen que sabes lo que haces o que directamente no funcionan. Este post es lo que yo habría querido leer hace dos meses.
Por qué importa la transcodificación hardware#
Cuando reproduces un vídeo en Plex, si el cliente no soporta el códec original, Plex tiene que convertirlo on-the-fly. Eso consume un montón de CPU. Un stream 4K HEVC puede comerse fácilmente 30-40% de un procesador moderno.
La transcodificación por hardware delega ese trabajo a la GPU. Intel QuickSync, NVIDIA NVENC o AMD VCE pueden hacer lo mismo usando una fracción de la potencia. Mi setup actual:
- CPU: 8-15% con 4 streams activos (antes: 80% con 2)
- Temperatura: 45°C en load (antes: 72°C)
- Consumo: -35W aprox. (no lo mido científicamente pero se nota en la factura)
La diferencia se nota. Mucho.
Hardware compatible#
No todas las GPUs sirven. Necesitas:
Intel QuickSync (lo que yo uso):
- iGPU integrada en procesadores Intel desde 2nd gen (Sandy Bridge) en adelante
- Los mejores: 7th gen (Kaby Lake) o superior
- Soporta H.264, HEVC, VP9
- Mi setup: i3-8100 con UHD Graphics 630 (perfecto para Plex)
NVIDIA NVENC:
- GTX 1050 o superior (las GTX 900 tienen límites de streams)
- P2000/P4000 (Quadro) si necesitas muchos streams simultáneos
- Soporta H.264, HEVC
- Cuidado: las GPUs consumer tienen límite de 2-3 streams (hackeable pero ojo)
AMD VCE:
- RX 400 series en adelante
- Funciona pero el soporte en Linux es más tosco
- No lo he probado personalmente
Yo elegí Intel porque tenía un i3-8100 sin usar y la iGPU hace el trabajo perfecto sin tarjeta adicional. Menos cables, menos consumo, menos ruido.
Mi setup: Plex en Docker con QuickSync#
Mi Plex corre en un container Docker sobre Debian 11. La clave está en darle acceso al hardware de vídeo del host.
1. Drivers y permisos en el host#
Primero asegúrate de que el kernel detecta la iGPU:
| |
Deberías ver algo como:
| |
Si no aparece renderD128, hay un problema con los drivers. En Debian/Ubuntu:
| |
Luego verifica que funciona:
| |
Debería listar los perfiles soportados (H264, HEVC, etc.). Si da error, busca en Google el mensaje exacto porque cada iGPU tiene sus manías.
Añade tu usuario al grupo render y video:
| |
Cierra sesión y vuelve a entrar para que aplique.
2. Docker compose con acceso a GPU#
Mi docker-compose.yml de Plex:
| |
La magia está en devices: - /dev/dri:/dev/dri. Eso pasa el hardware de vídeo al container.
Si usas NVIDIA, necesitas el runtime nvidia-docker. Eso lo dejo para otro post porque es un infierno aparte.
3. Activar transcodificación en Plex#
Arranca el container:
| |
Entra en la web de Plex (http://tuserver:32400/web), ve a:
Configuración → Transcodificador
- Usar aceleración por hardware: Activar
- Calidad del transcodificador: Automatic (yo uso Prefer higher speed para ahorrar CPU)
Guarda y reinicia Plex:
| |
4. Comprobar que funciona#
Reproduce algo que requiera transcodificación (elige calidad más baja manualmente en el player). Luego:
| |
Si no tienes intel_gpu_top:
| |
Deberías ver actividad en “Video” o “VideoEnhance”. Si está todo en 0%, no está funcionando.
También puedes mirar los logs de Plex:
| |
Si ves líneas tipo:
| |
Vas bien.
Problemas que me encontré#
“Conversión fallida” constante#
Plex decía que activaba HW pero luego fallaba. Solución: permisos. El proceso de Plex corría como usuario 1000 pero no tenía acceso a /dev/dri. Asegúrate de que el PUID/PGID en docker-compose coincide con un usuario en el grupo render.
La GPU no aparece en /dev/dri#
En mi caso, había deshabilitado la iGPU en la BIOS porque usaba una GPU dedicada. Tuve que:
- Habilitar iGPU en BIOS
- Configurar “IGFX Multi-Monitor” o similar para que coexistan ambas
- Reiniciar
Streams H.265/HEVC no transcodifican#
La iGPU de 6th gen Intel (Skylake) y anteriores no soporta HEVC por hardware. Necesitas mínimo 7th gen (Kaby Lake). Comprueba las specs de tu procesador en ark.intel.com.
intel_gpu_top da error de permisos#
| |
Esto es temporal. Si quieres que persista, añade una regla udev.
Resultados reales#
Antes (CPU transcoding):
- 1 stream 1080p HEVC → 4K: 35% CPU
- 2 streams: 70% CPU, ventilador a tope
- 3 streams: throttling, tirones
Después (GPU transcoding):
- 1 stream: 8% CPU
- 4 streams simultáneos: 15% CPU
- Sin tirones, sin ruido
Puedo dejar el servidor corriendo streams toda la noche y ni me entero. Antes era imposible.
Alternativas si tu CPU no tiene iGPU#
Si tienes un Xeon o un Ryzen sin gráficos integrados:
Opción 1: GPU dedicada barata
- NVIDIA P400 o P600 (~70-100€ usada)
- Bajo consumo, sin ventilador, perfecta para Plex
- Busca en eBay
Opción 2: Cambiar CPU
- Un i3-8100 cuesta menos de 50€ de segunda mano
- iGPU incluida, suficiente para Plex
- Si tu placa soporta 8th gen Intel, puede salir más barato que comprar GPU
Yo fui por la opción 2 y estoy contento. El i3 es más que suficiente para Plex y otras tareas del servidor.
Métricas de calidad#
La transcodificación hardware es más rápida pero hay un debate eterno sobre si la calidad es peor. En mi experiencia con QuickSync (UHD 630):
- Películas de acción/CGI: no noto diferencia
- Escenas oscuras/gradientes: a veces se ven bandas de color (banding)
- Anime/animación: impecable
Si eres muy exigente, ajusta “Calidad del transcodificador” a “Prefer higher quality” en Plex. Usa más GPU pero el resultado mejora.
Para el 95% de los casos, la diferencia es imperceptible. Y si alguien se queja, le dices que reproduzca el original sin transcodificar. Problema resuelto.
Consumo energético#
Mi servidor consume unos 45W en idle con el i3-8100. Reproduciendo 3 streams con transcodificación hardware: 52W. Con CPU pura antes llegaba a 85W.
No voy a recuperar la inversión en electricidad este siglo, pero el ahorro en ruido y temperatura vale cada euro.
Siguientes pasos#
Con la transcodificación funcionando, ahora puedo:
- Añadir más usuarios remotos sin miedo
- Almacenar todo en HEVC (ahorra espacio, transcodifica sin problemas)
- Explorar HDR tone mapping (QuickSync lo soporta desde 10th gen)
Si tu servidor Plex sufre con la CPU al 100%, prueba esto. Es la diferencia entre un servidor que funciona y uno que realmente mola.
Enlaces útiles#
- Plex Hardware Transcoding - Documentación oficial
- Intel QuickSync specs por generación
- r/Plex wiki sobre HW transcoding
Cualquier duda, pregunta en los comentarios. Si quieres que haga una guía sobre NVIDIA NVENC, dímelo.