将视频从安全的azure blob流式传输到WPF



有人知道将.mp4视频从安全的azure blob(通过https)流式传输到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",并且blob项目是否设置了正确的内容类型。

我知道uri的格式是正确的,因为我可以在浏览器中粘贴它,也可以在Windows 8商店应用程序中使用它,并且视频流是正确的。

然而,当我为WPF MediaElement分配相同的uri作为源时,我会在MediaPlayer.Open()的内部工作中得到一个NullReferenceException。

从HTTPS端点播放时,WPF MediaElement似乎存在已知问题。在纯HTTP(没有"S")上播放时没有问题。

这与Microsoft Azure或Blob无关。这是纯粹的WPF问题,但似乎不会很快解决,如果解决的话。

对于HTTPS流,您可以使用Silverlight或Windows 8 Modern应用程序,两者都支持HTTPS流而不会出现任何问题。

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

更新

使用VideoLan.NET WPF控件,我可以播放HTTPS媒体。到目前为止,WPF唯一成功播放HTTPS媒体的控件。这需要有效安装适用于Windows的VideoLAN VLC播放器。我使用了便携式的(ZIP包),它运行得很好。VideoLan.NET的文档有点混乱,但结果是您可以在WPF中安全地播放HTTPS流/渐进式下载。

最新更新