私は何をしようとしていますか?
次のように、ビデオ ライブラリから QuickTime ムービーを読み込もうとしています。
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"
XAML でこの要素を宣言しているため、Visual Tree に MediaElement があります (考えられる問題の 1 つ)。
さらに、ファイルストリームなしで (アプリケーション バンドルから直接) 同じビデオを実行しようとしましたが、動作します。
また、StorageFile/FileStream コードを Picker に置き換えると、次のように動作します。
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 にアクセス許可を与えたことに注意してください。