为什么WinRT MediaElement.SetSource不会做它应该做的事情?

时间:2013-04-30 06:32:08

标签: c# windows-runtime mediaelement

很简单。使用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

之前更改内存中的流

编辑另一条相关信息是媒体元素的状态更改回调在第二个版本中被调用一次(状态立即“关闭”)。

1 个答案:

答案 0 :(得分:1)

根据此linkTestMedia.AutoPlay = true;之后的问题是SetSource。看来这两种方法之间应该有一些延迟。