2017-06-18 80 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頭。

相關問題