Python命令行中simpleaudio播放WAV后崩溃,如何返回主循环?
解决WAV播放后程序崩溃并返回命令行循环的问题
你遇到的-1073741819 (0xC0000005)是Windows系统的内存访问冲突错误,根源是simpleaudio的播放线程还在后台运行时,主线程直接回到命令行循环,引发线程资源冲突导致崩溃。
修复方案
在音频播放后添加等待完成的方法,让函数阻塞到音频播放结束再返回,具体修改如下:
修改file.py中的open_file函数:
# some code before this. def open_file(): file_path = input('Type file path (with complete file name): ') if file_path.endswith('.wav'): wave_obj = simpleaudio.WaveObject.from_wave_file(file_path) play_obj = wave_obj.play() print('File playing...') play_obj.wait_done() # 等待音频播放完成后再继续执行 print('Playback finished.') else: print('Unknown file extension.')
原理说明
simpleaudio.play()会启动一个后台线程播放音频,原代码没有等待这个线程结束就让函数返回,导致后台线程和主线程的资源访问冲突,触发内存错误。添加wait_done()后,当前线程会等待播放线程完成,确保资源正确释放,之后再回到main.py的命令行循环,正常显示>> 提示符。
额外注意点
- 不要手动添加多余的
return语句,函数执行完毕会自动返回,错误位置的return会打乱程序流程,导致直接退出。 - 确保
simpleaudio已正确安装:执行pip install simpleaudio,Windows系统下如果安装失败,可检查是否缺失VC++运行库。
内容的提问来源于stack exchange,提问作者FlashPlayer_
相关产品推荐
相关产品推荐

