タイトル | : Re^7: USBカメラ |
記事No | : 13469 |
投稿日 | : 2009/02/27(Fri) 10:29 |
投稿者 | : かっけ |
'カメラのフィルタ名 Private Const CAMERA_FILTER_NAME$ = "USB ビデオ デバイス" Private Const CAMERA_OUTPUTPIN_NAME$ = "~Capture"
'フィルタグラフマネージャ Private mGrp As QuartzTypeLib.FilgraphManager
Private Sub Form_Load()
'グラフマネージャの作成 Set mGrp = New QuartzTypeLib.FilgraphManager
'グラフにキャプチャ(カメラ)フィルタを追加する Dim cameraflt As QuartzTypeLib.IFilterInfo Set cameraflt = AddFilter(mGrp, CAMERA_FILTER_NAME$) If cameraflt Is Nothing Then MsgBox "カメラ'" + CAMERA_FILTER_NAME + "'が見つかりません。" + vbCrLf + "カメラの名前を確認してください。" Exit Sub End If
'グラフにビデオレンダラフィルタを追加する AddFilter mGrp, "Video Renderer"
'カメラの出力ピンを取得 Dim camerapin As QuartzTypeLib.IPinInfo Dim pp As QuartsTypeLib.IPinInfo
For Each pp In cameraFlt.Pins If pp.Direction = 1 Then Set camerapin = pp Exit For End If Next
'カメラの出力ピンからフィルタを接続し、グラフを構築する camerapin.Render
'ビデオサイズ(縦横)を取得 Dim bv As QuartzTypeLib.IBasicVideo Dim vx&, vy& Set bv = mGrp bv.GetVideoSize vx, vy
'ビデオサイズに合わせてウィンドウを調整 Dim winx&, winy& 'ウィンドウの縁サイズ Me.ScaleMode = vbTwips winx = Me.Width - Me.ScaleWidth winy = Me.Height - Me.ScaleHeight Me.Width = winx + vx * Screen.TwipsPerPixelX Me.Height = winy + vy * Screen.TwipsPerPixelY
'ウィンドウ内で動画を再生させる Dim vw As QuartzTypeLib.IVideoWindow Dim L As Long, T As Long, W As Long, H As Long Set vw = mGrp vw.WindowStyle = &H40000000 'WS_CHILD
L = 1035: T = 5670: W = 1995: H=1485 vw.SetWindowPosition L / 15, T / 15, W / 15, H / 15 vw.Owner = Me.hWnd
'再生 mGrp.Run
End Sub
'レジストリに登録されているフィルタをグラフに追加する Public Function AddFilter(ByRef Grp As QuartzTypeLib.FilgraphManager, ByVal FilterName$) As IFilterInfo Dim regflt As QuartzTypeLib.IRegFilterInfo For Each regflt In Grp.RegFilterCollection If regflt.Name = FilterName$ Then regflt.Filter AddFilter Exit Function End If Next End Function
こんな感じです。
VB6.0 SP3 です。
よろしくお願いいたします。
|