2

とてもシンプルです。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 回呼び出されることです (ステータスはすぐに "クローズ" になります)。

4

1 に答える 1

1

このリンクによると、問題はTestMedia.AutoPlay = true;の直後SetSourceです。これら 2 つの方法の間には多少の遅延があるようです。

于 2013-04-30T07:28:16.497 に答える