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

时间:2014-09-03 20:42:59

标签: wpf azure azure-storage-blobs

有没有人知道将.mp4视频从安全的天蓝色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()的内部工作中得到了一个N​​ullReferenceException。

1 个答案:

答案 0 :(得分:2)

似乎有known issue with WPF MediaElement when playing from HTTPS个端点。通过普通HTTP(没有“S”)播放时没有问题。

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

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

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

<强>更新

使用VideoLan.NET WPF Controls我能够播放HTTPS媒体。到目前为止,WPF成功播放HTTPS媒体的唯一控件。这需要有效安装适用于Windows的VideoLAN VLC播放器。我使用了the portable one (ZIP package),它完美无缺。 VideoLan.NET的文档有点混乱,但结果是您可以安全地在WPF中播放HTTPS流/渐进式下载。