真実の楽譜(フルスコア)

プログラム関係の忘備録になるはず

C# Fromで動画再生するには

WPFやWinRTならXAMLベースのMediaElementクラスを使うことが、
MSDNでも書かれているように鉄板だと思います。
http://msdn.microsoft.com/ja-jp/library/aa970915(v=vs.110).aspx

しかし現在自分が今行っている案件はWindows Form開発。
Formアプリケーションではどうするのって事になったので、
調べてみた。

WindowsMediaPlayerコントロールを使う

一番簡単に実装するならコレが手っ取り早い模様。
再生、停止、スクロール等のUI操作は、
全部このコントロールにおまかせできます。

コントロール追加方法
  1. VisualStudioから[ツール]→[ツールボックス アイテムの選択]をクリック。
  2. [COMコンポーネント]のタブを選択
  3. [Windows Media Player]にチェックを入れOKをクリック
  4. ツールボックスに追加された[Windows Media Player]をFormに貼り付け

f:id:s_sikisya:20140303095357p:plain
f:id:s_sikisya:20140303095857p:plain

これだけでプレイヤーが画面に追加できます。
再生時にはコントロールのURLプロパティに、
ファイルパスを指定するだけでOK。

axWindowsMediaPlayer1.URL = "moviefile.wmv";

ちょっと気になるところ
  • コマ送り再生ができない
  • WindowsMediaPlayerの外観使ってます感バリバリ
  • UI部分のカスタマイズができない
  • 一時停止中にシークしてもサムネイルが移動しない

これらの点が気に食わないので、
楽せずにやる方法で現在は実装中。
具体的にはC#でDirectShowを使ってます。
DirectShowについては今後まとめていく予定。