Python: Befehl Senden, um mplayer unter-slave-Modus

Ich versuche zu senden-Befehl via pipe zu mplayer, wenn dieses unter-slave-Modus so:

import subprocess, time
# start mplayer
song = 'mysong.mp3'
cmd = ['mplayer', '-slave', '-quiet', song]
p = subprocess.Popen(cmd, stdout=subprocess.PIPE, stdin=subprocess.PIPE)

# send a command every 3 seconds.
# Full command reference here: http://www.mplayerhq.hu/DOCS/tech/slave.txt 
while True:
    print('sleep 3 seconds ...')
    time.sleep(3)
    cmd = 'get_meta_artist'
    print('send command: {}'.format(cmd))
    p.stdin.write(cmd)
    output = p.communicate()[0]
    print(output)

Aber der Ausgang war nichts.

Nahm ich das Beispiel aus diese Frage.

Läuft die gleiche mplayer-Befehl im terminal funktioniert einwandfrei. Was vermisse ich hier?

UPDATE:

Änderte ich meine cmd aus "get_meta_artist" zu "get_meta_artist\n" so, dass ein Zeilenumbruch gesendet wird, um das Rohr als gut, aber noch habe ich nichts in der Ausgabe.

UPDATE2:

Änderte ich die cmd in "\npause\n" und die Musik unterbrochen wurde. Das bedeutet also, dass das senden-Befehl über stdin gearbeitet. Es bedeutet, dass der Ausgang Zeichenfolge "\nget_meta_artist\n" - Befehl nicht bekomme, geleitet Sie zurück, als erwartet....

InformationsquelleAutor kakyo | 2013-04-06
Schreibe einen Kommentar