如何使用mediaElement或mediaPlayerElement播放受保护的视频

时间:2016-08-20 04:51:37

标签: win-universal-app

播放需要身份验证的视频的正确方法是什么?

视频托管在使用基本身份验证的服务器上,凭据必须在标头上的cookie上传递。

我尝试过AdaptiveMediaSource但我收到的错误是服务器不支持该协议。

我试过这个https://github.com/kiewic/MediaElementWithHttpClient/tree/master/MediaElementWithHttpClient,但是我收到了一个不支持Range的错误。

任何帮助都会非常感激。

我定位Windows 10周年纪念版

干杯 ħ

2 个答案:

答案 0 :(得分:1)

我在MSDN中回复了您的同一案例。https://social.msdn.microsoft.com/Forums/windowsapps/en-US/dea09e8e-dd85-48dd-8edb-59ef150f442e/how-to-play-a-protected-video-using-mediaelement-or-mediaplayerelement?forum=wpdevelop

您可以尝试使用WebView控件来查看它是否符合您的要求。官方样本:https://github.com/Microsoft/Windows-universal-samples/tree/master/Samples/XamlWebView

  

我尝试过AdaptiveMediaSource,但收到的错误是服务器不支持该协议。

根据官方文件,https://msdn.microsoft.com/en-us/windows/uwp/audio-video-camera/adaptive-streaming Adaptive Streaming功能目前支持播放Http Live Streaming(HLS)和Dynamic Streaming over HTTP(DASH)内容。有关支持的HLS协议标记的列表,请参阅HLS标记支持。 如果您的服务器不支持这些协议,则无法使用自适应流媒体功能。

  

我试过这个https://github.com/kiewic/MediaElementWithHttpClient/tree/master/MediaElementWithHttpClient,但是我收到了一个不支持Range的错误。

请参阅演示的Readme.md文件中的注释。 注意:服务器必须支持HTTP Range标头。如果您的服务器不支持HTTP范围标头,则无法直接使用该演示。

答案 1 :(得分:0)

正如此issue heroboy 所述,范围标头请求在初始响应中不是必需的,因此您可以尝试从以下检查中删除 HttpRandomAccessStream.cs

if (!response.Headers.ContainsKey("Accept-Ranges"))
{
    throw new Exception(String.Format(
        "HTTP server does not support range requests: {0}",
        "http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.5"));
}

但是服务器仍然需要支持范围请求

还有sample for MediaPlayerElement的版本。