掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
映像分配するには (ID:147349)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
InfinitePinTeeフィルタを使ったサンプルを作りましたので,参考にしてください。 実行するとカメラの画像を5つ表示します。 なお,このサンプルはエラー処理やCOMオブジェクトの解放などの処理をしていませんので,注意してください。 Option Strict On Option Explicit On Imports DirectShowLib Imports System.Runtime.InteropServices Public Class Form1 Private Const S_OK As Integer = 0 Private comFilterGraph As New FilterGraph Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load Dim GraphBuilder As IGraphBuilder = DirectCast(comFilterGraph, IGraphBuilder) 'フィルタをグラフに追加する Dim comCamera As IBaseFilter = GetCameraFilter() 'カメラフィルタを取得する Dim comInfTee As IBaseFilter = DirectCast(New InfTee, IBaseFilter) GraphBuilder.AddFilter(comCamera, "Camera") GraphBuilder.AddFilter(comInfTee, "InfTee") 'カメラとInfinitePinTeeを接続する Dim comCameraCaptureOut As IPin = DsFindPin.ByCategory(comCamera, PinCategory.Capture, 0) 'カメラフィルタのキャプチャ出力ピンを取得する Dim comInfTeeIn As IPin = DsFindPin.ByDirection(comInfTee, PinDirection.Input, 0) GraphBuilder.Connect(comCameraCaptureOut, comInfTeeIn) 'InfinitePinTeeの出力をレンダリングする For i As Integer = 0 To 4 Dim comInfTeeOut As IPin = Nothing comInfTeeOut = DsFindPin.ByDirection(comInfTee, PinDirection.Output, i) GraphBuilder.Render(comInfTeeOut) Next DirectCast(comFilterGraph, IMediaControl).Run() End Sub 'カメラフィルタを取得する Private Function GetCameraFilter() As IBaseFilter Dim comDevEnum As ICreateDevEnum = DirectCast(New CreateDevEnum, ICreateDevEnum) Dim EnumMoniker As ComTypes.IEnumMoniker = Nothing Dim Moniker(0) As ComTypes.IMoniker Dim Camera As Object = Nothing DsError.ThrowExceptionForHR(comDevEnum.CreateClassEnumerator(FilterCategory.VideoInputDevice, EnumMoniker, CDef.None)) While EnumMoniker.Next(1, Moniker, IntPtr.Zero) = S_OK And Camera Is Nothing Moniker(0).BindToObject(Nothing, Nothing, GetType(IBaseFilter).GUID, Camera) End While Return DirectCast(Camera, IBaseFilter) End Function End Class
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.