0
我有一个简单的WinForms应用程序(编译为32Bit)与一个自定义WPF控件,承载MediaElement。下面的代码可以在Windows 7(64位)下完美播放视频,但在Vista和XP下触发MediaFailed事件并显示消息“Media failed to download”。Windows XP和Vista上的MediaElement vs 7
`
this.MediaElement.LoadedBehavior = System.Windows.Controls.MediaState.Manual;
this.MediaElement.UnloadedBehavior = System.Windows.Controls.MediaState.Manual;
this.MediaElement.Source = new System.Uri(@"C:\Video\Video.mp4", System.UriKind.Absolute);
this.MediaElement.Position = System.TimeSpan.FromSeconds(20);
this.MediaElement.Play();
`
视频是罚款和在Windows Media Player中播放所有三个操作系统的。该视频是H.264/MPEG-4/AVC编码的。这可能是一个DirectShow过滤器的问题?如果没有,我还能看到什么才能让这个运行?
谢谢。我现在就试试看。顺便说一下,您是否知道如何从RoutedEventArgs中提取有关失败的更详细信息。这是我第一次与WPF合作,所以我最初的搜索并不富有成效。 – 2012-01-27 09:19:55
有没有办法限制MediaElement使用特定的过滤器? – 2012-01-31 11:06:06
是的,但它并不特别容易。您需要自己在代码中构建directshow过滤器图。要做到这一点,你需要使用wpfmediakit而不是mediaelement。 http://wpfmediakit.codeplex.com/。然后为了构建filtergraph,你需要directshow.net http://sourceforge.net/projects/directshownet/。这将是一项复杂的任务。或者如果您只是在一台机器上运行您的应用程序,那么您可以使用编解码器优先级工具手动调整编解码器优先级(谷歌将在此处帮助) – Anton 2012-01-31 22:08:43