このコードを使用して、次のオープン ソースの記事から C# DirectShow プッシュ ソース フィルターを作成しています。これにより、VirtualCamというフィルターが作成されます。
http://www.codeproject.com/Articles/437617/DirectShow-Virtual-Video-Capture-Source-Filter-in
GraphEditユーティリティはそれを見つけて、ビデオキャプチャ ソースグループにCSharp Virtual Cameraという名前で表示します。これを使用してフィルタ グラフを作成すると、問題なく動作します。Skypeもそれを見つけることができます。ただし、メイン グループとしてVideoInputSourceを使用する場合、デバイス列挙呼び出しに表示されないため、一緒に使用したい他のすべてのソフトウェアがそれを見つけることができません。これがそのグループのクラス ID だと思います。
/// <summary> CLSID_VideoInputDeviceCategory, video capture category </summary>
public static readonly Guid VideoInputDevice = new Guid(0x860BB310, 0x5D01, 0x11d0, 0xBD, 0x3B, 0x00, 0xA0, 0xC9, 0x11, 0xCE, 0x86);
そのクラス ID は、ビデオ入力デバイスをスキャンするオープン ソース ユーティリティから取得しました。VirtualCamフィルターも見つからないアプリの 1 つです。これらのアプリは、私の Web カメラなどのデバイスしか検出できません (つまり、VirtualCam は使用可能なデバイス リストに表示されません)。
VirtualCamのソース コードをビデオ入力デバイスとして宣言/登録し、VideoInputDeviceカテゴリのデバイス列挙スキャンに表示して、ほとんどのソフトウェアがそれを認識して使用できるようにするには、どうすればよいですか?
更新: GraphEditを詳しく調べたところ、ほとんどのアプリで見つからないVirtualCamフィルターと、見つけられるビデオ キャプチャ デバイスとの主な違いは、VirtualCamフィルターにはピンが定義されておらず、他のビデオにはピンが定義されていないことです。キャプチャ デバイスが行います。これが問題である場合、VirtualCamが検出され、宣言されたインターフェイスに適切にサービスを提供できるように、ピンを適切に定義するにはどうすればよいですか?