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


Answers:


233

您可以使用:

System.Media.SoundPlayer player = new System.Media.SoundPlayer(@"c:\mywavfile.wav");
player.Play();

32
这是完美的答案,因为一个新的用户可以理解的SoundPlayer属于System.Media ....
Khilen Maniyar

30
@Ali ... stackoverflow.com/questions/2361857/what-does-means-in-c-sharp “这意味着将以下字符串解释为文字。意味着,字符串中的\实际上将是输出,而不必用“ \\”表示文字字符”
Praveen 2014年

@Praveen的回答提供了另一个有益的事实。感谢Dexter询问“ @”符号。
艾伦·利纳托茨

2
@bporter,这似乎不适用于mp3文件;它仅限于wav格式
Najeeb

这个API真可惜!它既不播放MP3也不播放MIDI文件。对我完全没用。至少从Windows XP开始,Windows对MP3和MIDI具有本机支持。对微软感到羞耻!
Elmue '18

91

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


很有用。它可以帮助使用系统默认值。
Babak.Abad 2014年

4
请务必注意,如果在Windows设置(至少是较新的Windows)中关闭系统声音,则不会播放任何声音。
Artholl '16

32

对于Windows窗体,一种方法是使用 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()
    }
}

MSDN页面

这也适用于WPF,但是您还有其他选择,例如使用MediaPlayer MSDN页面


1
更好的是,在生产代码中,只创建一次并多次使用它,而不是每次按下按钮时都创建一次。
Shibumi 2012年

我将该函数重命名为ButtonClick,仅仅是因为它似乎遵循了C#的命名风格。
伊桑·比林

1
@EthanBierlein-当我发布答案时,这可能是命名约定;)
ChrisF

1
嗯 那是以前的惯例吗?
伊桑·比林

@EthanBierlein仍然是Visual Studio Windows窗体项目自动生成的东西
JAD

13

附加信息。

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

  1. 在典型的场景中使用五种标准的系统声音,即

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

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

    • 感叹号 -播放感叹号图标(系统消息框窗口播放此图标)

    • 哔声(默认系统声音)

    • 紧急停止(“手”)-播放错误(系统消息框窗口播放此错误)
       

    上课的方法System.Media.SystemSounds会帮你玩。
     

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

    • 这样,用户可以轻松地从您的应用程序中更改或删除声音,并且您无需为此编写任何用户界面-它已经存在
    • 每个用户个人资料都可以以自己的方式覆盖这些声音
    • 如何:
      • 在Windows注册表中创建应用程序的声音配置文件(提示:无需编程,只需将密钥添加到应用程序的安装程序中即可。)
      • 在您的应用程序中,从注册表项中读取声音文件路径或DLL资源并进行播放。(如何播放声音,您可以在其他答案中看到。)

感谢您提供这些额外信息。我想举一个例子:System.Media.SystemSounds.Hand.Play(); Thread.Sleep(2000);播放声音Hand。请注意,它是异步播放的,在这里我添加了一个sleep命令来等待声音的完成。如果您不等待而播放另一种声音,则上一个声音会立即停止。
马特


2

要使用C#以Windows形式播放音频文件,让我们检查以下简单示例:

1.转到Visual Studio(VS-2008 / 2010/2012)->文件菜单->单击新建项目。

2.在“新建项目”->单击“ Windows窗体应用程序”->“提供名称”,然后单击“确定”。

一个新的“ Windows窗体”项目将打开。

3.将“按钮”控件从“工具箱”拖放到Windows窗体。

4.双击按钮以自动创建默认的Click事件处理程序,并添加以下代码。

此代码显示“文件打开”对话框,并将结果传递到您将在下一步中创建的名为“ playSound”的方法。

 OpenFileDialog dialog = new OpenFileDialog();
 dialog.Filter = "Audio Files (.wav)|*.wav";


if(dialog.ShowDialog() == DialogResult.OK)
{
  string path = dialog.FileName;
  playSound(path);
}

5.在button1_Click事件处理程序下添加以下方法代码。

 private void playSound(string path)
 {
   System.Media.SoundPlayer player = new System.Media.SoundPlayer();
   player.SoundLocation = path;
   player.Load();
   player.Play();
 }

6.现在,仅通过按F5键运行代码即可运行该应用程序。

7.单击按钮,然后选择一个音频文件。文件加载后,将播放声音。

我希望这对初学者是有用的例子。


1

我认为您必须首先将.wav文件添加到参考资料。例如,您有一个名为Sound.wav的声音文件。将Sound.wav文件添加到Resources之后,可以使用以下代码:

System.Media.SoundPlayer player = new System.Media.SoundPlayer(Properties.Resources.Sound);
player.Play();

这是播放声音的另一种方法。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.