从Videos文件夹播放.mov视频时出错(使用MediaElement)

时间:2012-12-27 11:59:53

标签: video windows-8 quicktime mediaelement mov

我在尝试什么?

我正在尝试从视频库加载一部快速电影,如下所示:

async void SetupVideoAsyncAndPlay() {
    StorageFolder folder = 
               await KnownFolders.VideosLibrary.GetFolderAsync("Video Folder");
    StorageFile file = await folder.GetFileAsync("test_video.mov");

    // Ensure a file was selected
    if (file != null) {
        var fileStream = 
                await file.OpenAsync(Windows.Storage.FileAccessMode.ReadWrite);

        Video.SetSource(fileStream, file.ContentType);
        Video.Play();
    }
}

我尝试了什么?

经过大量的挖掘,我已经到了这里。首先,我只有Windows.Storage.FileAccessMode.ReadWrite来阅读并且没有触发任何事件。 现在,它会触发MediaFailed事件(使用Video.MediaOpened += RightVideo_MediaOpened;注册)

在MediaFailed事件中,我得到以下内容:

  

ErrorMessage =“MF_MEDIA_ENGINE_ERR_SRC_NOT_SUPPORTED:HRESULT - 0xC00D36C4”

我在Visual Tree中有MediaElement(可能的问题之一),因为我在XAML中声明了这个元素。

此外,我尝试在没有文件流的情况下(直接从应用程序包中)运行相同的视频,并且它可以正常工作。

此外,如果我用Picker替换StorageFile / FileStream代码,它可以工作:

FileOpenPicker openPicker = new FileOpenPicker();
openPicker.ViewMode = PickerViewMode.Thumbnail;
openPicker.FileTypeFilter.Add(".mov");
StorageFile file = await openPicker.PickSingleFileAsync();
var stream = await file.OpenAsync(Windows.Storage.FileAccessMode.Read);

请注意,我在Video文件夹的Package.appmanifest中授予了权限。

1 个答案:

答案 0 :(得分:0)

您何时调用SetupVideoAsyncAndPlay?我记得有同样的问题并通过确保MediaElement初始化仅在它被加载到VisualTree之后(在收到Loaded事件之后)完成它来解决它。

希望有所帮助。