我正在实现一个播放本地音乐文件的音乐播放器。
由于我的 MediaElement 失败,我收到此错误消息:
MF_MEDIA_ENGINE_ERR_SRC_NOT_SUPPORTED:HRESULT - 0x80070005
我该如何解决?这是我的 MediaElement。
<MediaElement
x:Name="MediaPlayer"
Grid.Column="1"
AutoPlay="False"
IsLooping="False"
MediaEnded="MediaPlayer_MediaEnded"
MediaFailed="MediaPlayer_MediaFailed"
Volume="50" />
我尝试了 3 种播放音频的方法,但没有一种对我有用。
var file = await StorageFile.GetFileFromPathAsync(music.Path);
MediaPlayer.Source = new Uri(music.Path, UriKind.Absolute);
//MediaPlayer.SetSource(await file.OpenReadAsync(), file.ContentType);
//MediaPlayer.SetSource(await file.OpenAsync(FileAccessMode.Read), file.ContentType);
music.Path(包含路径和音乐文件名)是正确的,因为我可以加载专辑封面缩略图。顺便说一下,音乐文件位于桌面中的某个位置而不是 Assets 文件夹中。
我认为这里有一个类似的问题:Mediaelement in Windows 8 Metro App
但我不明白为什么答案之一是打开一个选择器。我认为这不是我的解决方案,因为我只是在本地文件夹下播放所有音乐文件。
- -更新 - -
我注意到在播放资产音乐时 MediaElement 可以正确播放音乐。所以我想应该有一种播放本地音乐文件的解决方法?
我找到了解决办法。这很简单。
关键部分是要有一个包含要播放的音乐文件的StorageFolder
对象(在我的代码中是CurrentMusicFolder
)。例如,我需要播放这个音乐文件:“C:\MusicFolder\Music.mp3”。所以我需要这样做:
StorageFolder CurrentMusicFolder = await StorageFolder.GetFolderFromPathAsync("C:\MusicFolder");
var file = await CurrentMusicFolder.GetFileAsync("Music.mp3");
MediaPlayer.SetSource(await file.OpenAsync(FileAccessMode.Read), file.ContentType);
MediaPlayer.Play();
注意音乐的路径是“Music.mp3”而不是“C:\MusicFolder\Music.mp3”。音乐路径中不能有“C:\”之类的东西。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句