从资源 C# 播放音乐

Posted

技术标签:

【中文标题】从资源 C# 播放音乐【英文标题】:Playing Music from resources C# 【发布时间】:2016-11-18 21:52:29 【问题描述】:

我想在我的新项目的启动器中播放一些背景音乐。但我得到一个错误。

private void playlooping()

    SoundPlayer.PlayLooping(system.Resources.Bgm);


//Bgm is the name of the song.

由于某种原因,我得到了错误

方法 'PlayLooping' 没有重载需要 1 个参数

【问题讨论】:

它基本上意味着你不能只用一个或任何参数调用PlayLooping。查看文档here 您可以看到PlayLooping 不接受任何参数。或许this 的回答对你有帮助。 那么我如何将我的音乐文件分配给播放循环。我如何告诉它播放我想要的文件 您的资源是音频文件的路径还是音频文件本身? 我在资源中添加了音频文件,因此该路径指向音频文件。如果那是您所说的,那不是原来的吗? 【参考方案1】:

正如我在评论中提到的,PlayLooping does not take any arguments。因此,您需要指定要在其他地方播放的声音。这可以通过SoundPlayer-Constructor 设置它来完成,如下所示:

// via string path
var soundPlayer = new SoundPlayer(@"C:\somePath\someFile.wav");

// via stream
var soundPlayer = new SoundPlayer(musicStream);

所以如果你的资源是一个字符串,你应该很好地使用:

var soundPlayer = new SoundPlayer(system.Resources.Bgm);

替代方法是在通过Site- 或Stream-SoundPlayer 对象的属性实例化您的SoundPlayer 后设置字符串路径或流:

var soundPlayer = new SoundPlayer();

// via path
soundPlayer.Site = @"C:\path\test.wav";

// via stream
soundPlayer.Stream = someStream;

正确设置后,您应该可以致电PlayLooping。所以你的最终代码应该是这样的(适用于我的测试窗口窗体应用程序,声音文件只需放在我的调试文件夹中):

var soundPlayer = new SoundPlayer("test.wav");
soundPlayer.PlayLooping();

您可以在SoundPlayer 上找到完整的文档:https://msdn.microsoft.com/en-us/library/system.media.soundplayer(v=vs.110).aspx

【讨论】:

好的,我替换 SoundPlayer.PlayLooping(system.Resources.Bgm);使用 var soundPlayer = new SoundPlayer(system.Resources.Bgm);线。好消息是错误消失了。不好的是。我启动应用程序时仍然听不到音乐 你还是应该打电话给soundPlayer.PlayLooping() :) "soundplayer 不包含 PLaylooping 的定义"?? 私有 void PlayLooping() SoundPlayer.Playlooping(); var soundPlayer = new SoundPlayer(Resources.Bgm); 应该是这样的:var soundPlayer = new SoundPlayer(Resources.Bgm); soundPlayer.PlayLooping();

以上是关于从资源 C# 播放音乐的主要内容,如果未能解决你的问题,请参考以下文章

MPMusicPlayerController 可以从本地资源播放音乐吗?

C#用按钮播放本地音乐

使用 c# wpf 从资源文件播放声音

下面是C#程序中的一个播放音乐的方法,这是别人的代码,为啥我更换不了播放的歌曲呢,本人是C#菜鸟

asp.net c#如何编写学校体操定时音乐播放

C#中如何控制播放音乐的声音大小