Lancer une Vidéo par un Bouton Poussoir sur GPIO du Raspberry PI 3

Vous souhaitez développer un projet mais vous manquez de temps, de compétences ? Présentez votre projet ici pour trouver des participants...

Modérateur : Francois

Répondre
JoelAlbert
Messages : 4
Enregistré le : lun. 28 janv. 2019 21:33

Lancer une Vidéo par un Bouton Poussoir sur GPIO du Raspberry PI 3

Message par JoelAlbert » lun. 28 janv. 2019 22:21

Bonjour,
Voici mon "petit" projet :
Je voudrais lancer une video (video.mp4) dans un programme python par l'appui sur un Bouton Poussoir (BP) cablé sur le GPIO.
J'ai fait le programme ci-dessous (qui fonctionne) et qui lance une video (ecran_noir.mp4) d'une seconde et qui tourne en boucle, puis quand on appuie sur le BP (GPIO10) on lance la video (video.mp4). On lis cette vidéo une fois et on revient à l'ecran noir (ecran_noir.mp4) en boucle jusqu'au prochain appuie sur le BP.
Le programme ci-desous fonctionne mais j'ai le fond d'écran Rasbian qui apparait une fraction de seconde à chaque bouclage de video...donc c'est pas top!!!
Il me faudrait un écran noir tout le temps sans ce "saut d'image" quand la video n'est pas lancée.

Voici mon code Python3 :

import os
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
bouton = 10
GPIO.setup(bouton, GPIO.IN)
while True:
if(GPIO.input(bouton) == False):
os.system("omxplayer -b --no-osd /home/pi/Desktop/media/@video.mp4")
else:
os.system("omxplayer -b --no-osd /home/pi/Desktop/media/@noir.mp4")


Pouvez vous m'aider à l'améliorer pour supprimer ce "saut d'image" svp?

JoelAlbert
Messages : 4
Enregistré le : lun. 28 janv. 2019 21:33

Re: Lancer une Vidéo par un Bouton Poussoir sur GPIO du Raspberry PI 3

Message par JoelAlbert » dim. 3 févr. 2019 12:33

Projet RaspBerry : Lire une vidéo par appui sur un bouton poussoir (connecté au GPIO)

Bonjour à toutes et à tous et un grand merci à toutes celles et ceux qui m'ont aidés à aller au bout de mon projet !

Petit rappel de mon objectif :

Je travail dans un musée et je souhaite utiliser des Framboises pour lancer des vidéos sur des écrans TV intégrés dans l'expo.
Le but est de pouvoir lancer une ou plusieurs vidéos au choix, par l'appui sur un bouton poussoir ou par un déclenchement automatique par un détecteur de présence.
Une vidéo "fond d'écran noir" avec un éventuel message "mode d'emploi" tourne en boucle, et quand on appuie sur le bouton de la vidéo choisie, on lance la vidéo en lecture 1 fois, puis on reviens au fond d'écran noir.
Facile me direz vous ?!
Bah pas tant que çà quand on est débutant ! 😊
J'ai acheté mon Rasp et je me suis lancé tête baissée dans la programmation python(dont je connaissait juste le nom) il y a à peut prés un mois et je peux vous dire qu'au début j'ai un peu ramé (et à la fin aussi d'ailleurs) !
(Ramé beaucoup plus que la Framboise qui m'a impressionné par ses performances et ce qu'on peu faire rentrer dans une aussi petite boîte rose) !!!

ET GRACE A VOUS TOUS QUI M'AVEZ AIDE, J'AI RÉUSSI !!!

Voici comment je m'en suis sorti :

J'ai installé Raspbian de façon standard (mais plusieurs fois à cause de plusieurs plantes totales dues à mes nombreuses bidouilles et grattages de neurones pas toujours bien maîtrisés)

Et à force de recherches et de tests je suis arrivé au programme python suivant :

import os
import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)
GPIO.setup(10, GPIO.IN)
GPIO.setup(9, GPIO.IN)
GPIO.setup(11, GPIO.IN)
while True:
if(GPIO.input(10) == True):
os.system("omxplayer -b --no-osd --layer 2 /home/pi/Documents/RASPBERRY/media/@video1.mp4")
if(GPIO.input(9) == True):
os.system("omxplayer -b --no-osd --layer 2 /home/pi/Documents/RASPBERRY/media/@video2.mp4")
if(GPIO.input(11) == True):
os.system("omxplayer -b --no-osd --layer 2 /home/pi/Documents/RASPBERRY/media/@video3.mp4")

Ce programme lance 1 des 3 vidéos au choix (@video1.mp4, @video2.mp4 ou @video3.mp4) en fonction de l'appuie sur un des trois BP cablés sur GPIO 9, GPIO10 et GPIO11.

Par contre le programme Python ne gère pas le fond d'écran (sinon la commande --layer qui permet de lancer une vidéo "par dessus" une autre en cour de lecture ne marche plus, en tout cas je n'ai pas réussi à la faire marcher comme ça !).
Le fond d'écran (@noir.mp4) est lancé au boot du Rasp, par le code suivant ajouté dans le fichier "rc.local"

Dans la console, lancer la commande :
sudo nano /etc/rc.local
puis ajouter dans le fichier rc.local, à la fin, juste avant exit 0 :
sudo omxplayer -b --no-osd --loop --layer 1 /home/pi/Documents/RASPBERRY/media/@noir.mp4
(Ne pas oublier d’enregistrer par ctrl/x puis o avant de quitter 😄, sinon t'as perdu ton temps !)

Enfin, pour que le tout démarre au boot de la Framboise, je lance mon programme python grâce au un fichier autostart suivant :

Dans la console lancer la commande :
sudo nano /home/pi/.config/lxsession/LXDE-pi/autostart
Ajouter dans autostart qui doit être vide (nouveau fichier) :
sudo python /home/pi/Documents/RASPBERRY/PyTest/PyTest.py
Enregistrez...

Et... EUREKA! ça marche !

Merci encore à tous pour votre aide.

Joël

JoelAlbert
Messages : 4
Enregistré le : lun. 28 janv. 2019 21:33

Re: Lancer une Vidéo par un Bouton Poussoir sur GPIO du Raspberry PI 3

Message par JoelAlbert » lun. 11 févr. 2019 11:34

Salut les Framboisier(e)s,
Je viens de déceler un petit bug dans mon programme :
Avec la plus part des écrans TV tout fonctionne bien, mais avec certain autre, même récents, les vidéos lancées par mon programme python dans le fichier /home/pi/.config/lxsession/LXDE-pi/autostart ne passent pas à l'écran (l'écran ne reconnais pas le signal hdmi) alors que la même vidéo, du même format(mp4) passe correctement quand elle est lancée par la commande "sudo omxplayer -b --no-osd --loop (...)" ajouté dans le fichier rc.local
Auriez vous une idée ?

Répondre

Retourner vers « Projets »