UWP MediaElement 不播放音乐

用户10634280

我正在实现一个播放本地音乐文件的音乐播放器。

由于我的 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 可以正确播放音乐。所以我想应该有一种播放本地音乐文件的解决方法?

用户10634280

我找到了解决办法。这很简单。

关键部分是要有一个包含要播放的音乐文件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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章