Page 1 sur 1

Python+omxplayer

Posté : ven. 3 févr. 2017 09:06
par MyParax
Bonjour ! Je dois faire un projet qui consiste, lorsque l'on appuie sur un bouton : un son sort d'une enceinte(Quel originalité).
Voici le code : (Volé sur internet)

Code : Tout sélectionner

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','audio.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)
    
_____________________________________
Sauf que celui çi sort sur l'hdmi ... Et pas sur les enceintes, j'aimerai qu'il sorte en local comme dans la console (omxplayer -o local).
Merci d'avance !!!

Re: Python+omxplayer

Posté : ven. 3 févr. 2017 09:20
par Manfraid
Salut,

essaye comme ceci, de mémoire ça doit fonctionner, mais comme j'utilise que très rarement le module subprocess j'ai un petit doute quand même

sinon regarde juste sur la doc pour ajouter un paramètre a la commande ouverte par

Code : Tout sélectionner

subprocess.Popen

Code : Tout sélectionner

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','-o local','audio.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)
    

Re: Python+omxplayer  [RESOLU]

Posté : ven. 3 févr. 2017 09:31
par MyParax
Merci pour la réponse(trés rapide) , mais j'ai déjà essayé ça.
Ca ne marche pas :?
Je vais regarder la doc comme tu l'as conseillé !
Merci !

Re: Python+omxplayer

Posté : ven. 3 févr. 2017 10:14
par MyParax
J'ai pas du tout trouvé (ou mal cherché) il n"y a pas moyen juste de passer par LxTerminal ?

Re: Python+omxplayer

Posté : ven. 3 févr. 2017 11:14
par MyParax
J'ai finnalement trouvé la solution ... Et j'adore Python...

Code : Tout sélectionner

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','-o', 'local','audio.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)
   
Il fallait juste séparer le -o et le local.
Merci quand même pour ton aide ! :)

Re: Python+omxplayer

Posté : ven. 3 févr. 2017 11:36
par Manfraid
oui python et plutôt pratique je trouve

et oui m'en doutais qu'il y avais une astuce comme ça pour cette fonction