在WinForm中播放多个声音+循环音乐

时间:2015-05-11 22:11:09

标签: c# winforms audio

我尝试了几种方法。一个是SoundPlayer,但根据我的理解,一次只能播放1个声音,我需要背景音乐循环播放。我也使用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,但我会做什么

1 个答案:

答案 0 :(得分:0)

当原始帖子提到让声音播放一次但尝试循环时没有声音时,代码确实没有任何问题。问题出在 mciSendString - 它无法循环 wav 文件。如果您需要循环播放声音,请使用 mp3 文件。

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

这是我如何使用包装器:

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