VLC ne fonctionne pas quand je lance python au boot du RPI

Python est le langage de prédilection du Raspberry Pi

Modérateurs : Francois, Manfraid

Répondre
jfab66
Messages : 1
Enregistré le : ven. 20 mai 2016 11:01

VLC ne fonctionne pas quand je lance python au boot du RPI

Message par jfab66 » ven. 20 mai 2016 11:34

Bonjour,
dans le but de créer une petite boite pour écouter de la radio en streaming, je teste un programme en python dans lequel des boutons poussoirs sont raccordés aux GPIO pour sélectionner la radio puis je lance VLC avec 'subprocess' pour écouter la musique sur la sortie audio du raspberry.

Quand je lance le programme dans un terminal avec 'sudo python Documents/test_vlc.py" :
>le programme fonctionne correctement ; c'est à dire que les LED s'allument pour indiquer que la RPI fonctionne et que les radio sont prêtes a être sélectionnées.
l'appui sur un bouton lance VLC avec la radio en streaming et allume une 2ème LED.


:roll:
mais quand je lance le programme 'sudo python /home/pi.Documents/test_vlc.py" dans le boot de la RPI
-> Les LED fonctionnent et m'indiquent que la RPI est prête pour lancer la radio
:!: PROBLEME : lors de l'appui sur un bouton de sélection bien que la 2ème LED s'allume , VLC ne fonctionne pas
quand je regarde dans un terminal connecté au RPI en ssh avec la fonction 'top' -> VLC n'est en en cours de fonctionnement !


Pour lancer le programme au démarrage j'ai utilisé les 2 méthodes .... et j'ai le même résultat
Charger un programme python au lancement de LXDE :
CODE: SELECT ALL
sudo nano ~/.config/autostart/pthon.desktop

et d'y inserer ce code :
CODE: SELECT ALL
[Desktop Entry]
Type=Application
Name=x11vnc
Exec=sudo python /home/pi/fichier.py


Sinon il y a cette méthode pour demarrer le script , dès le demarrage du raspberry pi :
CODE: SELECT ALL
sudo nano /etc/rc.local

et d'inserer
CODE: SELECT ALL
sudo python /home/pi/fichier.py &
juste avant "# Print the IP address"

Code : Tout sélectionner

#!/usr/bin/env python2.7
import RPi.GPIO as GPIO
import time
import subprocess
import sys
GPIO.setmode(GPIO.BCM)
GPIO.setwarnings(False)

GPIO.setup(21, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(20, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(19, GPIO.IN, pull_up_down=GPIO.PUD_UP)
GPIO.setup(18, GPIO.OUT)
GPIO.setup(13, GPIO.OUT, initial=GPIO.HIGH)
liste_radio = ('cvlc --daemon http://mp3lg4.scdn.arkena.com/8432/nrj_205243.mp3', 'cvlc --daemon http://statslive.infomaniak.ch/playlist/radionova/radionova-high.mp3/playlist.m3u' , 'cvlc --daemon http://statslive.infomaniak.ch/playlist/mfm/mfm-128.mp3/playlist.m3u')
nom_radio = ("NRJ", "Radio Nova", "MFM")
def radio(x):
     GPIO.output(18, True)
     print nom_radio[x]
     proc = subprocess.Popen(liste_radio[x], stdout = subprocess.PIPE, stderr = subprocess.STDOUT, stdin = subprocess.PIPE, shell = True)
     
def eteindre():
     proc = subprocess.Popen('sudo killall vlc', stdout = subprocess.PIPE, stderr = subprocess.STDOUT, stdin = subprocess.PIPE, shell = True)
     GPIO.output(18,False)
     time.sleep(1)
r=100	
eteindre()
GPIO.add_event_detect(19, GPIO.FALLING,bouncetime=800)
GPIO.add_event_detect(20, GPIO.FALLING,bouncetime=800)
GPIO.add_event_detect(21, GPIO.FALLING,bouncetime=800)
while 1:
	try:  
		if GPIO.event_detected(19):
			eteindre()
			r=0
		elif GPIO.event_detected(20):
			eteindre()
			r=1
		elif GPIO.event_detected(21):
                	eteindre()		
		time.sleep(0.1)
	
		if r<>100:
			radio(r)
			r=100
	except KeyboardInterrupt:
		eteindre()
		GPIO.cleanup()

Répondre

Retourner vers « Python »