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

本文关键字:WPF 应用程序 错误 CDN Azure 资源 媒体 | 更新日期: 2023-09-27 17:57:19

我有一个 WPF 应用程序,我正在其中加载和流式传输视频以进行培训。目前,当我使用内部服务器(IIS)时,它可以工作。但是,由于它给本地资源带来了压力,我们正尝试利用我们的 Azure 帐户,该帐户包含 CDN 服务。

我的想法是我可以切换出网址

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链接(-snip-),因为它很长的可读性,并且与这个问题无关。如果我剪切链接并将其粘贴到浏览器中,浏览器将提示播放视频,因此我知道链接很好。但是,当我尝试从我的 WPF 运行它时,我得到一个 {"对象引用未设置为对象的实例。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 中提取了视频。

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

似乎是 WPF 团队不想修复的已知错误。WPF MediaElement 为 HTTPS URL 抛出 NullReferenceException。您的本地版本也应该因 HTTPS 而失败。由于该错误设置为"无法修复",因此最好的选择可能是仅使用 HTTP URL。链接到官方错误页面:connect.microsoft.com/VisualStudio/feedback/details/934355/

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