同时播放2个声音

时间:2011-01-19 20:19:06

标签: c# .net-3.5

为任何笔记本电脑设计游戏:

我想同时播放2个声音!按下按钮时的背景音乐和声音!

使用System.Media不允许我一起播放2个声音。对于背景音乐,我使用了以下内容:

SoundPlayer sp = new SoundPlayer(@"..\..\bin\debug\tribal dance.wav");
sp.Play;

如果我播放了另一个SoundPlayer,则前一个停止!

我想让背景音乐继续播放,直到表格关闭!同时,如果单击一个按钮,音乐将播放另一个声音!

我还尝试将Windows Media Player添加到工具箱并使用它(允许我同时播放2个声音)。这工作正常,但如果我把它(@""..\..\bin\debug\tribal dance.wav");,路径将会出错 我需要这样说才能被任何计算机阅读。

有什么建议吗?

3 个答案:

答案 0 :(得分:6)

使用SoundPlayer无法一次播放两种声音。

SoundPlayer正在使用本机WINAPI PlaySound功能来完成不支持播放同步声音的任务。创建SoundPlayer的多个实例无济于事。

有很多选项,其中大部分涉及为窗口的本机音频libraryDirectSound实现大量低级API(注意既不是C#也需要很多互操作代码)

最简单的选择是依靠Windows媒体播放器为您播放音频。

添加对“C:\ Windows \ System32 \ wmp.dll”

的引用

然后使用

var player = new WMPLib.WindowsMediaPlayer();
player.URL = @"..\..\bin\debug\tribal dance.wav";

注意:设置URL属性后立即开始播放

这种方法的缺点是您依赖媒体播放器来使您的应用程序正常工作。从好的方面来说,您可以使用媒体播放器支持的任何文件格式。

答案 1 :(得分:0)

使用(WMPLib)Windows Media Player库,您可以轻松地做到这一点。将您的文件保存在Debug / Sound文件夹中,并遵循以下代码。这将同时运行2个文件。要在项目中添加WMPLib,请通过NuGet软件包管理器将其添加。

bus

答案 2 :(得分:-3)

http://msdn.microsoft.com/en-us/library/dd562851%28v=VS.85%29.aspx这篇文章可能有所帮助 如果您需要文件的绝对路径,可以使用下一个代码

string soundFile = Path.Combine(Directory.GetCurrentDirectory() + "file.wav");