如何在C#,.NET中播放声音

Khi*_*yar 105 .net c# audio

我有一个用C#/ .NET编写的Windows应用程序.

单击按钮时如何播放特定声音?

bpo*_*ter 208

你可以使用:

System.Media.SoundPlayer player = new System.Media.SoundPlayer(@"c:\mywavfile.wav");
player.Play();
Run Code Online (Sandbox Code Playgroud)

  • 这是完美的答案,因为新用户可以理解SoundPlayer属于System.Media .... (30认同)
  • @Ali ... http://stackoverflow.com/questions/2361857/what-does-means-in-c-sharp"这意味着将以下字符串解释为文字.意思是,字符串中的\实际上是" \"在输出中,而不是必须把"\\"表示字面字符" (29认同)
  • 只是试图赞美普拉文斯的评论,因为我学到了一些东西,并意识到我之前已经投了赞成票.显然我不学习 (13认同)
  • @bporter,这似乎不适用于 mp3 文件;它仅限于 wav 格式 (2认同)

kd7*_*kd7 84

例如,您可以使用SystemSoundSystem.Media.SystemSounds.Asterisk.Play();.

  • 重要的是要注意,如果您在Windows设置(至少较新的Windows)中关闭系统声音,它不会播放任何内容. (2认同)

Chr*_*isF 31

对于Windows Forms,一种方法是使用 SoundPlayer

private void Button_Click(object sender, EventArgs e)
{
    using (var soundPlayer = new SoundPlayer(@"c:\Windows\Media\chimes.wav")) {
        soundPlayer.Play(); // can also use soundPlayer.PlaySync()
    }
}
Run Code Online (Sandbox Code Playgroud)

MSDN页面

这也适用于WPF,但您有其他选项,如使用MediaPlayer MSDN页面


mir*_*lav 10

附加信息.

对于希望无缝适应Windows环境的应用程序,这是一个高级答案.其他答案中提供了播放特定声音的技术细节.除此之外,请注意以下两点:

  1. 在典型情况下使用五种标准系统声音,即

    • 星号 - 当您想要突出显示当前事件时播放

    • 问题 - 玩问题(系统消息框窗口播放此问题)

    • 感叹号 - 使用excalamation图标播放(系统消息框窗口播放此内容)

    • 蜂鸣声(默认系统声音)

    • 关键停止("手") - 播放错误(系统消息框窗口播放此错误)
       

    上课方法System.Media.SystemSounds会为你演奏.
     

  2. 声音控制面板中实现用户可自定义的任何其他声音

    • 这样,用户可以轻松地更改或删除应用程序中的声音,您无需为此编写任何用户界面 - 它已经存在
    • 每个用户配置文件都可以自己的方式覆盖这些声音
    • 如何:


Ale*_*eks 8

Code bellow允许播放mp3文件和内存中的wave文件

player.FileName = "123.mp3";
player.Play();
Run Code Online (Sandbox Code Playgroud)

来自http://alvas.net/alvas.audio,samples.aspx#sample6

Player pl = new Player();
byte[] arr = File.ReadAllBytes(@"in.wav");
pl.Play(arr);
Run Code Online (Sandbox Code Playgroud)

来自http://alvas.net/alvas.audio,samples.aspx#sample7