从资源 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 可以从本地资源播放音乐吗?