.NET Frameworkで動画再生

.NET FrameworkのFormsで動画再生
DirectShowとかWindowsMediaPlayerコントロールとかいろいろ試しましたが、この方法に落ち着きましいた。
「WPFのMediaElementをFormsで使う」
とはいえWPFユーザコントロールを使ってXML経由で画面生成されるのも気持ち悪かったのでMediaElementを動的に生成する方法を採用しました。
MediaElementはWPF用のコントロールなのでFormsのControls.Addできません。
なのでWPFユーザコントロールのスーパークラスであるElementHostを生成して、そこにMediaElementをはめ込みました。
ElementHostがFormsとWPFの架け橋になります。
ところでMediaElementってDirectShowなんですかね?
だとするとCODECだけじゃなくDirectShow用のFilterがAND条件で必要なんですが、いまいち分かりませんん。


using System.Runtime.InteropServices;
var elm = new System.Windows.Forms.Integration.ElementHost();
this.Controls.Add(elm);
elm.Visible = true;
elm.Dock = DockStyle.None;
elm.Size = new Point(100, 100);
elm.Location = new Point(0, 0);
var media = new System.Windows.Controls.MediaElement();
elm.Child = media;
media.Visibility = System.Windows.Visibility.Visible;
media.Margin = new System.Windows.Thickness(0, 0, 0, 0);
media.LoadedBehavior = System.Windows.Controls.MediaState.Manual;
media.UnloadedBehavior = System.Windows.Controls.MediaState.Manual;
media.HorizontalAlignment = System.Windows.HorizontalAlignment.Center;
media.VerticalAlignment = System.Windows.VerticalAlignment.Center;

男らしいからソースにコメント書きませんよ。

Author: kachi

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です