Je vous préviens, je ne connais quasiment rien, ma seul expérience est d’installer un kodi pour diffuser des vidéos à partir d’un nas.
J’ai une copine qui doit faire une expo de vidéo. Elle veut diffuser une vidéo en boucle sur un écran.Je lui est dit qu’il y avait surement moyen avec un raspberry de faire ça.
Je me suis mis à la recherche d’info, j’ai trouvé une distri qui à l’air de faire ça à merveille. c’est la distri RPi Video Looper 2.0. trouvé ici :
j’ai reformaté mon ancienne SD avec SDFormater, copier l’image sur ma SD avec win32diskimager.
modifié le fichier de config pour lire une vidéo à partir d’une clef usb.
lors de la mise en route du RP, j’ai un grand rectangle coloré qui prend tout le centre de l’image et ça ne bouge pas de là.
Avez vous une idée ? c’est une config sur l’image qu’'il faut faire ?
la sa avait éte plus galere car le mec ne savait pas du tout se servir de linux il avait un raspbian lite et on a perdu énorment de temps sur la mise en place , mais il a finie par l’avoir son coffre
si tu me dis a peu prés se que tu veux je peux te faire un truc sur mesure(gratuitement bien sur ) .
Pour la sous alimentation, c’est bizarre, j’utilise un transfo 2.5A, ça marche nickel avec mon kodi. enfin passons.
les besoins sont :
Le top, serait une détection de mouvement ou un appui des visiteurs pour déclancher la lecture de la vidéo.
Autrement mais moins bien,
lire une vidéo en boucle qui se trouve sur une clef USB
qu’elle se lance automatiquement lors du démarrage du RP
qu’en bougeant la souris, un menu apparaisse pour arrêter le RP correctement, et tant qu’a y être, que le pointeur de souris ne soit pas visible lors de la diffusion.
dernier point, normalement optionnel,
peut être prévoir que s’il y a plusieurs vidéos, elles passent en boucle les une après les autres suivant l’ordre alphabétique. Normalement il doit y avoir plusieurs stands de diffusion mais tout n’est pas calé pour l’instant. autant le prévoir tout de suite.
effectivement c’est bon l’alim , autre possibilité images mal écrite sur la SD
sa c’est ok il me faudra le chemin de la clé usb et le dossier qui contiendra les vidéo
car si je dois prévoir sa
j’utiliserai une autre méthode que celle prévu initialement (qui fonctionne aussi pour une seule vidéo )
et non c’est pas celle qui est utiliser par le script que j’ai corriger dans le sujet du feux de cheminé .
Sa demandera juste que vous nommer vos vidéo par ordre alphaphétique ou numérique pour l’ordre de lecture ,
Ah est sa me demandera pas de boulot en plus , juste une ligne
ok pas de probléme non plus sa
c’est la que sa coince ,pour la 2 éme partie le pointeur invisible pas de soucis ,c’était prévu .
Par contre le menu , je sait pas du tout comment faire ,c’est asseZ technique se que tu me demande et j’ai pas le niveaux .
Afficher un menu je sait le faire ,le vrai menu shutdown j’ai pas encore trouver il semblerait que se soit un script système , mais bon je saurait te le faire même en python ,il est pas compliquer d’éteindre au reboot avec un un appelle système (déja fait )
c’est dans cette situation la que c’est compliqué disont avec les solution que j’ai en tete , car pour pas trop rentrer dans le technique dison que l’affichage de la vidéo va prendre tout l’ecran mais plus précisent va monopoliser le serveur X (c’est l’affichage si tu préfère ) ,
Donc faire apparaître un truc par desus , sa me parait difficile , pas faute d’avoir essayer
Parenthèse : Pour te faire une explication compléte mais pas trop complexe , disont c’est propre au Raspberry , car sur PI pour lire de la vidéo (on a plein de sujet la desus ) il faut que le logicielle utilise l’acélaration matérielle , c’est le cas pour Kodi et omxplayer , mais pas VLC ou les navigateur internet (d’ou impossibilité de lire youtube sans lag )
hors les logicielle qui utilise l’accélération matérielle s’affiche totalement sur l’ecran: 0 on peux pas faire autrement , (on peux reduire la fenetre mais dans ce cas pas de pleine ecran ) donc pas faire passer autre chose par dessus
je ferme la parenthésé la car sa reste trés technique quand meme et plus compliqué que sa ,mais sa te donne idée générale .
Je pourrait utiliser les interface existante pour contourner le probléme , mais je les connais pas (au niveau fonctionement ) et sa me donnerait trop de travail !
par contre couper la lecture et afficher le menu c’est possible
il reste le point bouger la souris , je suis pas un expert des mouvement de souris jamais fait , je ne doute pas que je trouverai facilement un Librairie qui me permette de le faire mais la encore sa me donnerai un peu plus de boulot , écriture du script test et intégration dans le code initial (car oui j’utiliserait du python )
Donc voila la partie souris et menu je sait pas si je pourrais la réaliser , pour le reste pas de problème
P.S: je précise que je suis pas développeur j’ai de trés bonne basse et je me débrouille plutot pas mal ,(les gens ici sont satisfait ) mais je me contente de faire des script ou corriger , pas de développer des logicielle complet et ultra optimisé,
Je fait sa pendant mon temps libre et bénévolement(se qui me permet de m’amélioré ) .
Je reviens à la charge, après recherche, je pense avoir trouvé ce que j’ai besoin, un script python lançant une video lorsqu’un bouton poussoir est activé celui-ci est connecté sur les ports GPIO.
Je précise que j’ai un raspberry PI3 vers B.
J’ai trouvé le plan de câblage ici:
je me connecte donc sur le port GND et GPIO 3 ( broche 9 et 15 / la 5ème et le 8ème)
j’ai stocké ma vidéo de test dans un répertoire « …/pi/Videos »
mais lors de l’exécution de celui ci j’ai un petit problème. j’ai en retour :
RuntimeWarning: A physical pull up resistor is fitted on this channel!
puis sans arrêt « Video started : False »
je dois faire un CTRL+C pour l’arréter
voici le script :
import subprocess, time
import RPi.GPIO as GPIO
INPUT_PIN = 3
GPIO.setmode(GPIO.BOARD) ## Use board pin numbering
GPIO.setup(INPUT_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
video_started = False
play_process = None
val = -1
while True:
val = GPIO.input(INPUT_PIN)
if val == 0: # Button pressed
print(« Button pressed »)
if not video_started:
play_process = subprocess.Popen([‹ omxplayer ›,‹ …/pi/Videos/essai.mp4 ›],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
close_fds=True)
if play_process != None:
video_started = play_process.poll() == None
else:
video_started = False
print(« Video started : %s » % video_started)
time.sleep(0.2)
Pouvez vous le dire ou je me foire. j’ai l’impression que l’action sur le bouton poussoir n’est bien détectée.
c’est le script d’origine, la seule modification que j’ai faite c’est de changer l’extension du fichier video.mov en video.mp4 car mon fichier est dans ce format.
dans le code d’origine, il n’y a pas de parenthèse à la fin de la commande omxplayer. d’ailleurs, si j’en met une, j’ai une erreur avec la ligne d’après (stdin=subprocess.PIPE,) je me retrouve avec un accès sous le stdin.
pour info, je suis sous python 2.7.9
Merci d’avance si quelqu’un peut me dépatouiller.
Cdt
Nico
import subprocess, time
import RPi.GPIO as GPIO
INPUT_PIN = 3
GPIO.setmode(GPIO.BOARD) ## Use board pin numbering
GPIO.setup(INPUT_PIN, GPIO.IN, pull_up_down=GPIO.PUD_UP)
video_started = False
play_process = None
val = -1
while True:
val = GPIO.input(INPUT_PIN)
if val == 0: # Button pressed
print("Button pressed")
if not video_started:
play_process = subprocess.Popen(['omxplayer','../resources/video.mov'],
stdin=subprocess.PIPE,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
close_fds=True)
if play_process != None:
video_started = play_process.poll() == None
else:
video_started = False
print("Video started : %s" % video_started)
time.sleep(0.2)
Je regardé ton lien, effectivement,j’avais un problème de câblage, je me suis connecté sur la prise 6 pour le GND et la 10 pour le poussoir. j’ai modifier le port d’écoute dans le script comme suit ( INPUT_PIN = 10)
Je n’est plus de message d’erreur et lorsque je j’active le poussoir, la réponse du script change.
voilà se que ça me donne.
pi@raspberrypi:~ $ python launch3.py
Video started : False
Video started : False
Button pressed
Video started : True
Video started : False
^CTraceback (most recent call last):
File "launch3.py", line 27, in <module>
time.sleep(0.2)
KeyboardInterrupt
pi@raspberrypi:~ $
le bouton est bien détecté mais la vidéo ne se lance pas… une petite idée peut être ?
Si si c’est bien le cas. J’arrête le script par ctrl+c vu que ma vidéo ne se lance pas. Je ne vais pas le laisser tourner pour rien…
C’est pas tout, quand ce script fonctionnera, faut que je le mette en service pour qu’il démarre tout seul et surtout, ne plus avoir la fenêtre qui défile. Deuxième chose, que je monte une clé pour stocker mon fichier car il sera trop gros pour ma sd.
Ta vidéo se lance pas ,
bizarre pourtant ta ligne est correct , c’est peut être ton chemin qui a pas bon,
car la ton chemin sa m’indique que tu a un dossier pi dans un dossier pi est que a l’intérieur du qu’elle tu a un dossier vidéo
car …/ sa veut dire le dossier dans le qu’elle tu te trouve , et quand tu initialise un terminal , tu te trouve dans /home/pi donc derrière le …/ il cherche le /pi
sinon si ta vidéo est belle et bien dans /home/pi/Videos/
~/ sa veux dire le dossier de l’utilisateur connecté sa veux dire dans ton cas toi (pi) donc /home/pi
Point culture :
Oui il y a une grosse différence entre …/ et ~/
car pour le premier si tu te trouve dans un autre dossier (avec un cd dans un script )
celui si cherchera dans le dossier actuelle (c’est qu’on appelle un chemin relatifs )
hors ~/ renverra toujours dans le répertoire utilisateur
J’ai réussi ! c’est très con, je ne suis pas sur le raspberry en direct, je me connecte dessus en vnc, la résolution n’est pas bonne, du coup je ne peux pas diffuser. enfin je suppose que c’est ça/ en direct dessus ça marche ( boulet !!!)
bon il reste quelques problèmes à gérer :
je veux que le script tourne en tache de fond ( du coup il faut le mettre en tant que service je suppose) comme ça on ne voit plus en arrière plan le terminal indiquant video false…
que la vidéo soit en pleine écran (actuellement on voit la barre des taches)
que je stock ma vidéo sur une clé parce que sur la SD ça ne va pas le faire.
bon passons au cahier des charges , c’est dans mes cordes normalement (toujours mettre le conditionnels mdr )
je vais juste te posser quelle que question
1)normalement omxplayer couvre le terminal sur ton ecran hdmi non ?
2)non pas besoin on peut carrément ne pas lancer de terminal en faite, donc sa résout aussi ton problème de tache de fond , par contre une question comment tu ferme ton script ou comment compte tu le fermer ?
doit t’il se lancer au démarrages du pi ?
la se sera a toi de faire ton réglage selon la dimension de ton écran
c’est simple il faut tu lance omxplayer (sans le script ) avec le chemin ta vidéo et en rajoutant l’option
–win
exemple pour du 640 sur 480
Alors ça venait de vnc. j’ai compris lorsque j’ai essayé de diffuser à partir du terminal la vidéo avec le son sur le casque avec l’option -o local est que ça ne diffusait pas.
pour la fermeture du script, je laisse clavier et souris branché sur le RP mais non accessible au public, si la vidéo est lancée, je ferais un CTRL+C si elle ne l’est pas j’éteins le RP a partir des menus; maintenant je supose que si on lance pas le script a partir du terminal, on ne peut pas faire de CRTL+C… donc je te dirais que je n’en sais rien mdr.
pour le plein écran, sur mon écran de PC, je vois la barre des taches et le script sur les bords. en diffusant sur une TV non HD c’est bon
il faudrait ne pas le lancer à partir du terminal mais en tache de fond car lorsque la diffusion n’est pas en cours, je me retrouve sur le bureau avec le script qui tourne indiquent vidéo false sans arrêt. c’est pas gérable, c’est pour ça que je voulais mettre le script en service, il serait d’une part caché et d’autre part se lancerait au boot de raspberry.
répondu au dessus.(oui lancement du script en auto lors du boot
vidéo plein écran apparemment c’est bon sur mon veille écran non HD, sur une HD c’est pas bon. si j’ai bien compris, si je dois diffuser sur un support HD, je dois me farcir les points x/y
lancement sur la clé, je suppose qu’en nommant toutes mes clefs de la même manière, ça va le faire (USB DISK)
j’ai modifié le script pour ouvrir le chemin absolu
« /media/pi/USB DISK/videos/fichier.mp4 »
il y a rien d’autre à faire à faire ?
j’ai bien réussi à diffuser le son sur la sortie jack sous terminal en rajoutant -o local dans la ligne de commande, mais en python, ça ne marche pas pareil les options de omxplayer.
j’ai essayé comme ça play_process = subprocess.Popen([‹ omxplayer -o local ›,’…/Videos/essai.mp4"
j’ai essayé comme ça play_process = subprocess.Popen([‹ omxplayer ›,’-o local’,’…/Videos/essai.mp4"
j’ai trouvé des exemples de script avec a ligne en dessous, je l’ai adapté en remplaçant -o hdmi en - o local et en enlevant la partie des sous titre mais ça me sort un message d’erreur :
(« omxplayer -r -o hdmi {} --align center --font-size 70 /home/pi/bin/omfifo »)
je n’ai aucune idée comment taper une commande en python…
a chaque argument une virgule et celle si entre ’ ’
j’ai tester avant ,sa marche je n’étais plus sur car il existe subprocess.call qui fonctionne autrement
quand c’est comme sa ,on consulte la doc propre au module ,nous non plus on connait pas par coeur j’ai maté dans la doc avant de testé surtout python 2 j’utilise pas
justement cette partie ,n’est pas compliquer pour moi , mais est crucial , c’est pour sa qu’avant de définir la facon de le faire booter il faut que me dise comment tu souhaite fermer le programme car tu a vu juste ,(d’ailleur t’est un des premier débutant a avoir anticipé le probléme )
oui car si ton script est lancer hors terminal le ctrl+c marchera pas ,donc c’est tout le probléme c’est comme lancer un programme graphique sans fenetre de fermeture et isoler du reste du système,
car oui on peux pas faire apparaitre quelque chose au dessus de omxplayer par se que sinon un simple kill process aurais suffit , a par si tu peux te conecter en ssh en vnc au pi ,la le kill fonctionera
c’est pas pour rien que j’avais parler de sa [quote=« jojo, post:4, topic:2813 »]
c’est dans cette situation la que c’est compliqué disont avec les solution que j’ai en tete , car pour pas trop rentrer dans le technique dison que l’affichage de la vidéo va prendre tout l’ecran mais plus précisent va monopoliser le serveur X (c’est l’affichage si tu préfère ) ,
Donc faire apparaître un truc par desus , sa me parait difficile , pas faute d’avoir essayer
[/quote]
Donc le plus simple serait de lancer l’apli dans un terminal
Ça pourrait le faire car omxplayer se referme après chaque lecture. J’ai donc la main sur le bureau.
Après je ne vois pas ce qui pose problème. Pourquoi tu veux absolument sortir du script, Il va rester 3 mois en place le RP. Le temps du vernissage après il ira faire autre chose.
T’en pense quoi ?
Accessoirement c’est quand même abuser le merdier pour lancer quelque chose au démarrage…
J’ai essayé avec rc. Local mais ça ne fonctionne plus sous jessie !
Il y a pas moyen de coller un raccourci dans un répertoire démarrage (genre win98…) lol