これは簡単な演習ではありませんが、実行できます。私は前にそれをしたので知っています。:)
これをC++で実装しました。
あなたがする必要があるのは、共有メモリサーバーとして知られているものを作成することです。共有メモリサーバーは、複数のプロセスがアクセスできるRAMの領域です。Windowsで名前付き共有メモリを使用して作成する方法は次のとおりです。
http://msdn.microsoft.com/en-us/library/windows/desktop/aa366551(v=vs.85).aspx
2台のカメラからのビデオをミキシングするアプリケーションでは、ミキシングされたビデオフレームをこの共有メモリに書き込むDirectShowレンダリングフィルター(CBaseRenderer)を作成する必要があります。
一方、メインアプリケーションがこのバッファーに書き込むビデオビットマップを読み取るDirectShowキャプチャフィルター(CSourceおよびCSourceStream)を実装する別のVisualStudioDLLプロジェクトを作成する必要があります。このVSプロジェクトは、Windows用のDirectShowキャプチャデバイスとして登録するために呼び出すことができる登録可能なDLLである必要があります。
メインアプリケーションは、動作時にこの共有メモリバッファを作成して維持します。別のアプリケーション(ビデオ会議プログラムなど)がキャプチャデバイスにアクセスする場合、メインアプリケーションが実際のビデオフレームをデバイスにフィードするまで、デバイスからのすべてのデータは空白のバッファになります。
ヒント1:これはマルチスレッド操作であるため、フレームの準備ができたことをキャプチャフィルターに通知するためのイベントハンドルが必要になります。また、アプリケーションの「レンダリング」スレッドとキャプチャデバイスの「キャプチャ」スレッドによるバッファへのアクセスを制御するためのミューテックスも必要になります。
ヒント2:レンダリングまたはキャプチャフィルターが破棄されるまで、メモリポインターでUnmapViewOfFileまたはCloseHandleを呼び出す必要はありません。
粉砕する必要のあるコードはたくさんあるので、有用な例はこの説明の範囲を超えています。これにより、正しい方向に進むことができます。幸運を!