我的Win8应用中存在MediaElement
的问题 - 当我尝试从本地库中播放一些“.wmv”文件时,它经常(并非总是)抛出MediaFailed
而我收到错误
MF_MEDIA_ENGINE_ERR_SRC_NOT_SUPPORTED:HRESULT - 0xC00D36C4
表示
视频编解码器或音频编解码器不受支持,或者其中之一 视频文件中的流已损坏。这个内容可能不是 支撑。
问题是不文件已损坏(我可以使用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);
}
}
}
有人知道这里有什么问题吗?提前谢谢。
答案 0 :(得分:5)
问题可能是您在播放之前关闭了流。因此这段代码:
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);
}
我在一些频道9视频(中高档wmv文件)上尝试了上面第二段代码,我的应用程序成功播放了它们。