2014-09-03 121 views
7

有誰知道如何將.mp4視頻從安全天藍色blob(通過https)流式傳輸到WPF應用程序。將視頻從安全天藍色blob流式傳輸到WPF

我生成的URI如下...

public Uri GetSecureUriForBlob(CloudBlobContainer container, string blobName) 
{ 
    var blockBlob = container.GetBlockBlobReference(blobName); 
    var beforeOffset = new DateTimeOffset(DateTime.UtcNow.AddMinutes(-5)); 
    var afterOffset = new DateTimeOffset(DateTime.UtcNow.AddHours(1)); 

    var builder = new UriBuilder(blockBlob.Uri) 
    { 
     Query = blockBlob.GetSharedAccessSignature(
      new SharedAccessBlobPolicy 
      { 
       Permissions = SharedAccessBlobPermissions.Read, 
       SharedAccessStartTime = beforeOffset, 
       SharedAccessExpiryTime = afterOffset 
      }).TrimStart('?') 
    }; 

    return builder.Uri; 
} 

我已經簽了服務版本至少設置爲「2013-08-15」,而斑點項目具有正確的內容類型集。

我知道uri的格式是正確的,因爲我可以將它粘貼到瀏覽器中,還可以在Windows 8商店應用程序中使用它,並且視頻流正確。

但是,當我將一個WPF MediaElement的源分配給相同的URI時,我在MediaPlayer.Open()的內部工作中得到了一個N​​ullReferenceException。

+0

你可以提供一個非過期的網址到示例視頻嗎? – pushpraj 2014-09-10 03:17:25

+0

測試視頻是標準參考文件,例如http://download.blender.org/peach/bigbuckbunny_movies/BigBuckBunny_320x180.mp4,但已修復,以便標題位於文件的起始位置,而不是使用http:/ /renaun.com/blog/2010/06/qtindexswapper-2/。正如我所說的,他們在網絡瀏覽器和Windows 8.1商店應用程序中正常播放,而不是在WPF中播放。它們也會從非安全的blob容器中流到WPF,但內容的性質(可能的警方證據)需要使用安全的容器。 – Peregrine 2014-09-10 07:50:15

回答

2

似乎有一個known issue with WPF MediaElement when playing from HTTPS終結點​​。通過普通HTTP(不帶「S」)播放時沒有問題。

這不是微軟Azure相關,或Blob相關。這是純粹的WPF問題,但似乎不會很快修復,如果修復的話。

對於HTTPS Streams,您可以使用Silverlight或Windows 8 Modern應用程序 - 兩者都支持HTTPS流,沒有任何問題。

您可能找到支持通過HTTPS播放媒體的WPF第三方控件。

UPDATE

使用VideoLan.NET WPF Controls我能夠做出HTTPS媒體播放。到目前爲止,WPF成功播放HTTPS媒體的唯一控件。這需要Windows的VideoLAN VLC播放器的有效安裝。我用the portable one (ZIP package),它完美的作品。 VideoLan.NET的文檔有點混亂,但結果是您可以安全地在WPF中播放HTTPS流/漸進式下載。