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

标签 wpf azure azure-blob-storage

有谁知道如何将 .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 商店应用程序中使用它,并且视频流正确。

但是,当我分配相同的 uri 作为 WPF MediaElement 的源时,我在 MediaPlayer.Open() 的内部工作深处得到一个 NullReferenceException。

最佳答案

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

这与 Microsoft Azure 或 Blob 无关。这是纯粹的 WPF 问题,但即使完全解决了,似乎也不会很快得到解决。

对于 HTTPS 流,您可以使用 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 流/渐进式下载。

关于wpf - 将视频从安全的 azure blob 流式传输到 WPF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25653289/

相关文章:

wpf - 从 MVVM 动态添加控件到 View

Azure 数据工厂并发性和依赖性

Azure Function 中的 Azure 服务总线处理程序

azure - Windows Azure,blob 未加载到 LocalResource

c# - 绑定(bind)键绑定(bind)的键属性

c# - Caliburn.Micro View 切换

azure - 从 Azure Key Vault 删除证书?这会删除证书资源类型吗?

azure - 为什么 Fluentd Azure blob 插件在 kubernetes 中不起作用

azure - 将 Vhd 分块上传到 Azure Page blob

c# - 为 WPF 开发人员推荐的 Web 技术?