Article faisant suite et écho à « Affichage dynamique avec un Raspberry » en raison des évolutions de Debian 11 obligeant à des adaptations.
L’idée reste la même que pour l’article précédent : diffuser des vidéos de présentation dans un magasin ou dans une salle d’attente avec juste un RpiZero et une TV.
Après avoir suivi l’excellent article Installation de RaspberryPiOS Lite, on va pouvoir passer aux choses sérieuses.
Installations de base – Préambule
Comme souvent, par principe, on débute par une mise à jour complète avec
sudo apt update && sudo apt upgrade -y
Ensuite, on demande à passer en Autologin
avec raspi-config
Évidemment, on installe VLC puisque OMXplayer n’est plus disponible (incompatibilité) sous Bullseye. Note : L’installation de VLC est un peu longue sur un Rpi0.
sudo apt install vlc -y
Bien sûr, il faut créer le dossier dans lequel seront placées les vidéos :mkdir /home/alban/videos
Pour mes tests, je récupère des vidéos sur Pexels. Je prends des mp4 en 1920×1080 (j’ai des erreurs si je prends plus grand, mais je rappelle que je bosse sur un RpiZero).
Je les injecte ensuite par le biais de rsync à l’aide d’une nouvelle fenêtre de Terminal.
Chez moi, cela donne ça (pour exemple) :rsync -avz /home/alban/videos_pexels/*.mp4 alban@rpi0video.local:/home/alban/videos/
On peut donc tester de lire une vidéo pour vérifier l’installation de vlc.
Quoi ??? Il faut que je vous donne la ligne à taper ???
Pffff … Faut vraiment tout faire.
On dirait mes enfants qui, malgré leurs âges, m’énervent toujours autant.
Hein ? Tout le monde m’énerve de toute façon ?
Bon, OK, CéPaFo …
Pour information, nous sommes sur un Raspberry Pi Zero tournant avec RaspberryPiOS Lite c’est à dire sans interface graphique ; on va donc utiliser cvlc au lieu de vlc.
Ce qui donne, par exemple :cvlc /home/alban/videos/02_pexels.mp4
(Je renomme mes vidéos en débutant par un nombre ; c’est utile pour la suite)
OK, ça fonctionne !
(Si, si, chez moi, ça fonctionne)
Écriture d’un script d’affichage dynamique
L’idée est d’utiliser VLC pour lire des vidéos placées dans un dossier.
Je génère une liste de lecture en m3u en listant le dossier /home/alban/videos et en injectant le résultat dans un fichier nommé list/m3u puis je lis cette liste de lecture avec vlc.
Créer un fichier script-affichage-dynamique.sh avecnano script-affichage-dynamique.sh
Et collez y le script que voilà :
#!/bin/bash # Chemin du dossier des vidéos VIDEOPATH="/home/alban/videos" # Lecteur vidéo à utiliser SERVICE="vlc" # On génère la liste de lecture ls $VIDEOPATH/*.mp4 > list.m3u entry="list.m3u" # Boucle while du programme while true; do if ps ax | grep -v grep | grep $SERVICE > /dev/null then sleep 100; else clear cvlc --fullscreen --no-video-title-show --no-random --loop $entry > /dev/null fi done
Explications :
Je définis le dossier (question d’habitude ; si je change de dossier, je n’ai qu’à changer à cet endroit et non partout dans le script),
Je définis le service,
Génération d’une liste de lecture en parsant le dossier
On surveille si le service tourne,
On lance VLC en mode console (cvlc) avec les bonne options (celles-ci sont celles que je désirais avoir ; vous avez le droit de faire autrement).
Ensuite, un petitchmod +x script-affichage-dynamique.sh
Et on peut tester avecbash script-affichage-dynamique.sh
Ça fonctionne ?
Chez moi, oui 😉
Lancement du script au démarrage.
Pour lancer le script au démarrage, on pourrait passer par rc.local, mais j’avais envie de faire avec crontab.
On lance donc un crontab -e
(choisissez nano si on vous pose la question)
Et on ajoute la ligne@reboot bash /home/alban/script-affichage-dynamique.sh
Ensuite, on demande à passer en Autologin
avec raspi-config
Comme raspi-config va nous demander s on veut un reboot, on va dire oui et cela validera que tout fonctionne avec autolog et lecture automatique des vidéos dès le démarrage.
On dirait que la rédaction de cet article est plutôt bien faite 😉
Conclusion
Bon, la suite sera la mise en place d’un HotSpot WiFi grâce à une clef WiFi qui m’a été donnée (merci Annaïck) voire d’un serveur FTP pour balancer les vidéos en FTP plutôt qu’avec rsync.
Mais ça sera un autre jour car il faudrait que je pense à aller dormir à un moment … 🤭
Bonjour,
merci pour la super mise à jour du tuto.
J’aimerais pouvoir créer des horaires de diffusion car l’écran se sera pas allumé en continu (la nuit par exemple). En tant que débutant, j’ai tenté des commandes , afin de les intégrer dans Cron ensuite, mais vlc semble ne pas vouloir s’arrêter. J’ai tester les commandes pkill, killall sur le script et sur vlc mais rien à faire, vlc se relance dans la foulée.
Avez-vous une suggestion pour résoudre mon problème ?
Croosti
Bonjour,
Très bon tuto mais n’ayant pas de magasin ni de salle d’attente, je me demande si cela va fonctionner chez moi ?
Yo Yo 😉
Du coup, c’est mort ; c’est LE prérequis 😀
Bonjour,
merci pour le tuto.
Peut-on faire la même chose, mais à la place de fichiers MP4, le faire avec un flux RTSP ?
merci bien.
Salut,
A priori, il suffit d’adapter le script pour ne pas utiliser de liste de lecture.
Donc supprimer la partie pour la générer,
Puis modifier la ligne de commande avec un truc du genre :
cvlc --fullscreen --no-video-title-show --no-random --loop rtsp://adresse_IP:port/flux
++