我在尝试什么?
我正在尝试从视频库中加载一个快速电影,如下所示:
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 文件夹授予了权限。