我在尝试什么?
我正在尝试从视频库加载一部快速电影,如下所示:
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中授予了权限。
答案 0 :(得分:0)
您何时调用SetupVideoAsyncAndPlay?我记得有同样的问题并通过确保MediaElement初始化仅在它被加载到VisualTree之后(在收到Loaded事件之后)完成它来解决它。
希望有所帮助。