我正在使用 VB Express 2012 (VB.net) 制作具有 .wav 音效和 .mp3 背景音乐的学校教育游戏。我的代码在下面给出,并且在任何个人计算机上都可以正常工作,但是由于我使用 WMPLib.WindowsMediaPlayer 播放 mp3 的方法,未授予将文件写入/删除文件到包含应用程序执行文件的文件夹的权限的计算机遇到了障碍。由于 wmp 需要指向 mp3 文件的外部文件的 URL(为什么???),我必须将 my.resource 文件夹中的 mp3 写入客户端计算机以获得有效的 URL,然后在关闭程序时将其删除。如果未授予权限,则此操作失败。
是否有另一种方法可以使用不需要将文件写入客户端计算机的 wmp.dll 从已发布的应用程序中播放来自 my.resources 的 mp3 文件? 也许是某种流媒体?我以前从未深入过那个领域。顺便说一句,将我的 mp3 转换为 wav 文件是不合理的,因为应用程序的大小太大了。(我有很多 mp3,虽然我的代码片段仅显示一个作为示例。这是我的代码:
对于我使用的音效
My.Computer.Audio.Play(My.Resources.soundeffect, AudioPlayMode.Background)
对于背景音乐,为了让歌曲播放不受音效干扰,我添加了 wmp.dll 引用并使用以下代码:
Dim WithEvents Player As New WMPLib.WindowsMediaPlayer
Player.settings.setMode("Loop", True)
Dim appPath As String
'get the location of application execute file
appPath = Application.StartupPath & "\" & "SongNameHere" & ".mp3"
'write the mp3 file to the folder containing the execute file so wmp accepts the URL
My.Computer.FileSystem.WriteAllBytes(appPath,My.Resources.ResourceManager.GetObject("SongNameHere"), False)
'assign the valid URL to the wmp player, it autostarts.
Player.URL = appPath
而且,以防万一它很重要,在 .formclosing 我使用以下代码删除歌曲:
My.Computer.FileSystem.DeleteFile(Application.StartupPath & "\" & "SongNameHere" & ".mp3")