2012-01-26 48 views
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過濾器的問題?如果沒有,我還能看到什麼才能讓這個運行?

回答

0

它只是保證是一個DS過濾器問題。出於什麼原因,該機器上的編解碼器不能識別mp4文件。

如果使用不工作與你的MP4文件,並把它比作是不工作的機器在機器上GraphEdit中,你會或看到,如果過濾器(編解碼器)加載不

graphedit link

+0

謝謝。我現在就試試看。順便說一下,您是否知道如何從RoutedEventArgs中提取有關失敗的更詳細信息。這是我第一次與WPF合作,所以我最初的搜索並不富有成效。 – 2012-01-27 09:19:55

+0

有沒有辦法限制MediaElement使用特定的過濾器? – 2012-01-31 11:06:06

+1

是的,但它並不特別容易。您需要自己在代碼中構建directshow過濾器圖。要做到這一點,你需要使用wpfmediakit而不是mediaelement。 http://wpfmediakit.codeplex.com/。然後爲了構建filtergraph,你需要directshow.net http://sourceforge.net/projects/directshownet/。這將是一項複雜的任務。或者如果您只是在一臺機器上運行您的應用程序,那麼您可以使用編解碼器優先級工具手動調整編解碼器優先級(谷歌將在此處幫助) – Anton 2012-01-31 22:08:43

相關問題