2017-06-18 63 views
0

我试图通过HTTP从网络服务器流式传输视频。要流视频我目前创建MediaSource的:通过HTTP进行身份验证的UWP MediaSource

MediaSource.CreateFromUri(new Uri("https://example.com/video.mp4")); 

然后我再补充一点MediaSource的我MediaPlayerElement和视频播放。

只要服务器不需要认证,它就可以工作。但现在我有一台使用基本身份验证的服务器,因此视频无法启动。

我的旧请求看起来类似于这样

GET /video.mp4 HTTP/1.1 Range: bytes=0- Accept: */* User-Agent: NSPlayer/12.00.15063.0332 WMFSDK/12.00.15063.0332 GetContentFeatures.DLNA.ORG: 1 Accept-Encoding: gzip, deflate Host: example.com Connection: Keep-Alive enter code here

现在我需要他们也有一个认证头,但我不知道如何做到这一点(因为我不能用我自己的HttpClient) :

Authorization: Basic dXNlcjpwYXNzd29yZA== 

我发现这个问题UWP MediaElement source from http with authentication这与我的问题类似。作者解决了他的问题,但不幸的是并没有完全描述他是如何做到的。

有人可以帮忙吗?如何获取MediaSource或MediaPlayerElement以使用凭证/基本身份验证?

回答

0

如您所见,MediaSource.CreateFromUri(Uri)方法只能接受Uri参数,因此无法使用此方法设置Authentication Header。

要播放需要身份验证的在线视频文件,我们可以利用HttpClient,它可以手动创建具有所需凭据或标头的HTTP请求。

然后,我们可能还需要自定义IRandomAccessStream类建立在HttpClient顶部,所以我们可以使用范围头以请求距离服务器的字节序列,并且不需要下载整个文件,以流它。

欲了解更多信息,你可以参考GitHub上的MediaPlayerElementWithHttpClient,它实现了HttpRandomAccessStream class

HttpRandomAccessStream类是对HttpClient顶部的包装,可以流从互联网内容和可以食用作为IRandomAcessStreamIRandomAccessStreamWithContentType或。

,并使用上述解决方案时,请注意:服务器必须支持HTTP Range头。

相关问题