Bonjour à toutes et tous,
Je cherche à faire que mon Pi3B lance au démarrage (en mode graphique) en plein écran en boucle une vidéo avec vlc. Mon idée était de faire exécuter au démarrage la commande "vlc file:///chemin/fichier -fL --no-audio".
Pour créer ce démon, j'ai testé ces 4 méthodes, aucune n'a fonctionné :
https://www.malekal.com/linux-executer- ... demarrage/
J'avais aussi trouvé cette méthode basée sur omxplayer, mais j'ai cru comprendre qu'omx n'était plus supporté, et en essayant de modifier le code pour remplacer omx par vlc n'a pas fonctionné non plus :
https://brickodeurs.fr/wiki/comment-tra ... ur-boucle/
J'avoue être à court d'idées. En avez-vous pour moi ?
D'avance merci beaucoup,
Morgan.
PS : mon Raspbian :
pi@raspberrypi:~ $ cat /etc/*release
PRETTY_NAME="Raspbian GNU/Linux 11 (bullseye)"
NAME="Raspbian GNU/Linux"
VERSION_ID="11"
VERSION="11 (bullseye)"
VERSION_CODENAME=bullseye
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
pi@raspberrypi:~ $ uname -r
6.1.21-v7+
Faire d'un Pi3B un support de présentation de vidéo en boucle
Modérateur : Francois
Re: Faire d'un Pi3B un support de présentation de vidéo en boucle
Re,
J'ai un peu avancé.
J'ai essayé cette méthode :
https://www.malekal.com/creer-service-linux-systemd/
Voilà le service que j'ai créé :
[code]
[Unit]
Description=Service systemd au démarrage de linux
After=X11-common
[Service]
Type=simple
User=pi
ExecStart=/bin/sh /home/pi/Vidéos/loop.sh
[Install]
WantedBy=multi-user.target
[/code]
Et le script associé :
[code]
#!/bin/sh -x
SERVICE='vlc'
while true; do
if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
echo "runing" # sleep 1
else
vlc file:///home/pi/Vidéos/Lego.avi -fL --no-audio --mouse-hide-timeout 100
fi
done
[/code]
Une fois tout ça écrit, et demandé à systemctl de le lancer, voilà le résultat que j'obtiens :
[code]
pi@raspberrypi:~ $ systemctl status loopvid.service
● loopvid.service - Service systemd au démarrage de linux
Loaded: loaded (/etc/systemd/system/loopvid.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2024-01-11 10:20:40 CET; 3min 3s ago
Main PID: 396 (sh)
Tasks: 5 (limit: 2057)
CPU: 2min 44.980s
CGroup: /system.slice/loopvid.service
├─ 396 /bin/sh /home/pi/Vidéos/loop.sh
└─4965 vlc file:///home/pi/Vidéos/Lego.avi -fL --no-audio --mouse-hide-timeout 100
janv. 11 10:23:43 raspberrypi sh[4965]: [01764e90] main interface error: no suitable interface module
janv. 11 10:23:43 raspberrypi sh[4965]: [016b5b98] main libvlc error: interface "globalhotkeys,none" initialization failed
janv. 11 10:23:43 raspberrypi sh[4965]: [016b5b98] main libvlc: Lancement de vlc avec l’interface par défaut. Utiliser « cvlc » pour démarrer VLC sans interf>
janv. 11 10:23:43 raspberrypi sh[4965]: error: XDG_RUNTIME_DIR not set in the environment.
janv. 11 10:23:43 raspberrypi sh[4965]: [01764e90] skins2 interface error: cannot initialize OSFactory
janv. 11 10:23:43 raspberrypi sh[4965]: [01764e90] [cli] lua interface: Listening on host "*console".
janv. 11 10:23:43 raspberrypi sh[4965]: VLC media player 3.0.20 Vetinari
janv. 11 10:23:43 raspberrypi sh[4965]: Command Line Interface initialized. Type `help' for help.
janv. 11 10:23:43 raspberrypi sh[4965]: > Shutting down.
janv. 11 10:23:43 raspberrypi sh[4965]: [01764e90] [cli] lua interface: Requested shutdown.
janv. 11 10:23:44 raspberrypi sh[4965]: [6fe09d70] cache_read stream error: cannot pre fill buffer
[/code]
Et là je bloque à nouveau. Je vois bien que mon service tourne (même si je ne le retrouve pas lorsque je lance la commande "sudo service --status-all"), mais que j'ai un bug.
Je pense que mon erreur vient de l'écriture de mon service. Qu'en pensez-vous ?
D'avance merci,
Morgan.
J'ai un peu avancé.
J'ai essayé cette méthode :
https://www.malekal.com/creer-service-linux-systemd/
Voilà le service que j'ai créé :
[code]
[Unit]
Description=Service systemd au démarrage de linux
After=X11-common
[Service]
Type=simple
User=pi
ExecStart=/bin/sh /home/pi/Vidéos/loop.sh
[Install]
WantedBy=multi-user.target
[/code]
Et le script associé :
[code]
#!/bin/sh -x
SERVICE='vlc'
while true; do
if ps ax | grep -v grep | grep $SERVICE > /dev/null
then
echo "runing" # sleep 1
else
vlc file:///home/pi/Vidéos/Lego.avi -fL --no-audio --mouse-hide-timeout 100
fi
done
[/code]
Une fois tout ça écrit, et demandé à systemctl de le lancer, voilà le résultat que j'obtiens :
[code]
pi@raspberrypi:~ $ systemctl status loopvid.service
● loopvid.service - Service systemd au démarrage de linux
Loaded: loaded (/etc/systemd/system/loopvid.service; enabled; vendor preset: enabled)
Active: active (running) since Thu 2024-01-11 10:20:40 CET; 3min 3s ago
Main PID: 396 (sh)
Tasks: 5 (limit: 2057)
CPU: 2min 44.980s
CGroup: /system.slice/loopvid.service
├─ 396 /bin/sh /home/pi/Vidéos/loop.sh
└─4965 vlc file:///home/pi/Vidéos/Lego.avi -fL --no-audio --mouse-hide-timeout 100
janv. 11 10:23:43 raspberrypi sh[4965]: [01764e90] main interface error: no suitable interface module
janv. 11 10:23:43 raspberrypi sh[4965]: [016b5b98] main libvlc error: interface "globalhotkeys,none" initialization failed
janv. 11 10:23:43 raspberrypi sh[4965]: [016b5b98] main libvlc: Lancement de vlc avec l’interface par défaut. Utiliser « cvlc » pour démarrer VLC sans interf>
janv. 11 10:23:43 raspberrypi sh[4965]: error: XDG_RUNTIME_DIR not set in the environment.
janv. 11 10:23:43 raspberrypi sh[4965]: [01764e90] skins2 interface error: cannot initialize OSFactory
janv. 11 10:23:43 raspberrypi sh[4965]: [01764e90] [cli] lua interface: Listening on host "*console".
janv. 11 10:23:43 raspberrypi sh[4965]: VLC media player 3.0.20 Vetinari
janv. 11 10:23:43 raspberrypi sh[4965]: Command Line Interface initialized. Type `help' for help.
janv. 11 10:23:43 raspberrypi sh[4965]: > Shutting down.
janv. 11 10:23:43 raspberrypi sh[4965]: [01764e90] [cli] lua interface: Requested shutdown.
janv. 11 10:23:44 raspberrypi sh[4965]: [6fe09d70] cache_read stream error: cannot pre fill buffer
[/code]
Et là je bloque à nouveau. Je vois bien que mon service tourne (même si je ne le retrouve pas lorsque je lance la commande "sudo service --status-all"), mais que j'ai un bug.
Je pense que mon erreur vient de l'écriture de mon service. Qu'en pensez-vous ?
D'avance merci,
Morgan.
Re: Faire d'un Pi3B un support de présentation de vidéo en boucle
Rebonjour à toutes et tous,
Bah au final, j'ai trouvé une solution. Que je vous présente ici, et inspirée de :
https://trevilly.com/lecture-automatiqu ... demarrage/
Pour commencer, voici mon script sh :
[code]
#!/bin/sh
# On efface le curseur de la souris de l'écran
setterm -cursor off
# On définit le chemin de stockage des vidéos
VIDEOPATH="/home/pi/Vidéos/"
# On définit le service à utiliser, ici VLC
SERVICE="vlc"
# On scanne en boucle le dossier
while true; do
if ps ax | grep -v grep | grep $SERVICE != /dev/null
then
# le script plante parfois si la pause n'est pas assez longue
sleep 100;
else
for entry in $VIDEOPATH/*
do
clear
vlc -fL --no-audio file://$entry
done
fi
done
[/code]
Ensuite, comme suggéré dans le tuto, je suis allé modifier le fichier sudo nano /etc/xdg/lxsession/LXDE-pi/autostart en ajoutant la ligne :
[code]
sh /home/pi/Vidéos/loop2.sh
[/code]
Ce qui fonctionne. (Je le fais exécuter par shell et non bash pour pouvoir le retrouver plus facilement : j'ai plusieurs bash d'ouvert dans mes processus, et juste celui-ci en shell.)
Donc à moins que quelqu'un souhaite modifier ma solution précédente pour quelqu'un d'autre, pour moi c'est résolu.
Désolé de vous avoir dérangé pour au final avoir trouvé la solution moi-même, mais au moins elle aura le mérite d'être présente pour d'autres.
Morgan.
Bah au final, j'ai trouvé une solution. Que je vous présente ici, et inspirée de :
https://trevilly.com/lecture-automatiqu ... demarrage/
Pour commencer, voici mon script sh :
[code]
#!/bin/sh
# On efface le curseur de la souris de l'écran
setterm -cursor off
# On définit le chemin de stockage des vidéos
VIDEOPATH="/home/pi/Vidéos/"
# On définit le service à utiliser, ici VLC
SERVICE="vlc"
# On scanne en boucle le dossier
while true; do
if ps ax | grep -v grep | grep $SERVICE != /dev/null
then
# le script plante parfois si la pause n'est pas assez longue
sleep 100;
else
for entry in $VIDEOPATH/*
do
clear
vlc -fL --no-audio file://$entry
done
fi
done
[/code]
Ensuite, comme suggéré dans le tuto, je suis allé modifier le fichier sudo nano /etc/xdg/lxsession/LXDE-pi/autostart en ajoutant la ligne :
[code]
sh /home/pi/Vidéos/loop2.sh
[/code]
Ce qui fonctionne. (Je le fais exécuter par shell et non bash pour pouvoir le retrouver plus facilement : j'ai plusieurs bash d'ouvert dans mes processus, et juste celui-ci en shell.)
Donc à moins que quelqu'un souhaite modifier ma solution précédente pour quelqu'un d'autre, pour moi c'est résolu.
Désolé de vous avoir dérangé pour au final avoir trouvé la solution moi-même, mais au moins elle aura le mérite d'être présente pour d'autres.
Morgan.
Re: Faire d'un Pi3B un support de présentation de vidéo en boucle
Merci.
Je pense que dans la version systemctl aurait du fonctionner avec ceci :
Au lieu de ceci :
Je pense que dans la version systemctl aurait du fonctionner avec ceci :
Code : Tout sélectionner
After=graphical.target
Code : Tout sélectionner
After=X11-common
3 Pi4 : Emby / Samba , Librelec, Android TV
3 Pi3 : Hifiberry /OSMC, Games station, Samba / VPN / HotSpot Wifi
2 Pi2 : RFID, radio reveil (PiReveil)
1 Pi0 : traker GPS et acquisitions
1 Pi0 2W : tests divers
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32
3 Pi3 : Hifiberry /OSMC, Games station, Samba / VPN / HotSpot Wifi
2 Pi2 : RFID, radio reveil (PiReveil)
1 Pi0 : traker GPS et acquisitions
1 Pi0 2W : tests divers
5 Arduinos dont 4 nanos et 1 Mega
1 ESP32
-
- Messages : 6
- Enregistré le : lun. 6 nov. 2023 12:09
Re: Faire d'un Pi3B un support de présentation de vidéo en boucle
Ne vous inquiétez pas, votre quête pour transformer votre Pi3B en une boucle vidéo hypnotique est presque terminée !
Oubliez OMXplayer: OMXplayer est effectivement obsolète, concentrons-nous sur VLC.
Méthode 1 : Script bash optimisé:
Créez un script bash loop_video.sh avec le contenu suivant :
Bash
#!/bin/bash
# Définissez le chemin de votre vidéo
video_path="/chemin/vers/votre/video.mp4"
# Lancez VLC en plein écran, en boucle et sans audio
while true; do
vlc "$video_path" -fL --no-audio &
sleep 1
done
Rendez le script exécutable : chmod +x loop_video.sh
Ajoutez le script au démarrage automatique :
Option 1 : via LXDE
Menu > Préférences > LXSession > LXDE Startup
Cliquez sur "Ajouter" et entrez la commande ./loop_video.sh
Option 2 : via crontab
Modifiez le fichier crontab avec crontab -e
Ajoutez la ligne @reboot /home/pi/loop_video.sh
Méthode 2 : Interface graphique élégante avec Autostart:
Téléchargez et installez Autostart : sudo apt install autostart
Créez un nouveau fichier .desktop dans /etc/xdg/autostart/ :
[Desktop Entry]
Name=Boucle vidéo
Exec=/home/pi/loop_video.sh
Terminal=false
Type=application
StartupNotify=false
Remplacez /home/pi/loop_video.sh par le chemin réel de votre script.
Conseils bonus:
Réglez le volume: Ajoutez --volume=X à la commande VLC pour un son discret (remplacez X par un niveau entre 0 et 100).
Gestion des erreurs: Ajoutez un message d'erreur si VLC rencontre un problème.
Testez, admirez, et profitez de votre boucle vidéo hypnotique !
Oubliez OMXplayer: OMXplayer est effectivement obsolète, concentrons-nous sur VLC.
Méthode 1 : Script bash optimisé:
Créez un script bash loop_video.sh avec le contenu suivant :
Bash
#!/bin/bash
# Définissez le chemin de votre vidéo
video_path="/chemin/vers/votre/video.mp4"
# Lancez VLC en plein écran, en boucle et sans audio
while true; do
vlc "$video_path" -fL --no-audio &
sleep 1
done
Rendez le script exécutable : chmod +x loop_video.sh
Ajoutez le script au démarrage automatique :
Option 1 : via LXDE
Menu > Préférences > LXSession > LXDE Startup
Cliquez sur "Ajouter" et entrez la commande ./loop_video.sh
Option 2 : via crontab
Modifiez le fichier crontab avec crontab -e
Ajoutez la ligne @reboot /home/pi/loop_video.sh
Méthode 2 : Interface graphique élégante avec Autostart:
Téléchargez et installez Autostart : sudo apt install autostart
Créez un nouveau fichier .desktop dans /etc/xdg/autostart/ :
[Desktop Entry]
Name=Boucle vidéo
Exec=/home/pi/loop_video.sh
Terminal=false
Type=application
StartupNotify=false
Remplacez /home/pi/loop_video.sh par le chemin réel de votre script.
Conseils bonus:
Réglez le volume: Ajoutez --volume=X à la commande VLC pour un son discret (remplacez X par un niveau entre 0 et 100).
Gestion des erreurs: Ajoutez un message d'erreur si VLC rencontre un problème.
Testez, admirez, et profitez de votre boucle vidéo hypnotique !