【问题标题】:How would I use a pack uri resource with media player?如何将 pack uri 资源与媒体播放器一起使用?
【发布时间】:2010-09-16 15:25:48
【问题描述】:

我有一些非常简单的代码,只需要播放指定音量的声音,如下:

var mp = new MediaPlayer();
mp.Open(uri);
mp.Volume = volume;
mp.Play();

出现问题是因为这是 Prism 模块的一部分。我不知道执行程序集将在哪里,所以我不能使用相对 Uri 或 siteoforigin 并且 MediaPlayer 不理解 pack Uri 语法。

我的程序集根目录中有一个名为“notify.wav”的资源 wav 文件,但我无法通过 Uri 将它传递到 MediaPlayer,也看不到任何其他加载方式。

如何播放文件?

【问题讨论】:

    标签: c# wpf resources uri media-player


    【解决方案1】:

    由于资源已嵌入且 MediaPlayer 不支持 pack uri,因此您需要将资源作为流读取并将其写入文件。然后您应该能够将文件加载到播放器中必要的。

    我会将文件写入我的应用程序目录,以便从程序集中提取后,您可以直接引用该文件。

    希望对你有帮助

    【讨论】:

      【解决方案2】:

      首先,您应该为媒体文件夹的路径声明一个字符串变量。该变量保存路径。就像:

      string url = @"C:\Users\Alico\Documents\visual studio 2010\Projects\WpfBrushesTest\WpfBrushesTest\Dido - Thank You.mp4";
      

      然后

      mp.Open(new Uri(url,UriKind.Relative));
      

      【讨论】:

        【解决方案3】:

        恐怕媒体播放器不支持包 URI。

        你试过Directory.GetCurrentDirectoryEnvironment.CurrentDirectory吗?

        【讨论】:

        • 我认为 GetCurrentDirectory 不会帮助我,因为资源嵌入在程序集中。我想知道如何将这样的资源传递给媒体播放器。它不能在文件系统的某个地方松散。
        【解决方案4】:

        使用 ContentResolver 类从设备中检索歌曲并使用 Song.XML 捕获包括(标题、文章、专辑等的 TextViews)。这个 XML 稍后使用 Adapter 类嵌入到 MainActivity XML(包括 ListView)中,然后您可以调用 onClick(Song.XML) 在 MainActivity XML 上播放歌曲(设置 URI),稍后您可以设置 Seekber、Next、Previous 和 Play功能。 如果你愿意,我会给你完整的代码,但我正在尝试使用新的 UI 设计和类文件播放来自另一个 Activity 的歌曲,仍在搜索。

        【讨论】:

          猜你喜欢
          • 2022-01-22
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多