C# Windows 8应用程序-MediaElement未播放";。wmv“;文件夹

C# Windows 8应用程序-MediaElement未播放";。wmv“;文件夹,c#,windows-8,windows-runtime,C#,Windows 8,Windows Runtime,我的Win8应用程序中的MediaElement有问题-当我尝试播放本地库中的一些“.wmv”文件时,它经常(并非总是)抛出MediaFailed,我得到了错误 MF_媒体_引擎_错误_SRC_不受支持:HRESULT-0xC00D36C4 也就是说 不支持视频编解码器或音频编解码器,或者 视频文件中的流已损坏。此内容可能不可用 支持 问题不是文件损坏(我可以用Windows Media Player播放)。下面是我用来设置MediaElement的代码: private async void

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

MF_媒体_引擎_错误_SRC_不受支持: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);
        }
    }
}

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

问题可能是您在播放流之前关闭了流。因此,本守则:

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!?
}
应使用块更改为不具有

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

我在一些9频道视频(包括中质量和高质量的wmv文件)上尝试了上面的第二段代码,我的应用程序成功地播放了它们。

这些.wmv文件使用哪些编解码器?(音频和视频)我不知道,所有内容都是从下载的,我想
MediaElement
和Windows Media Player使用的是同一个引擎。非常感谢您的回答。我已经找了好长时间了。谢谢