とてもシンプルです。MediaElement
このコードを使用する場合:
TestMedia.Source = new Uri("ms-appx:///Assets/Test.mp4");
TestMedia.MediaFailed += TestMedia_MediaFailed;
TestMedia.AutoPlay = true;
このコードは次のことを行いません。
StorageFile fileToTest = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Assets/Test.mp4"));
var stream = await fileToTest.OpenAsync(FileAccessMode.Read);
TestMedia.SetSource(stream, fileToTest.ContentType);
TestMedia.MediaFailed += TestMedia_MediaFailed;
TestMedia.AutoPlay = true;
デリゲート メソッドが呼び出されることはなく、例外がスローされることもありません (ここでそれらを割り当てていないことはわかっていますが、割り当てても問題ありません)。それは単に空白です。SetSource
の代わりに機能しないのはなぜSource
ですか? 私が尋ねる理由は、私たちのアプリを使用する誰かが少なくとも著作権で保護されたコンテンツを盗むために何らかの努力をしなければならないように、映画ファイルの単純な難読化を実装しようとしているからです. これには、ストリームをメモリに渡す前にメモリ内のストリームを変更する必要があります。MediaElement
EDITもう 1 つの関連情報は、メディア要素のステータス変更コールバックが 2 番目のバージョンで 1 回呼び出されることです (ステータスはすぐに "クローズ" になります)。