从PyCharm启动时,Playsound无法在单独的进程中播放音频,而从命令行启动时,Playsound可以正常工作。
尝试实现this solution会导致不播放任何内容,尽管p.is_alive()返回True。
这是我试过的密码
import multiprocessing
from playsound import playsound
def use_playsound(audio_file):
p = multiprocessing.Process(target=playsound, args=(audio_file,))
p.start()
print(p.is_alive())
input("press ENTER to stop playback")
p.terminate()
def main():
use_playsound("test.mp3")
if __name__ == '__main__':
main()
如果启动进程后使用p.join(),则声音会成功播放。
添加block=False或block=True没有帮助。
修改代码使进程在main()中启动,只在use_playsound函数中保留playsound调用没有任何帮助,然后设置block=False或block=True也没有任何帮助。
在p.start()后引发BaseException会播放声音。但是当我按Enter键后让程序成功退出时,声音仍然不播放。
1条答案
按热度按时间z4iuyo4d1#
当您从命令行启动而不是从编辑器启动时,遇到此类问题时,几乎总是路径名问题。
这是因为python路径可能不同,并且代码使用了 * 相对路径 *,假设文件
test.mp3
在同一个文件夹中。要避免此错误,请使用 absolute 路径,如下所示:
另一种选择是使用对音频播放提供更多控制的不同库,如
pyaudio
或pyglet
。这些库允许您在后台播放音频,并提供控制播放的方法,如暂停和继续。