Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 播放多种声音+;WinForm中的循环音乐_C#_Winforms_Audio - Fatal编程技术网

C# 播放多种声音+;WinForm中的循环音乐

C# 播放多种声音+;WinForm中的循环音乐,c#,winforms,audio,C#,Winforms,Audio,我试过几种方法。一个是声音播放器,但据我所知,一次只能播放一个声音,我需要背景音乐循环。我还使用了winmm.dll尝试播放循环音乐,但它似乎对我不起作用。而且,我似乎不能多次播放这个声音。这是我试过的 [DllImport("winmm.dll")] private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwnd

我试过几种方法。一个是声音播放器,但据我所知,一次只能播放一个声音,我需要背景音乐循环。我还使用了winmm.dll尝试播放循环音乐,但它似乎对我不起作用。而且,我似乎不能多次播放这个声音。这是我试过的

    [DllImport("winmm.dll")]
    private static extern long mciSendString(string strCommand, StringBuilder strReturn, int iReturnLength, IntPtr hwndCallback);


        mciSendString(@"open C:\\Users\\jberry\\Documents\\Pics\\MusicLoop2.wav type waveaudio alias applause", null, 0, IntPtr.Zero);
        mciSendString(@"play applause", null, 0, IntPtr.Zero);
这是可行的,但只能玩一次。我看到很多帖子都是这样写的

        mciSendString(@"open C:\\Users\\jberry\\Documents\\Pics\\MusicLoop2.wav type waveaudio alias applause", null, 0, IntPtr.Zero);
        mciSendString(@"play applause repeat", null, 0, IntPtr.Zero);

但那根本就不起作用。有谁能帮我找到一种快速播放多种声音+重复歌曲循环的方法吗?如果我不需要安装任何DLL,那就太好了,但是当原始帖子提到让声音播放一次,但尝试循环时没有声音时,我会做需要做的事情,代码确实没有问题。问题在于
mciSendString
-它无法循环wav文件。如果需要循环播放声音,请使用mp3文件

额外提示:我没有使用字符串命令来
mciSendString
,而是使用本文提供的c#/vb.net包装器

以下是我如何使用包装器:

Dim myPlayer = New MciPlayer("resources\TimerAlert.mp3", "myAlias")
myPlayer.PlayLoop()
myPlayer.StopPlaying()

我强烈建议使用
NAudio
。这是一个开源库,可以通过NuGet轻松安装。不需要P/Invoke。它支持同时播放声音。刚刚安装,但我不知道如何使用它。查找文档,但有什么诀窍吗?谷歌搜索“NAudio教程”返回了许多有用的结果(甚至两个视频)。只需遵循一个教程(如果您最终使用它,请关闭此问题),它非常容易使用。我会看看“如何”部分,其中包括演示。但这里有一个特定的东西,我现在让它循环。非常感谢。我的另一个问题是,我不能在播放一次声音后再播放一次