【发布时间】:2016-07-15 23:41:58
【问题描述】:
我有一个 WPF 应用程序,我在其中加载和流式传输视频以用于培训目的。目前,当我使用内部服务器(IIS)时它可以工作。然而,由于它对本地资源造成的压力,我们正试图利用我们的 Azure 帐户,其中包括 CDN 服务。
我的想法是我可以从
中切换出 urlsource = new Uri(@"http://192.168.1.2/videos/NewCoupons.wmv", UriKind.Absolute);
到
source = new Uri(@"https://myazurespace.blob.core.windows.net/asset-8e1-snip-04%3A25Z", UriKind.Absolute);
我切断了 Azure 链接 (-snip-),因为它的可读性太长了,并且与这个问题无关。如果我将链接剪切并粘贴到浏览器中,浏览器会提示播放视频,所以我知道链接是好的。但是,当我尝试从我的 WPF 运行它时,我得到一个 {"Object reference not set to an instance of an object."} System.NullReferenceException 错误就在下面的异常捕获中。
private void PlayButton_Click(object sender, RoutedEventArgs e)
{
try
{
if (mediaElement.Source != null)
mediaElement.Play();
}
catch (Exception ex)
{
MessageBox.Show("Error: " + ex.ToString());
}
}
那么我是否必须在我的代码中做一些不同的事情才能使用来自外部 CDN 的媒体?顺便说一句,我确实将异常中的链接剪切并粘贴到浏览器中,以确保某些内容在到达那里的过程中没有出现格式错误,并且确实从 Azure 中正确提取了视频。
【问题讨论】:
-
似乎是 WPF 团队不想修复的已知错误。 WPF MediaElement 为 HTTPS URL 引发 NullReferenceException。您的本地版本也应该使用 HTTPS 失败。由于错误设置为不会修复,因此最好的选择可能是只使用 HTTP URL。官方bug页面链接:connect.microsoft.com/VisualStudio/feedback/details/934355/…
-
Azure 是否允许更改?我找不到可以更改它的设置。
-
我知道 azure blob 存储应该支持 HTTP 和 HTTPS,但我不知道获取 HTTP 链接而不是 HTTPS 链接的具体细节,抱歉。
-
@rmc00
I know that azure blob storage should support HTTP and HTTPS, but I don't know the specifics about getting an HTTP link instead of an HTTPS link, sorry...只需将您的 URL 更改为使用 HTTP 而不是 HTTPS。就是这么简单:)。 -
@Gaurav Mantri 我很惊讶它是如此简单,但通过从 https 中删除 s 可以播放我的测试视频。