DirectShow関係2(DirectX9+VB.net)
1.動画の再生
VB.netからDirectX9で動画を再生する方法を簡単に紹介します。
(1)プロジェクトの作成
まずはVB.netのプロジェクトを作ります。
メニューから「ファイル」-「新規作成」-「プロジェクト」を選び、
VisualBasicプロジェクトを選択します。

上の図では名前は「dshownet1」としていますが、適当な名前をつけてもらってかまわないです。
右側のテンプレートでは「Windowsアプリケーション」を選択します。(別になんでもいいんだけど)
DirectX9SDKをインストールすると「DirectX9 Visual Basic Wizard」というのが増えてますが、
今回は使いません。そのうち時間があったらそっちの方もやってみようかと思います。
(2)参照の追加
プロジェクトができましたら、DirectX用の参照を追加します。
メニューの「プロジェクト」-「参照の追加」を選択します。

リストから「Microsoft.DirectX..AudioVideoPlayback」を選び、選択ボタンで追加します。
これで動画の再生に必要な部品が使えるようになります。
(3)コーディング
フォームをダブルクリックしてコードを入力します。
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows フォーム デザイナで生成されたコード "
略
#End Region
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
End Sub
End Class
|
デフォルトで上の様なコードになっていると思いますので、
以下の文を追加します。(青色部分)
Public Class Form1
Inherits System.Windows.Forms.Form
#Region " Windows フォーム デザイナで生成されたコード "
略
#End Region
Private Const FILENAME As String = "C:\DXSDK\Samples\Media\highway.avi"
Private mMedia As Microsoft.DirectX.AudioVideoPlayback.Video
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
mMedia = New Microsoft.DirectX.AudioVideoPlayback.Video(FILENAME, False)
mMedia.Owner = Me
mMedia.Play()
End Sub
End Class
|
これだけです(^^;
一応順に説明します。
Private Const FILENAME As String = "C:\DXSDK\Samples\Media\highway.avi" |
例によってSDKに付属するサンプル動画のファイル名を定義します。
Private mMedia As Microsoft.DirectX.AudioVideoPlayback.Video |
動画再生を行うMicrosoft.DirectX.AudioVideoPlayback.Videoクラスの変数を定義します。
mMedia = New Microsoft.DirectX.AudioVideoPlayback.Video(FILENAME, False)
mMedia.Owner = Me
mMedia.Play()
|
Form1_Load内でこのVideoクラスのインスタンスを作成し、再生開始までしています。
Videoクラスのコンストラクタは2種類ありますが、
違いは自動的に再生を開始するかどうかのスイッチの有無で
どちらもファイル名を必要になります。
Ownerプロパティは動画を再生するコンテナを指定します。
ここではMe,つまりForm1フォームをコンテナにしています。
Ownerプロパティを指定しない場合は、別ウィンドウで再生されます。
最後にPlayメソッドで動画の再生を開始しています。

(動画が再生されるのが見えるでしょう。
愚か者には見えないようなプロテクトがかかってますが笑)
このように再生はとっても簡単です。
自動的にウィンドウサイズを動画サイズに変更してくれますし、
ウィンドウサイズを変更すれば動画サイズが変わります。
至れり尽くせりですね。(楽過ぎ)