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.



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 : Sélectionner tout - Visualiser dans une fenêtre à part
sudo nano ~/.config/autostart/pthon.desktop
et d'y inserer ce code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
[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 : Sélectionner tout - Visualiser dans une fenêtre à part
sudo nano /etc/rc.local
et d'inserer
Code : Sélectionner tout - Visualiser dans une fenêtre à part
sudo python /home/pi/fichier.py &
juste avant "# Print the IP address"

Code python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
#!/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()

pour compléter dans ma recherche de solution :
si j'utilise 'mplayer' à la place de vlc -> la radio en streaming fonctionne MAIS je trouve que 'mplayer' n'est pas assez stable ou ne gère pas correctement la radio en streaming car y-a beaucoup de coupures se son durant l'écoute.
AUSSI, j'aurai préférer utiliser VLC qui est beaucoup plus stable.