Ich spiele ein Audio und gleichzeitig eine Eingabe von der Tastatur. Ich habe Threading verwendet, um dies zu erreichen. Ich habe einen neuen Thread erstellt, um das Audio abzuspielen und die Eingabe vom Haupt-Thread zu hören. Aber ich möchte das Abspielen von Audio stoppen, basierend auf einer bestimmten Eingabe von der Tastatur.Wie wird ein Audio vom Abspielen abhängig von der Bedingung in Python gestoppt?
Da ich einen Thread aus einem anderen Thread nicht "töten" kann und ich den Audio-Thread nicht auf den Haupt-Thread hören kann, wenn er nicht aufgehört hat, den Ton zu spielen, wie erreiche ich das?
EDIT: ich diesen Code geschrieben haben:
from multiprocessing import Process
import os
p = Process(target=os.system, args=("aplay path/to/audio/file",))
p.start()
print("started")
while p.is_alive():
print("inside loop")
inp = input("give input")
if inp is not None:
p.terminate()
print(p.is_alive()) # Returns True for the first time, False for the second time
print("terminated")
Dies ist die Ausgabe:
started
inside loop
give input2
True
terminated
inside loop
give input4
False
terminated
Warum ist das passiert? Auch nach der zweiten Schleifeniteration wird der Prozess beendet (p.is_alive() gibt false zurück), aber das Audio wird weiter abgespielt. Der Ton hört nicht auf.
Ich versuche nicht, eine Audiodatei in einer Schleife abzuspielen. Es ist nur eine lange Audiodatei, die ich unterbrechen muss. Diese Zeile 'while self.alarm_status == True: winsound.PlaySound (" alarm.wav ", winsound.SND_FILENAME)' funktioniert nur, wenn die Audiodatei in einer Schleife abgespielt wird. Es kann nur den Zustand nach jeder vollständigen Wiedergabe überprüfen. Es wird nicht den Zustand zwischen dem Abspielen der Audiodatei überprüfen. – anomaly
Bitte sehen Sie meine Bearbeitung. Ich habe Multiprocessing verwendet. – anomaly
Ich habe meine Antwort bearbeitet, um die Arbeit in einem anderen Thread anzuhalten und fortzusetzen, aber um den Ton zu pausieren, müssen Sie entweder die Datei selbst entschlüsseln und streamen oder eine solche Bibliothek verwenden oder die Kontrolle über den verwendeten Player haben (höchstwahrscheinlich unterstützt aplay das pausieren nicht. – CodeCollector