SoundPlayer没有播放任何捆绑的Windows声音PCM wav文件

时间:2012-08-06 21:24:41

标签: c# .net wav pcm soundplayer

在C#中,我无法从System.Media获取SoundPlayer类,使用以下代码从我的C:\ Windows \ Media文件夹中播放任何wav。我得到的只是声音:

String filename = "C:\\Windows\\Media\\tada.wav";
SoundPlayer sp = new SoundPlayer(filename);
sp.Load();
sp.Play();

我用一个名为“Gspot”的程序检查了波形文件“tada.wav”,该程序告诉我音频编解码器是“PCM Audio”。我没有收到任何编译器警告或错误,并且在运行程序时没有引发异常。我只是听不到任何声音。我的扬声器已开启,我可以使用Windows Media Player播放该文件。

将wav添加为项目资源没有任何区别。有人可以帮我弄清楚为什么我听不到任何声音?

2 个答案:

答案 0 :(得分:1)

您是否将此作为控制台应用程序中main()方法的主体使用?应用程序可能会结束,从而关闭播放音频的线程。

我将您的代码复制并粘贴到新的“Visual C#控制台应用程序”的主体中。我添加了“using System.Text;”在文件顶部的行,编译,逐步执行它,它工作。当我运行它(没有调试)我没有声音。

如果添加以下行:

System.Threading.Thread.Sleep(2000);

在调用Play()之后,应用程序将保持足够长的时间来播放音频。

答案 1 :(得分:0)

Play()方法将声音播放为单独的线程。也就是说,控制台应用程序旋转一个新的线程来播放声音。这非常适合Windows应用程序,因此声音播放不会停止Windows主线程。在控制台应用程序中,当父线程结束时,子线程也会死掉。 - 因此没有声音。

PlaySync()方法不会产生新线程,因此会使控制台应用程序线程保持活动状态,直到它完成播放声音为止。