有谁知道如何将 .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/