🛠 Serveur multimédia : Kodi, décodage 4K et accès GPU en conteneur
Objetivos
Transformar el Pi 4B en un centro multimedia: el VideoCore VI a 500 MHz decodifica H.265 4Kp60 y H.264 1080p60, la salida doble micro-HDMI muestra hasta 4K, y el controlador de código abierto Mesa V3D (compatible con Vulkan 1.2 desde 2022) también permite exponer la GPU a los contenedores. Instalarás Kodi y lanzarás un contenedor con acceso a la GPU.
Material
- Raspberry Pi 4B (se recomienda 4 GB o más), fuente de alimentación de 5.1 V 3 A
- Televisor con micro-HDMI o adaptador HDMI de calidad (se requieren 6 Gbps para 4Kp60)
- Disco USB 3.0 para la biblioteca ; sudo apt install docker.io
Código completo
# Option A - media center dedie : flasher LibreELEC (Kodi) avec Raspberry Pi Imager
# Verification : Lecture 4K HEVC fluide, menu en 60 i/s sur les deux ports micro-HDMI.
# Option B - Kodi/Docker avec GPU sur Raspberry Pi OS Bookworm :
sudo usermod -aG video "$USER"
ls -l /dev/dri # rendre visible card0 (V3D)
docker run -d --name kodi --restart unless-stopped \
--privileged --net host \
-v /dev:/dev -v /mnt/media:/data \
linuxserver/kodi
# Controles :
vcgencmd version # firmware a jour
vcgencmd measure_temp # < 70 degres en lecture 4K
Verificación esperada
Al reproducir un archivo 4K H.265, la CPU permanece por debajo del 30 % (todo es decodificado por la GPU), la salida de visualización es de 3840x2160 a 60 Hz en un puerto, y el segundo puede mostrar el escritorio en 1080p. Dentro del contenedor, ls /dev/dri muestra card0: la GPU es visible.
Errores frecuentes
- Adaptador micro-HDMI de baja calidad: el caso clásico de falta de imagen, se necesita uno certificado de 6 Gbps.
- Olvidar
/dev/drien el contenedor o el grupovideo: la GPU permanece invisible. - Sobrecalentamiento durante la reproducción prolongada en 4K: ventilar, el límite es de 85 grados.
- Presupuesto USB superado: máximo 1.2 A para los periféricos, se requiere un disco de 2.5 pulgadas con alimentación propia.
- Esperar 4Kp60 en los DOS puertos: la doble pantalla se limita a 4Kp30 en cada uno.
Otros tutoriales para esta placa
Ejemplos de código para esta placa
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython