🛠 Serveur multimédia HDMI avec le GPU VideoCore IV
Objectifs
Transformer le Raspberry Pi 3 A+ en lecteur multimédia de salon : vidéo 1080p30 décodée en matériel par le GPU VideoCore IV (H.264 et MPEG-4, décodage et encodage 1080p30, OpenGL ES 1.1/2.0), sortie HDMI full-size — plus la vidéo composite sur le jack 4 pôles pour les téléviseurs anciens. Le tout en WiFi, sans Ethernet.
Matériel
- Raspberry Pi 3 A+, alim 5 V/2,5 A, TV en HDMI (ou jack composite)
- microSD ≥ 16 Go ; flux vidéo via WiFi depuis un partage réseau
- 512 MB de RAM partagée CPU/GPU : arbitrage
gpu_memindispensable - Alternative « appliance » : image LibreELEC dédiée Kodi
Code complet
# 1) Allouer la mémoire GPU (128 Mo suffisent pour du 1080p ; au-delà,
# l'OS n'a plus que 384 Mo sur les 512 Mo partagés)
echo 'gpu_mem=128' | sudo tee -a /boot/firmware/config.txt
# 2) Lecteur avec décodage matériel H.264
sudo apt install -y omxplayer mpv
omxplayer --horizon 0 video_1080p.mp4 # décodage GPU VideoCore
mpv --hwdec=mmal video_1080p.mp4 # ou lecture via Kodi/mpv
# 3) Montage du NAS en WiFi (seul réseau de la carte)
sudo mkdir -p /mnt/nas && sudo mount -t nfs nas:/videos /mnt/nas
# 4) Sortie composite (téléviseur cathodique) : ajouter au config.txt
# sdtv_mode=pal puis redémarrer ; l'HDMI reste disponible.
sudo reboot
Vérification attendue
omxplayer lit un fichier H.264 1080p30 sans à-coups pendant que watch vcgencmd get_throttled reste à 0x0 ; le CPU (4× A53) reste sous 40 % grâce au décodage GPU. L'audio sort sur le jack 4 pôles ou l'HDMI selon le réglage.
Erreurs fréquentes
- Faire tourner un navigateur + Kodi de front : avec 512 MB de RAM, l'OS sature vite (swap/OOM) — choisir un usage unique, ou LibreELEC.
gpu_mem=256par copier-coller d'un tuto Pi 4 : l'OS n'a plus assez de RAM sur cette carte ; rester à 96–128 Mo.- Attendre du 4K/H.265 : le VideoCore IV ne décode que H.264/MPEG-4 en 1080p30 ; le HEVC devra être décodé par les CPU, en vain.
- Flux réseau haché : le WiFi 802.11ac est bon mais capricieux derrière un meuble — rapprocher la box plutôt que monter la puissance.
- >
Autres tutoriels pour cette carte
Exemples de code pour cette carte
led_blink.pyPythonbutton_led.pyPythonservo_sweep.pyPythondht_temp.pyPythonoled_i2c.pyPythonmcp3008_read.pyPython