(VB.Net)DirectShowとWindowsMediaPlayerコントロールで動画を再生させる
1年弱ほどまえに作ったサンプルです。
.Netから直接DirectShowを利用するのと、WindowsMediaPlayerコントロールを利用して動画再生したときの状態を比較するために作りました。
WindowsMediaPlayerコントロールを使うと一時停止や音量などを操作するUIはついてくるのですが、明らかにWMPを使ってるのがバレバレです。また、WMPのバージョンにも左右されますしね。
一方のDirectShowを使う場合はかなりややこしいので扱うにはそれなりのスキルは必要ですね。UIも自分で作らないといけません。

なお、DirectShow、WMPはCOMコンポーネントですが、それ以外にも、.Net純正のMicrosoft.DirectX.AudioVideoPlaybackクラスがありましたが、あまりにバグが多いらしく.Net2.0以降は使用がほぼ無理な状態になりました。

なお、参考元にしたのは下記サイトです。
■WindowsMediaPlayerコントロール
C#でWindows Media Playerを使う
Media Playerエラーを取得するには?
■DirectShow
DirectShow関係 DirectShowに関するかなり詳細な情報があります。
MSDN:VBからDirectShow使うときに使うActiveMovie control type libraryのリファレンス

WindowsMediaPlayerコントロールを使うにはツールボックスに Windows Media Player のコントロールを追加してやる必要があります。
e0091163_047712.jpg

DirectShowを使うには参照設定で ActiveMovie control type library を追加してやる必要があります。
e0091163_0474287.jpg

下記のサンプルはDataフォルダ内にある動画ファイルをコンボボックスに表示し、開始ボタンを押下すると再生開始し、停止ボタンを押下すると再生停止します。
エラー処理等はちゃんとしてないので注意が必要です。特にCOMコンポーネントを利用してるため例外処理はシビアにならないといけないかもしれません。

デザイナはこんな感じです。
e0091163_0482620.jpg


コードをここに載せようとおもったのですが、文字数上の関係で何ページにもおよび面倒なので、ソース自体をZIPで固めてサーバにアップしました。
ここからダウンローできます。サンプル動画も入っているのでファイルサイズは30MB弱です。
一応ビルドしたのも入れてますが、ビルドフォルダのdataフォルダには動画が入ってません。プロジェクトのdataフォルダの動画をコピーするとOKです。
なお、ソースは Visual Studio 2008(VB)で作ってます。

なお、各種形式の動画を試すにはサンプルが必要ですが、下記サイトにある程度のコーデックサンプルがあります。
動画圧縮サンプル
[PR]
by jehoshaphat | 2009-01-22 01:15 | .Net開発 | Trackback | Comments(0)
トラックバックURL : http://jehupc.exblog.jp/tb/9457754
トラックバックする(会員専用) [ヘルプ]
※このブログはトラックバック承認制を適用しています。 ブログの持ち主が承認するまでトラックバックは表示されません。


<< (ハードウェア)不良CD挿入か... (Firefox)ページランク... >>