私は、MediaElementをホストするカスタムWPFコントロールを持つ単純なWinFormsアプリケーション(32ビット用にコンパイルされた)を持っています。以下のコードは、Windows 7(64ビット)では完全にビデオを再生しますが、VistaおよびXPではMediaFailedイベントが「メディアのダウンロードに失敗しました」というメッセージでトリガーされます。Windows XPとVistaのMediaElement
`
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();
`
ビデオが細かく、3つのすべてのOSの上でWindows Media Playerで再生します。ビデオはH.264/MPEG-4/AVCでエンコードされています。これはDirectShowフィルタの問題でしょうか?そうでない場合は、これを実行するために何を調べることができますか?
感謝。今私はそれを試してみましょう。ちなみに、失敗についてRoutedEventArgsからより詳細な情報を抽出する方法を知っていますか? WPFで作業しているのは初めてのことです。私の最初の検索ではあまり効果がありませんでした。 –
特定のフィルタを使用するようにMediaElementを制限する方法はありますか? –
はいありますが、それほど簡単ではありません。 DirectShowフィルタグラフをコード内で作成する必要があります。これを行うには、mediaelementの代わりにwpfmediakitを使用する必要があります。 http://wpfmediakit.codeplex.com/。次に、フィルタグラフを作成するには、directshow.net http://sourceforge.net/projects/directshownet/が必要です。これは複雑な作業になります。または1台のマシンでアプリを実行している場合は、コーデック優先度ツールを使用して手動でコーデックの優先度を調整することができます(ここでGoogleが役立ちます) – Anton