C# .NET WinForm播放音频报错求助:PCM格式问题
解决C# WinForm中SoundPlayer播放音频的异常问题
问题根源
你遇到的两个错误核心原因:
- 第一个错误:原始WAV文件不是PCM编码的标准WAV格式,SoundPlayer仅支持PCM编码的WAV文件。
- 第二个错误:你转换的是裸PCM数据(无WAV文件头),SoundPlayer无法识别这种无容器的裸音频数据,必须是带完整WAV头的标准WAV文件。
解决步骤
1. 生成符合要求的PCM编码WAV文件
用音频编辑工具(比如Audacity)转换音频:
- 导入目标音频文件。
- 导出时选择
WAV格式,编码设置为PCM(16位),采样率推荐44.1kHz或22kHz,声道数单声道/立体声均可。
2. 重新添加项目资源
- 删除项目资源文件夹中旧的
MouseClick.wav文件。 - 将转换好的标准WAV文件复制到资源文件夹。
- 右键项目 → 属性 → 资源 → 添加资源 → 添加现有文件,选择新的WAV文件,确保资源类型为
Audio。
3. 优化播放代码(避免资源加载异常)
替换原播放函数为以下代码,通过MemoryStream加载资源,降低直接调用资源字节数组的异常概率:
private void playSimpleSound() { using (MemoryStream audioStream = new MemoryStream(Properties.Resources.MouseClick)) using (SoundPlayer soundPlayer = new SoundPlayer(audioStream)) { soundPlayer.Play(); } }
4. 额外排查点
- 若需要非阻塞播放,可替换
Play()为PlayAsync()方法,避免阻塞UI线程。 - 检查资源文件属性:右键资源文件夹中的WAV文件 → 属性 → 生成操作设置为
Embedded Resource。
内容的提问来源于stack exchange,提问作者John Tan
相关产品推荐
相关产品推荐

