0

我在尝试什么?

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

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只有 Read 并且没有触发任何事件。现在,它会触发 MediaFailed 事件(使用 注册它Video.MediaOpened += RightVideo_MediaOpened;

在 MediaFailed 事件中,我得到以下信息:

错误消息 =“MF_MEDIA_ENGINE_ERR_SRC_NOT_SUPPORTED:HRESULT - 0xC00D36C4”

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

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

此外,如果我用 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);

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

4

1 回答 1

0

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

希望有帮助。

于 2013-01-04T18:25:16.833 回答