Affichage dynamique avec un Raspberry sous Bullseye

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

Écran d’accueil de raspi-config
On choisit la ligne S5 Boot / Auto Login
Puis la ligne B2 Console Autologin

É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/

Pouf, les vidéos sont envoyées dans le Raspberry Pi Zero via le réseau

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 avec
nano 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 petit
chmod +x script-affichage-dynamique.sh

Et on peut tester avec
bash 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

L’attribut alt de cette image est vide, son nom de fichier est Capture-decran-du-2022-11-01-00-32-48.png.
Écran d’accueil de raspi-config
L’attribut alt de cette image est vide, son nom de fichier est Capture-decran-du-2022-11-01-00-33-34.png.
On choisit la ligne S5 Boot / Auto Login
L’attribut alt de cette image est vide, son nom de fichier est Capture-decran-du-2022-11-01-00-35-02.png.
Puis la ligne B2 Console Autologin

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 … 🤭

Prototype d’affichage dynamique avec un écran de PC portable de récupération

A propos de Alban

Papa de 4 enfants étant lui-même resté un enfant. Diététicien-Nutritionniste tombé par obligation dans l'informatique à 22 ans pour le boulot et s'étant "un peu" pris au jeu ... Pas un génie de l'informatique (loin de là), mais intéressé et carrément orienté Linux et entraide. Lassé de l'évolution du Monde de la Santé dans lequel les patients sont de plus en plus à traiter comme des clients (je suis un soignant !!!), j'ai opté pour une reconversion en repartant en Alternance... à... 44 ans D'abord dans le cadre d'un BTS SIO option SISR (Solutions d’Infrastructure, Systèmes et Réseaux) en Septembre 2019. Après l’obtention du BTS (16,57/20 ;-) ), j'ai décidé de poursuivre (toujours en alternance) en Bac+3 avec un Bachelor Concepteur de Systèmes d'Information. Depuis septembre 2022, je suis donc encore plus vieux, mais un jeune diplômé "Administrateur Systèmes et Réseaux". (Bac+3 obtenu avec 16,40/20) Citation personnelle : « Si la réussite facile flatte l’égo, C’est de la persévérance que nait le plaisir de la réussite. »

3 commentaires à propos de “Affichage dynamique avec un Raspberry sous Bullseye”

  1. 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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.