Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/271.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何使用MediaElement播放本地mp3文件_C#_Silverlight - Fatal编程技术网

C# 如何使用MediaElement播放本地mp3文件

C# 如何使用MediaElement播放本地mp3文件,c#,silverlight,C#,Silverlight,我正在用Silverlight 4(C#)创建一个简单的媒体播放器。现在我正在使用MediaElement,但它给了我一个错误 错误4001:。。。。System.Collections.ListDictionaryInternal 现在,当我想设置MediaElement的源时,就会发生这个错误。因此,当用户点击“播放”时,它会设置第一首歌曲的来源 Song s = afspeelijst.ElementAt(currentPlayingIndex); media.Source = new S

我正在用Silverlight 4(C#)创建一个简单的媒体播放器。现在我正在使用MediaElement,但它给了我一个错误

错误4001:。。。。System.Collections.ListDictionaryInternal

现在,当我想设置MediaElement的源时,就会发生这个错误。因此,当用户点击“播放”时,它会设置第一首歌曲的来源

Song s = afspeelijst.ElementAt(currentPlayingIndex);
media.Source = new System.Uri(s.FilePath);
media.Position = TimeSpan.Zero;
media.Play();
下一个代码也不起作用,但它删除了错误。但仍然没有声音:s

media.SetSource(new FileStream(s.FilePath, FileMode.Open));

在Silverlight 4中,您可以访问特定用户文件夹(我的文档、我的音乐、我的图片和我的视频)或其中的子文件夹中的本地文件。(已启用提升权限的浏览器外)

修改上面的代码会将其更改为与下面类似的内容

string path = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments), "test/song.mp3");


            media.SetSource(new FileStream(path, FileMode.Open));
            media.Position = TimeSpan.Zero;
            media.Play();

我希望这有帮助

您可能想查看此代码。这对我来说很好:)

不允许文件操作。对路径“”的访问被拒绝

当您尝试访问Documents文件夹或其他本地文件时。我正在使用Silverlight 4,我可以在网上播放一些http文件。但当我看到给定的错误时,无法播放ftp文件

.Net的验证方法返回的路径不受支持


所以在silverlight应用程序中使用内部html页面。或者,如果您的声音文件受到限制,可以在web应用程序的/ClientBin中复制这些文件。

s.FilePath指向哪里?SL不允许应用程序访问本地文件系统(隔离存储除外)。文件是否是应用程序包的一部分?否路径为例如c:\music\song.mp3,并将其转换为file:///c:\music\song.mp3。需要安装应用程序,以便它可以访问本地文件系统。我尝试了,但没有成功。我发现,当调用SetSource()时,它会下载文件。所以在下载委托中,当它达到100%时,我点击Play(),这就行了。我刚刚用HTTP测试了我的解决方案,不是本地的。你在什么操作系统上?Windows 7处理它的方式与它显示的不同。。库/文档可能与C:\Users\Account\u name\Documents混淆。。。我试了试我的机器,它成功了。您可能能够让它在本地文件系统上工作。
mediaElement1.LoadedBehavior = MediaState.Manual;
mediaElement1.Source = new Uri(@"D:/ExamplePath/myVideoFile.avi");
//@ means that the string behind is a path so / won't be 
//treated like a special character
mediaElement1.Play();