You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 12:52:16