C++中PlaySound播放Windows错误音效而非目标MP3的问题求助
解决PlaySound无法播放MP3的问题
根本原因
PlaySound函数并不支持MP3格式,它仅能播放WAV、WMA等Windows原生支持的音频格式,这就是你调用后触发系统错误音效的核心原因。
替代方案:使用MCI播放MP3
Windows的媒体控制接口(MCI)支持MP3这类格式,以下是可直接运行的测试代码:
#include <Windows.h> #include <mmsystem.h> #include <conio.h> #pragma comment(lib, "Winmm.lib") int main() { // 打开目标MP3文件并设置别名 mciSendString(L"open \"C:\\Users\\niko\\Desktop\\key01 F.mp3\" type mpegvideo alias piano_sound", NULL, 0, NULL); // 开始播放 mciSendString(L"play piano_sound", NULL, 0, NULL); // 等待用户按下任意键再退出,防止程序直接终止导致音频中断 _getch(); // 关闭文件释放资源 mciSendString(L"close piano_sound", NULL, 0, NULL); return 0; }
注意事项
- 路径需使用宽字符串前缀
L,避免编码解析错误;如果用多字节字符串,可通过MultiByteToWideChar函数转换 - 必须保留等待输入的逻辑,否则程序执行完毕后会立即结束,音频播放会被强制中断
- 播放完成后务必调用
close命令释放资源,避免内存泄漏
对原有尝试的说明
- 路径分隔符用
/或者\\都没问题,你的路径写法本身没有错误 - 重复引入头文件不会影响功能,问题根源完全在于
PlaySound的格式支持限制
内容的提问来源于stack exchange,提问作者Merd Ceferzade
相关产品推荐
相关产品推荐

