我创建了一个专为Windows应用商店设计的媒体播放器,以及音乐和音频文件,它工作得很完美,但它不播放视频文件。
这是XAML页面中媒体元素的代码:
<ContentControl x:Name="MediaContainer"
HorizontalContentAlignment="Right"
VerticalContentAlignment="Center"
Height="405" Width="720" HorizontalAlignment="Right"
KeyUp="MediaContainer_KeyUp"
Grid.Column="0" >
<MediaElement Name="CoreMediaElement"
AudioCategory="BackgroundCapableMedia"
MediaOpened="CoreElement_MediaOpened"
MediaEnded="CoreMediaElement_MediaEnded"
MediaFailed="CoreMediaElement_MediaFailed"
CurrentStateChanged="CoreMediaElement_CurrentStateChanged"
AutoPlay="True"
/>
</ContentControl>
这是我设置文件来源的方式:
var file = MediaList[IndexOfMediaFileToBeLoaded].FileData;
try
{
var stream = await file.OpenAsync(FileAccessMode.Read);
CoreMediaElement.SetSource(stream, file.ContentType);
}
catch
{
}
其中FileData是StorageFile()对象,而MediaList是包含播放列表中所有文件的List()。
在我逐步调试之后,我观察到当我加载视频时,MediaElement.MediaFailed事件被触发并且它发出下一个错误:“MF_MEDIA_ENGINE_ERR_SRC_NOT_SUPPORTED:HRESULT - 0xC00D36C4”。
观察:在撰写这篇文章时,我决定尝试加载不同类型的文件,希望这可以解决问题。但在我加载了近10部不起作用的视频之后,我看了一下延伸:“。MKV”。我拿了我的视频转换器,我将它们转换为“.MP4”并且它们工作了。那问题到底是什么?我安装了所有的编解码器。我使用K-Lite Codec Pack。
编辑:“。AVI”文件也正常工作。
答案 0 :(得分:1)
MediaElement
是一个只能播放某些文件类型的控件。它基于Windows的媒体播放器,但仅限于其核心编码器 - 它不会使用额外的编解码器/插件。因此,如果一个简单的媒体播放器无法播放您的文件,MediaElelment
也不会。
解决方案通常是使用不同的控件进行播放。
其中一个是基于VLC的VideoLan DotNet。它速度快,功能强大,可以播放virtually any media file。但是: