VLC - python and GPIO - random fonction

22 views Asked by At

I'm looking to load a playlist and shuffle the files it contains.

Also, at the moment when I press my buttons, they tend to send the signal several times, I've tried time.sleep but it doesn't work.

As you can see, I'm not a programmer, I tried to make the beginning by myself, everything works not so bad except these two items.

Thank you very much for your help.

here is my code :

# -*- coding: utf-8 -*-

from gpiozero import Button
from signal import pause
import vlc
import subprocess
import random

# Définir le chemin des listes de lecture

playlist1_path = "/home/Lebargy/Desktop/Liste1.m3u8"
playlist2_path = "/home/Lebargy/Desktop/Liste2.m3u"

# Créer une instance VLC

instance = vlc.Instance()

# Modifier la commande VLC pour spécifier le plein écran et masquer les contrôles

commande_vlc = "cvlc"

# Ouvrir VLC avec la commande modifiée

subprocess.Popen(commande_vlc, shell=True)

# Charger les listes de lecture

media_list1 = instance.media_list_new(\[playlist1_path\])
media_list2 = instance.media_list_new(\[playlist2_path\])
random.shuffle(media_list1)
random.shuffle(media_list2)

# Créer un lecteur VLC

player = instance.media_player_new()
list_player = instance.media_list_player_new()
list_player.set_media_player(player)
player.set_fullscreen(True)

# Configurer le volume

player.audio_set_volume(480)

# Charger la première liste de lecture dans le lecteur par défaut

list_player.set_media_list(media_list1)

# Démarrer la lecture

list_player.play()

# Variable pour suivre l'état de la vitesse de lecture

vitesse_acceleree = False

# Définir une fonction de rappel pour gérer l'événement d'appui sur le bouton p1

def bouton_p1_callback():
    list_player.stop()
    list_player.set_media_list(media_list1)
    list_player.play()
    player.set_fullscreen(True)

# Définir une fonction de rappel pour gérer l'événement d'appui sur le bouton p2

def bouton_p2_callback():
    list_player.next()  # Passer à la piste suivante dans la liste de lecture.

# Définir une fonction de rappel pour gérer l'événement d'appui sur le bouton p3

def bouton_p3_callback():
    list_player.stop()
    list_player.set_media_list(media_list2)
    list_player.play()
    player.set_fullscreen(True)

# Définir une fonction de rappel pour gérer l'événement d'appui sur le bouton d'accélération

def bouton_p4_callback():
    global vitesse_acceleree
    if list_player.is_playing():
        if not vitesse_acceleree:
            player.set_rate(3)  # Accélérer la lecture (vitesse 3x)
            vitesse_acceleree = True
        else:
            player.set_rate(1)  # Revenir à la vitesse normale
            vitesse_acceleree = False

# Créer des instances de boutons pour les broches GPIO correspondantes

bouton_p1 = Button(21)
bouton_p2 = Button(2)
bouton_p3 = Button(20)
bouton_p4 = Button(14)

# Assigner les fonctions de rappel aux événements "when_pressed" des boutons

bouton_p1.when_pressed = bouton_p1_callback
bouton_p2.when_pressed = bouton_p2_callback
bouton_p3.when_pressed = bouton_p3_callback
bouton_p4.when_pressed = bouton_p4_callback

# Mettre en pause le script pour le maintenir en cours d'exécution indéfiniment

pause()


0

There are 0 answers