【问题标题】:Dynamic audio player for an XNA GameXNA 游戏的动态音频播放器
【发布时间】:2013-06-15 20:12:38
【问题描述】:

我目前正在做一个C#的自定义媒体播放器,这个东西的主要目的是让用户播放自己的音乐文件。 我已经有一个这种播放器(https://bitbucket.org/_Bruce/media-player),它工作正常,但只支持波形文件。 这个限制让我很困扰,因为 mp3 是一种很小的格式(关于磁盘空间)。

我已经通过使用FromUri 方法尝试过并且或多或少地成功完成了这项任务,但是有一个棘手的问题:如果机器的用户名包含空格,则编译器将不接受该字符串,我已尝试使用 Uri.EscapeUriString 解决此问题,但 Visual Studio 表示 Dos 路径必须具有像 C:\ 这样的根目录。

我正在尝试的代码如下或Full code here

    string[] SongsToRead = Directory.GetFiles(Environment.CurrentDirectory, "*.mp3");
    song song;
    protected override void Initialize()
    {
        var var1 = Uri.EscapeUriString(SongsToRead[0]);
        Song = Song.FromUri("Test", new Uri(var1));
        base.Initialize();
    }

我是不是站在了错误的一边?

谢谢!

【问题讨论】:

  • 嗯。我不知道你在这里问什么。我在链接中查看了您的代码,并且 FromUri / etc. 甚至没有在那里使用。您能否尝试澄清您究竟需要什么,以及什么代码给出了该错误? (另外,我添加了一个带有错字修复的建议编辑 + 删除那个愚蠢的“XNA”标签。这不是一个 XNA 项目......)
  • 嗨,FromUri 方法不在上面使用的链接中,因为它是一种概念证明。我使用的 Song Class 仅适用于 XNA,所以是的,它是一个 XNA 项目。 pastebin.com/JrRip4G7这里我只是尝试播放找到的第一首歌,但它似乎不起作用。

标签: c# xna mp3


【解决方案1】:

现在你有一些工作要做-

老实说,尽管我一直在 XNA 工作,但我什至不知道有一个 Song.FromUri(...) - 我从来没有用过它。

如果您要使用 XNA 的内置系统,只需使用常规的 Content.Load<Song>("mysong"); 方法 - 或尝试使用 SoundEffect.FromStream(new System.IO.FileStream("MyFile.mp3", System.IO.FileMode.Open)); 将其加载为 SoundEffect - 这是用于 .wav 声音但应该与其他 MS 兼容- 批准的音频文件。

如果你想避免这种情况,因为你认为内容管道很烦人或者 SoundEffect 不能很好地工作,你必须首先意识到整个 XNA 音频设置也很差。

如果您想要动态控制和从文件加载无内容管道,我建议您使用FMod-Ex Sound System (API)

(最初设置有点复杂,但是一旦你将 .dll 文件放在正确的位置并导入了 C# 包装器,它就会非常有用并且相对易于使用)

如果你真的想使用你当前的代码,我唯一注意到的是:

    var var1 = Uri.EscapeUriString(SongsToRead[0]);

不要那样做。例如,这会将myfolder\myfile.mp3 转换为myfolder%5Cmyfile.mp3,它用于HTTP 内容。这里不好。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-05
    • 2022-08-23
    • 1970-01-01
    相关资源
    最近更新 更多