【问题标题】:Playing Multiple Sounds + Looping Music in WinForm在 WinForm 中播放多种声音 + 循环播放音乐
【发布时间】:2021-01-16 23:25:22
【问题描述】:

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

【问题讨论】:

  • 我强烈建议使用NAudio。它是一个开源库,可以通过 NuGet 轻松安装。无需 P/Invoke。支持同时播放声音。
  • 刚安装,不知道怎么用。查找文档,但有什么诀窍吗?
  • 谷歌搜索“NAudio 教程”返回了许多有用的结果(甚至是两个视频)。只需按照教程(如果您最终使用它,请关闭此问题)
  • 它非常易于使用。我会看一下“如何”部分here,他们已经包含了演示。但这里有一些特定于looping audio
  • 我现在正在循环播放。谢谢你。我遇到的另一个问题是我无法在播放一次后再次播放声音

标签: c# winforms audio


【解决方案1】:

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

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

这是我使用包装器的方式:

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

【讨论】:

    猜你喜欢
    • 2021-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多