在 while 循环中异步播放声音
Play a sound asynchronously in a while loop
如何在 while 循环中异步播放声音,但又不重叠声音。等待上一个播放完成,然后再播放,依此类推,直到 while 循环 运行ning。当然,当播放 运行ning 时,while 循环应该继续 运行。
import time
from playsound import playsound
while True:
time.sleep(0.1)
playsound('sound.wav', block=False) # Please suggest another module, "playsound" stopped working and I gave up on fixing it.
print('proof that the while loop is running while the sound is playing')
编辑:还有一点,播放不应该排队,一旦while循环停止,播放也必须停止(只让播放的那个播放完)
第二天我设法解决了这个问题。
我使用了线程,我不得不在 class 中使用它来检查它是否存在,因为我不能只是 t1 = threading.Thread(target=func) t1.start( ) 在 while 循环中,因为我之前需要检查线程是否处于活动状态。
所以...
import threading
from playsound import playsound
class MyClass(object):
def __init__(self):
self.t1 = threading.Thread(target=play_my_sound)
def play_my_sound():
playsound('sound.wav')
def loop():
while True:
if not my_class.t1.is_alive():
my_class.t1 = threading.Thread(target=play_my_sound)
my_class.t1.start()
if __name__ == "__main__":
my_class = MyClass()
loop()
这回答了我的问题,声音在 while 循环中在它自己的线程上播放,并且只有在前一个结束时才开始播放。
注意:我的 playsound 库有问题,但这是因为我必须使用 \
作为路径而不是 /
- 在我的原始代码中,声音不相同文件夹作为主脚本。我也不得不降级到playsound==1.2.2版本。
如何在 while 循环中异步播放声音,但又不重叠声音。等待上一个播放完成,然后再播放,依此类推,直到 while 循环 运行ning。当然,当播放 运行ning 时,while 循环应该继续 运行。
import time
from playsound import playsound
while True:
time.sleep(0.1)
playsound('sound.wav', block=False) # Please suggest another module, "playsound" stopped working and I gave up on fixing it.
print('proof that the while loop is running while the sound is playing')
编辑:还有一点,播放不应该排队,一旦while循环停止,播放也必须停止(只让播放的那个播放完)
第二天我设法解决了这个问题。
我使用了线程,我不得不在 class 中使用它来检查它是否存在,因为我不能只是 t1 = threading.Thread(target=func) t1.start( ) 在 while 循环中,因为我之前需要检查线程是否处于活动状态。
所以...
import threading
from playsound import playsound
class MyClass(object):
def __init__(self):
self.t1 = threading.Thread(target=play_my_sound)
def play_my_sound():
playsound('sound.wav')
def loop():
while True:
if not my_class.t1.is_alive():
my_class.t1 = threading.Thread(target=play_my_sound)
my_class.t1.start()
if __name__ == "__main__":
my_class = MyClass()
loop()
这回答了我的问题,声音在 while 循环中在它自己的线程上播放,并且只有在前一个结束时才开始播放。
注意:我的 playsound 库有问题,但这是因为我必须使用 \
作为路径而不是 /
- 在我的原始代码中,声音不相同文件夹作为主脚本。我也不得不降级到playsound==1.2.2版本。