Distri Looper écran coloré

Re,

  • Je met le script en dessous. Je tiens à précisé que je l’ai récupéré sur le net ici ( http://tech.mirelsol.org/doku.php/projects/raspberry_launch_video_button )

  • 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)

oui pardons j’avais pas fait gaffe c’était un bloc , avec les indentation c’est plus clair :slight_smile:

apparament ton message d’erreur RuntimeWarning: A physical pull up resistor is fitted on this channel!

sa vient du montage de ton bouton il est pas sr les bon pin [solved] Controlling a fan on a relay with python - Raspberry Pi Forums

Salut,

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 ?

Merci

Nico

c’est bizarre l’exception , sa indique que tu fermes le programes avec ctrl+C c’est pas le cas ?

ensuite sa parle de la dernier ligne
essaie de retirer time.sleep

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.

A+
Nico

En regardant le script. Je vois ça :
if play_process != None:

Le ‹ None › devrait sur la ligne du dessous normalement… Je vais essayer ça se soir en rentrant

Slt

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

sa donne sa /home/pi/pi/Videos/essai.mp4

t’a un doublons mais c’est peut être normal ?

si c’est pas le cas corrige ta ligne comme suis

play_process = subprocess.Popen([‹ omxplayer ›,’…/Videos/essai.mp4

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/

tu peux faire comme sa

play_process = subprocess.Popen([‹ omxplayer ›,’~/Videos/essai.mp4

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

2 raccourci différent

Salut jojo.

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.
  • que le son sorte par la sortie casque

Tu peux me filer un coup de main pour ça ?

Merci Jojo, t’es un dieu :smile:

Yo @nico29,

Cool donc sa venait juste de vnc ou de modifier la ligne ?

non tu peux pas diffuser omxplayer sur vnc enfin si ,mais pas vnc dans l’état ,

je développe pas pour pas être HS, si tu est curieux tu peux aller voir la on parle de la raison de sa ici Kody & VNC, par tunnel ssh? - Aide - Le Forum français de la Raspberry Pi - Raspberry Pi FR (Raspbian France)

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 ?

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

omxplayer --win ‹ 0 0 640 480 › ~/Videos/essai.mp4

la suite de chiffre peux paraître bizarre car en faite c’est

–win ‹ x1 y1 x2 y2 ›

x1 y1 = coin supérieur gauche
x2 y2 = coin inférieur droit

et il faut remplacer ces valeur comme on la vu dans l’exemple plus haut

don tu peux laisser x1 y1 a 0

et une fois tu a les bonne valeur et qu le résultat te conviens tu aura plus qu’a l’intégrer dans le script

cette partie peut être fastidieuse a trouver le bon réglages ,mais bon jpourais pas le faire a ta place sa

ben t’a juste a stocker la vidéo sur ta clé et mettre le chemin de ta clé et la vidéo a la place de ~/Videos dans le script

la j’ai envie dire cherche un peu c’est pas compliqué :wink:

Re,

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.

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

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

  3. répondu au dessus.(oui lancement du script en auto lors du boot

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

  5. 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 ?

  6. 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+

Nico

Salut , j’ai pas trop le temps aujourd’hui je vais répondre a une seule question celle concerne subprocess

bon alors déja il y a une grosse erreur de syntaxe

si tu ouvre avec sa ’ du ferme avec sa ’
tu fais pas 'exemple" se que tu a fait plus haut

donc pour toi c’est ‹ exemple ›

donc la bonne ligne c’est

play_process = subprocess.Popen([‹ omxplayer ›,‹ -o ›,‹ local ›,‹ …/Videos/essai.mp4 ›

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é :wink: surtout python 2 j’utilise pas

voici la doc 17.1. subprocess — Subprocess management — Python 2.7.18 documentation

pour ta décharges elle est en anglais ,mais bon je trouve que les exemple sont parlant

Salut,

C’est bon nickel, il me manquait effectivement des ’ dans ma ligne…

reste plus qu’a mettre le script en route lors du boot.

ça devient bon !

A+
Nico

Salut content que sa avance :slight_smile:

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

P.S : il est possible d’appeler un signal SIGINT (le fameux controle +C) il y a un module pour sa dans python fournit de basse , il s’appelle d’ailleurs signal 17.4. signal — Set handlers for asynchronous events — Python 2.7.18 documentation

je les jamais tester sur python,mais si sa fonctionne de la même façon quand shell sa ne fonctionnera pas

Tout sa pour dire que tant qu’on sait pas comment fermer ton programe je peux pas te concevoir le lanceur , je te conseille le terminal

Salut Jojo, content d’avoir trouvé quelque chose mouahahah.

J’étais sur le problème hier soir. Sur ce lien ( http://www.framboise314.fr/systemd-tout-nouveau-tout-beau-ou-pas/#Installer_tightvncserver) ils mettent vnc en service et l’active par un start / stop a partir du 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

A+

Nico

a donc ta vidéo , na pas besoin de tourner en boucle ?

Non ,une fois que tu sait

Tu te trompes rc.local fonctionne encore ,je m’en sers personnellement de temps en temps sur raspbian et d’autre distribution reposant sur Jessie mais effectivement pour lancer se genre de script il faut un script shell par dessus ,d’ailleurs toi aussi il te faut un script shell , pour lancer le terminal au démarages

la comparaison dérangeante ,mais si tu peux (on le fera pas ), mais tu peux faire mème plus encore ,tu peux tous modifier sur linux .

A c’est pas obligatoire j’aime juste le travail bien fait

pour terminer je te renvoie ici [Résolu] Problématique de démarrage automatique scrypte python - #12 par jojo - Aide - Le Forum français de la Raspberry Pi - Raspberry Pi FR (Raspbian France)

sa te permettra de finaliser et je suis quitte de tout réécrire tu peux suivre la procédure a la lettre,bien sur si tu a des question ou des soucis tu me fait signe :wink:

Re,

Merci Jojo pour le temps que tu me consacre.

pour te répondre :

  1. j’ai abandonné l’idée de faire tourner en boucle la vidéo depuis qu’elle peut être lancé par le spectateur. tu admettras que d’avoir la vidéo au début c’est quand même mieux que de la commencer en plein milieu.

  2. si on veut.

  3. j’ai pas capté le fait de lancer le script python dans un script shell, j’ai essayé de la lancer directement dans rcl.local…

je passe l’échange du menu démarrer, à prendre sur le ton de l’humour

Et merci pour le lien concernant le lancement du script python, je m’en vais de ce pas voir ça de plus prêt !

a bientôt, ben oui, tu ne crois pas que je vais m’en sortir comme ça, sachant que j’ai essayé plein de chose, j’ai surement du faire une connerie qui va me bloquer maintenant que j’ai la solution…

A+

Nico

ben tu crée un fichier texte avec comme nom monscript.sh (il faut qu’il porte l’extention sh )

et a l’intérieur

#!/bin/sh
lxterminal -e python /cheminduscript/nomduscriptphyton.py

mais tu va pas utiliser rc.local ici mais l’autostar (suis le lien )

et dans l’autostart tu mets le chemin de ton script shell

donc en gros l’autostart lance le script shell qui lui lance un terminal avec le script python

je dois avouer que tu apprends vite et tu a su trouver des info par toi meme est anticiper certain chose et essayer des trucs , ici on a des personne qu’on doit prendre par la main si tu vois se que je veux dire , mais je te lache pas dans la nature pour autant si tu besoin tu fait signe :wink:

Salut jojo,

2 points :

  • il y a un problème dans ton tuto (Résolu) que tu m’as indiqué plus haut. ( lancement python au démarrage )
    dans ce tuto, tu renommes un fichier script.py et script.sh puis tu met tes 2 lignes dedans;
#!/bin/sh
lxterminal -e sudo python /home/pi/scripts/photobooth/photo_booth.py

comme tu peux le voir, ta deuxième ligne pointe sur le fichier script.py qui n’existe plus puisque tu viens de le renommer.

J’ai bien compris qu’il garder le fichier script.py et creer un script.sh lancé par l’autostart qui lui lance le script.py. mais le tuto de l’autre page est à modifier pour être consciencieux.

autrement, je peux t’annoncer que ça fonctionne chez moi !!! après un reboot biensur.

2 ème point, est-il possible de ne pas avoir un retour d’affichage sur le terminal genre echo off ?

Merci encore

A+

Nico

C’est bon Jojo, au démarrage, il suffit de miniaturiser la fenetre terminal et j’ai caché la barre des tache comme ça il n’t à pas à s’embêter avec ça !

Je vais présenter ça à la personne concernée . J’espère que ça va lui convenir !

Cette première approche sur raspbian m’a bien plu, je crois bien que je risque de repasser ici !

A bientôt.

non non, le script renommer c’est startup_script.sh qui était le script shell mais qui n’avais pas d’extension donc pas le script python , qui existe toujours , je précisse qui s’agit d’une correction est pas d’un tuto , mais si tu lis bien avec ce qui a au dessus dans le sujet c’est cohérent il y a aucune erreur :wink:

esaye de retirer [quote=« nico29, post:25, topic:2813 »]
lxterminal -e
[/quote]

du script shell pour voir si ton app tourne tourne toujours ,normalement oui , mais avec l’autostart il y a des surprisse