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

时间:2013-10-05 20:27:04

标签: c# windows-8 windows-runtime

我的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);
        }
    }
}

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

1 个答案:

答案 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文件)上尝试了上面第二段代码,我的应用程序成功播放了它们。