2017-03-18 1 views
0

Mon problème est que je veux exécuter mpg123 en arrière-plan et lire/mettre en pause un fichier mp3.Mettre en pause mpg123 à travers un sous-processus en Python

J'ai ouvert la sous-processus comme celui-ci:

player = subprocess.Popen(["mpg123", "alarm.mp3", "-C"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) 

Cependant, lorsque je tente de faire une pause mpg123 avec

player.stdin.write("s") 

retourne un nombre qui est basé sur la longueur de la chaîne (en ce cas: 1)

---> Screenshot

Répondre

0

Trouvé le problème! Apaarently vous devez vider le stdin après chaque entrée. Code de travail (notez que je suis passé à mplayer, car avec mpg123 cela ne fonctionnait pas):

player = subprocess.Popen(["mplayer", "/music.mp3"], stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, universal_newlines=True) 
time.sleep(10) 
player.stdin.write("pause") 
player.stdin.flush()