将 Azure 用作媒体资源 (CDN) 时,如何更正 WPF 应用程序中的错误?

How can I correct error in my WPF Application when using Azure as a media resource (CDN)?

我有一个 WPF 应用程序,我正在加载和流式传输视频以用于培训目的。目前它在我使用内部服务器 (IIS) 时有效。然而,由于它对本地资源造成的压力,我们正在尝试利用我们的 Azure 帐户,其中包含 CDN 服务。

我的想法是我可以从

中切换出 url
source = 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 link ( -snip- ),因为它太长了,难以阅读并且与这个问题无关。如果我将 link 剪切并粘贴到我的浏览器中,浏览器将提示播放视频,因此我知道 link 是好的。但是,当我尝试从我的 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 的媒体?顺便说一下,我确实在浏览器的异常中剪切并粘贴了 link,以确保在到达那里的过程中没有出现格式错误,并且它确实从 Azure 中正确地提取了视频。

似乎是 WPF 团队不想修复的已知错误。 WPF MediaElement 为 HTTPS URLs 引发 NullReferenceException。您的本地版本也应该因 HTTPS 而失败。由于错误设置为 Won't Fix,您最好的选择可能是只使用 HTTP URL。 Link 到官方错误页面:connect.microsoft.com/VisualStudio/feedback/details/934355/

根据评论,您需要更新视频流的 URI 才能使用 HTTP。