Hallo zusammen,
in meinem Projekt spiele ich in einem Subprozess per mpg123 mp3-Dateien ab. Das habe ich über folgenden Code umgesetzt:
mp3prozess = Popen(['mpg123', '-C', param[0], param[1], param[2]], stdin=PIPE, stdout=PIPE, stderr=PIPE)
stdout, stderr = mp3prozess.communicate()
Nun war die Idee von mir die Wiedergabe mittels Druck auf einen Taster zu pausieren und bei einem erneuten Tastendruck fortzusetzen. Das Abspielen der MP3s sowie das Abfangen des Tastendrucks klappt soweit prima. um im Terminal wie Wiedergabe von mpg123 zu pausieren und dann wieder fortzusetzen genügt jeweils ein Druck auf die Taste [s]. Um dies im Skript zu realisieren wollte ich den Buchstaben s per STDIN in den Subprozess schreiben und hatte das so formuliert:
Der Praxistest liefert mir aber bei einem beherzten Tastendruck die folgende Fehlermeldung:
Traceback (most recent call last):
File "./openNFCPlayer.py", line 42, in pause_an
mp3prozess.stdin.write("s")
TypeError: 'str' does not support the buffer interface
Meine bisherige Recherche hat ergeben, dass das Problem wohl an der Art liegt, wie bzw. mit welchem Typ der Subprozess gestartet wird und man da nicht Daten eines beliebigen anderen Typs, hier also einen String, hineinstopfen kann. Die Ursache habe ich also schon mal gefunden, jedoch habe ich trotz langer Suche nicht herausfinden können, wie man den Code so schreiben muss, dass der Subprozess die Eingabe akzeptiert und im Idealfall auch umsetzt, sprich die Wiedergabe pausiert bzw. fortsetzt.
Kann mir hier jemand auf die Sprünge helfen? Danke schon mal im Voraus.
Gruß
A-M