我有一个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中提取视频。
答案 0 :(得分:1)
似乎是WPF团队不想解决的已知错误。 WPF MediaElement为HTTPS URL抛出NullReferenceException。使用HTTPS,您的本地版本也会失败。由于该错误设置为“未修复”,因此您最好的选择可能就是使用HTTP URL。链接到官方错误页面:connect.microsoft.com/VisualStudio/feedback/details/934355 /
根据评论,您需要更新视频流的URI以使用HTTP。