Ich bin ein Musik-Player-System mit omxplayer coding, alles ist fertig, aber ich habe ein Problem, muss ich erkennen, wann die Musik von subprocess.wait() bis zum Ende der abgeschlossen ist Prozess und ich muss Bytes in den Prozess schreiben wie 'p'.encode() zu pausieren,' q'.encode() um zu stoppen etc ... Das Problem ist, dass ich nicht Bytes in einen Subprozess schreiben kann während Warten Sie darauf ... Wenn jemand weiß, wie man das Ende eines Prozesses erkennt und gleichzeitig darauf schreibt, dann sind Sie willkommen!Kann nicht schreiben, während subprocess.wait
Hier ist mein Code:
class MusicPlayer(Thread):
def __init__(self, manager, playlist=[]):
self.playlist = []
self.index = 0
self.process = None
self.paused = False
self.stopped = False
self.manager = manager
self.progress_bar = MusicProgressBar(self)
self.progress_bar.start()
Thread.__init__(self)
def run(self):
while True:
if len(self.playlist) is 0:
time.sleep(1)
continue
self.process = subprocess.Popen(['omxplayer' , '-o' , 'local', self.playlist[self.index].file_url])
self.progress_bar.play(self.playlist[0].file_url)
self.paused = False
self.process.wait()
self.index += 1
if self.index >= len(self.playlist):
self.index = 0
def play(self, playlist):
self.playlist = playlist
self.index = 0
def next(self):
if self.process is None: return
self.process.stdin.write('q'.encode())
self.process.stdin.flush()
def before(self):
for i in range(0,2):
self.index -= 1
if self.index < 0:
self.index = len(self.playlist-1)
def stop(self):
if self.process is None: return
self.process.stdin.write('q'.encode())
self.process.stdin.flush()
self.stopped = True
def pause(self):
if self.process is None: return
if self.paused: return
self.process.stdin.write('p'.encode())
self.process.stdin.flush()
self.paused = True
def resume(self):
if self.process is None: return
if not self.paused: return
self.process.stdin.write('p'.encode())
self.process.stdin.flush()
self.paused = False
Danke wirklich viel für Ihre Antworten! Mit freundlichen Grüßen, Julien
Werfen Sie einen Blick auf ['Popen.communicate()'] (https://docs.python.org/3/library/subprocess.html#subprocess.Popen.communicate). – martineau