在Visual Studio应用程序中播放声音

时间:2015-08-04 16:05:34

标签: c# audio visual-studio-2015 playback

我正在使用Visual Studio 2015(C#)创建一个程序,我想为它添加声音效果。但是,我查阅了无数的教程,但它们似乎都没有工作,并给了我很多错误。如果有人能给我一个代码来从资源文件播放.wav文件那么我将非常感激

4 个答案:

答案 0 :(得分:0)

如果您要播放的文件是wav文件,请尝试此操作。

res.setHeader("Cache-Control","max-age=" + 365 * 24 * 60 * 60);//Cache for a year
res.removeHeader("Pragma");
res.removeHeader("Expires");

答案 1 :(得分:0)

How to: Play Sounds in an Application

在button1_Click事件处理器下添加以下方法代码:

 System.Media.SoundPlayer player = 
 new System.Media.SoundPlayer();
 player.SoundLocation = @"C:\Users\Public\Music\Sample Music\xxxx.wav";
 player.Load();
 player.Play();

答案 2 :(得分:0)

对于我自己,我写了这个SounceController,希望它有所帮助:

using System.Windows.Media; // add reference to system.windows.presentation.
using System;
using System.IO;
public class SoundController
{
    private bool isPlaying;
    private MediaPlayer player;

    public SoundController()
    {
        player = new MediaPlayer();
    }
    ~SoundController()
    {
        player = null;
    }

    public void Play(string path)
    {
        if (!File.Exists(path) || isPlaying)
            return;

        isPlaying = true;

        player.Open(new Uri(path));
        player.Play();
    }
    public void Stop()
    {
        if (isPlaying)
        {
            isPlaying = false;
            player.Stop();
        }
    }
}

答案 3 :(得分:0)

我建议您使用PInvoke使用winmm.dll播放声音

首先将import System.Runtime.InteropServices命名空间导入到您的项目中。

using System.Runtime.InteropServices;

然后在课堂上你会有

[DllImport("winmm.dll")]
static extern Int32 mciSendString(string command, StringBuilder buffer, int bufferSize, IntPtr hwndCallback);

public void Play(string path ,string name)
{
     // Open
     mciSendString($@"open {path} type waveaudio alias {name}", null, 0, IntPtr.Zero);
     // Play
     mciSendString($@"play {name}", null, 0, IntPtr.Zero);
 }

您可以使用名称播放发送波形文件正确路径的声音。 。给定的名称不需要与wave文件的名称相同。例如:

Play(@"C:\soundeffect.wav", "soundEffect1");

通常会同时播放声音效果。您可以多次调用此方法同时播放多个文件。

Play(@"C:\soundeffect1.wav", "soundEffect1");
Play(@"C:\soundeffect2.wav", "soundEffect2");
Play(@"C:\soundeffect3.wav", "soundEffect3");