UseInYourTool - HexagramNM/NM_WindowCaptureVirtualCamera GitHub Wiki
別のツールの開発にNM_WindowCaptureVirutalCameraを使用する
NM_WindowCaptureVirutalCameraに含まれるコードは別ツールの開発にも使えるようにしています。 以下の手順で組み込んでください。(Visual Studioで開発されていることを想定しています。)
-
必要なコードのコピー
setupRepository.bat
を実行し、あらかじめDirectShowのライブラリをビルドしておきます。 その後、以下のフォルダやファイルを開発しているツールのフォルダにコピーしてください。External
NM_WCVCam_DS
NM_WCVCam_MF
NM_WindowCapture
global_config.h
-
プロジェクトの組み込み
開発ツールのソリューションファイルに以下のプロジェクトを追加してください。
NM_WCVCam_DS/NM_WCVCam_DS.vcxproj
NM_WCVCam_DS/NM_WCVCam_DS_32.vcxproj
(32bit用のDirectShow仮想カメラを作るプロジェクトです。)NM_WCVCam_MF/NM_WCVCam_MF.vcxproj
NM_WindowCapture/NM_WindowCapture.vcxproj
ビルドで生成されたdllをコピーするためにビルド後のイベントを設定していますので、必要に応じて設定を変更してください。
-
仮想カメラのプロパティ変更
このままだと、元々の仮想カメラとこれから作る仮想カメラが競合するので、
global_config.h
内のパラメタを変更して下さい。パラメタ名 内容 VCAM_VIDEO_WIDTH
仮想カメラの解像度の幅 VCAM_VIDEO_HEIGHT
仮想カメラの解像度の高さ SHARED_CAPTURE_WINDOW_TEXTURE_PATH
共有テクスチャのパス。末尾の NM_WCVCam_Captured_Window
を別の名前にする必要がありますCLSID_NM_WCVCam_DS
DirectShow仮想カメラのGUID。必ず変更してください NAME_NM_WCVCam_DS
DirectShow仮想カメラの表示名 CLSID_NM_WCVCam_MF
MediaFoundation仮想カメラのGUID。必ず変更し、 CLSID_TEXT_NM_WCVCam_MF
も同じになるように修正してくださいNAME_NM_WCVCam_MF
MediaFoundation仮想カメラの表示名 -
(C#でツールを開発する場合)NM_WindowCapture.csの組み込み
ツールのGUIをC#で作っている場合は、そのGUIのプロジェクトフォルダに
NM_WindowCaptureVirutalCamera/NM_WindowCapture.cs
をコピーし、NM_WindowCapture.cs
にある関数を使って、ウィンドウキャプチャやトリミングの制御処理を実装してください。NM_WindowCapture.dll
のAPIについてはこちらをご覧ください。 -
ビルド
Visual Studioでソリューションをビルドします。ビルド後、開発しているツールのexeファイルと同じフォルダに、
NM_WindowCapture.dll
が存在するようにしてください。 -
仮想カメラの登録
ビルドにより生成された、以下の仮想カメラのdllファイルを、
regsvr32
でレジストリに登録してください。NM_WCVCam_DS_64.dll
NM_WCVCam_DS_32.dll
NM_WCVCam_MF.dll
レジストリへの登録は以下のコマンドからできます。登録を解除する場合は以下のコマンドに
/u
の引数を追加してください。regsvr32 <登録するdllファイルのパス>
-
MediaFoundation仮想カメラの権限設定
NM_WCVCam_MF.dll
については、以下のコマンドでセッション0からアクセスできるように、以下のコマンドで権限を設定します。icacls NM_WCVCam_MF.dll /grant BUILTIN\Users:RX
元に戻す場合は以下のコマンドを呼んでください。
icacls NM_WCVCam_MF.dll /remove:g BUILTIN\Users