【问题标题】:WMP sounds are not working on other ComputersWMP 声音在其他计算机上不起作用
【发布时间】:2012-09-27 10:58:19
【问题描述】:

我的项目是构建一个简单的游戏,目前我只制作了带有 5 个按钮的主菜单 Form1。这些按钮上有一个MouseClickMouseEnter,我有一个使用WMP 方法(使用WMPLib 和axWMPLib)的背景音乐。

我的问题是当我将bin/debug 放在rar 文件中并将其提供给我的朋友时,他们说他们听不到声音。我通过 WMP 版本 11 制作了该项目,所以我问他们的 WMP 版本是否为 11,他们说是。我不知道为什么我在我的电脑上听到声音而他们却没有。

我试图给他们文件夹:

  • bin\Release
  • bin\Debug
  • x86\Release
  • x86\Debug

但他们仍然说他们听不到任何声音。

编辑

我所有的声音都在一个名为“声音”的文件夹中。我找到了一些细节,发现您需要将这些 WMP 声音嵌入到“资源”中。

那么我该怎么做,以及当Form1 加载时我如何调用它们。不,以下代码不起作用:

BackGround.URL = Properties.Resources.Invincible;

它说我无法将System.IO.UnmanagedMemoryStream 转换为String

【问题讨论】:

  • 您所有的音乐文件都存储在哪里?它们在调试/发布文件夹中吗?
  • 请向我们展示您加载音乐文件的代码。
  • @user1703020,在 StackOverflow 上,问题下方的空格仅供回答,因此如果您有其他要添加的信息,您应该编辑您的问题以添加它。我已将下面的答案标记为删除,但我相信您应该能够将其删除并将该信息添加到帖子中。
  • 这可能有很多原因。没有代码,就不可能肯定地说。但是,最明显的两件事是,您创建了声音文件并使用您的朋友没有的音频编解码器对其进行了压缩,或者您正在引用安装在您的机器上而不是您的朋友机器上的库。发布一些代码,以便我们进一步帮助您。

标签: c# winforms audio windows-media-player wmplib


【解决方案1】:

真诚地我不推荐你使用WMP,所以看看SoundPlayer 类。 但是我认为问题在于您没有为文件提供正确的位置。所以你可以做的是在你的应用程序文件夹中找到你的文件,获取它的位置并创建音乐文件的位置。

那就试试吧:

string musicName = Application.StartupPath + "music.mp3";

或者,如果您在应用程序路径中有 Sounds 文件夹,请使用:

string musicName = Application.StartupPath + "\\Sounds\\music.mp3";

否则,如果您将音乐文件插入应用程序资源中:

BackGround.URL = Properties.Resources.Invincible;

不起作用,因为BackGround.URL 是字符串类型,而Properties.Resources.Invincible 是音乐文件流。

我不知道是否使用 WMP 可以设置流从哪里可以播放文件。虽然我之前链接的SoundPlayer 类包含一个属性,您可以在其中设置输入流。你可以这样做:

SoundPlayer mySoundPlayer = new SoundPlayer();
mySoundPlayer.Stream = Properties.Resources.Invincible;
mySoundPlayer.Load();
mySounPlayer.Play(); //plays the Properties.Resources.Invincible sound

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-27
    • 1970-01-01
    • 1970-01-01
    • 2015-11-02
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    • 1970-01-01
    相关资源
    最近更新 更多