我如何在媒体播放器中使用包uri资源?

时间:2010-09-16 15:25:48

标签: c# wpf resources uri media-player

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

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

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

我在程序集的根目录下有一个名为“notify.wav”的资源wav文件,但我没办法通过Uri将它传递给MediaPlayer,并且看不到任何其他方法来加载它。

如何播放文件?

4 个答案:

答案 0 :(得分:1)

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

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

然后

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

答案 1 :(得分:1)

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

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

希望这有帮助

答案 2 :(得分:0)

我担心媒体播放器不支持包URI。

您是否尝试过Directory.GetCurrentDirectoryEnvironment.CurrentDirectory

答案 3 :(得分:0)

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