0

私は何をしようとしていますか?

次のように、ビデオ ライブラリから 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 にアクセス許可を与えたことに注意してください。

4

1 に答える 1

0

SetupVideoAsyncAndPlay を呼び出すのはいつですか? 同じ問題が発生したことを覚えており、MediaElement の初期化が VisualTree に読み込まれた後 (Loaded イベントを受け取った後) にのみ行われるようにすることで解決しました。

それが役立つことを願っています。

于 2013-01-04T18:25:16.833 に答える