有没有人知道将.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()的内部工作中得到了一个NullReferenceException。
答案 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流/渐进式下载。