Windows 8应用程序 – MediaElement不播放“.wmv”文件

我的Win8应用程序中存在MediaElement的问题 – 当我尝试从本地库中播放一些“.wmv”文件时,它经常(并非总是)抛出MediaFailed并且我收到错误

MF_MEDIA_ENGINE_ERR_SRC_NOT_SUPPORTED:HRESULT – 0xC00D36C4

意思是

video编解码器或音频编解码器不受支持,或video文件中的一个流已损坏。 可能不支持此内容。

问题不是文件已损坏(我可以使用Windows Media Player播放它们)。 这是我用来设置MediaElement的代码:

 private async void Button_Click(object sender, RoutedEventArgs e) { var picker = new FileOpenPicker(); picker.FileTypeFilter.Add(".wmv"); picker.FileTypeFilter.Add(".mp4"); picker.SuggestedStartLocation = PickerLocationId.VideosLibrary; StorageFile file = await picker.PickSingleFileAsync(); if (file != null) { using (IRandomAccessStream ras = await file.OpenAsync(FileAccessMode.Read)) { me.SetSource(ras, file.ContentType); } } } 

有人知道这里有什么问题吗? 提前致谢。

问题可能是您在播放之前关闭了流。 因此这段代码:

 if (file != null) { using (IRandomAccessStream ras = await file.OpenAsync(FileAccessMode.Read)) { me.SetSource(ras, file.ContentType); } // The stream is now closed! How can it be played!? } 

应该更改为没有using块:

 if (file != null) { IRandomAccessStream ras = await file.OpenAsync(FileAccessMode.Read); me.SetSource(ras, file.ContentType); } 

我确实在一些频道9video(中高档wmv文件)上尝试了上面第二段代码,我的应用程序成功播放了它们。