2

我的MediaElementWin8 应用程序出现问题 - 当我尝试从本地库播放一些“.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);
        }
    }
}

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

4

1 回答 1

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

于 2013-10-06T05:43:41.137 回答