Per*_*ine 7 wpf azure azure-storage-blobs
有没有人知道从安全的azure blob(通过https)将.mp4视频流式传输到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;
}
Run Code Online (Sandbox Code Playgroud)
我已检查服务版本是否至少设置为"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 流/渐进式下载。
| 归档时间: |
|
| 查看次数: |
533 次 |
| 最近记录: |