web-dev-qa-db-ja.com

Windows 10で仮想Webカメラを作成する方法

ウェブカメラからビデオを取り、フレームにテキストをレンダリングし、モーショントラッキングを行い、仮想ウェブカメラに渡して簡単にストリーミングできるようにしたいと考えています。

StackOverflowでいくつかの回答が見つかりました。DirectShowを使用する必要があることを示唆しています。 DirectShowドキュメント の情報によると、DirectShow SDKはWindows SDKの一部です。 最新のWindows SDK をインストールしましたが、C:\Program Files (x86)\Microsoft SDKs\Windowsの下にDirectShowのサンプルがないため、DirectShowが含まれていないようです。 (stackoverflowの回答もかなり古いです-2010年頃)

仮想ウェブカメラの作成に役立つ、DirectShowを機能させる方法(Visual Studio 2015で動作するサンプルを含む)または他のDirectShowの代替手段を提案できますか?

16

仮想Webカメラは通常、ソフトウェアのみの実装であり、アプリケーションは物理的な表現を持つデバイスであるかのように検出します。上記のアプリケーションは、APIを使用してWebカメラを操作し、APIを拡張して独自のビデオソースを追加する機能は、仮想Webカメラを作成する方法です。

Windowsには、ビデオソースを使用するためのいくつかのAPIがあります:Windows用ビデオ、DirectShow、Media Foundation(時系列)。

Video for Windowsは実際には拡張可能ではなく、機能全体が制限されています。仮想カメラにカーネルモードドライバーを提供すると、仮想デバイスが表示されます。

DirectShowは、ほとんどのビデオキャプチャ対応Windowsアプリケーションで使用されるAPIであり、Windows 10(Windows RTのみを除く)を含むすべてのWindowsバージョンに存在します。次に、それは完全に拡張可能であり、ほとんどの場合、「仮想Webカメラ」という用語はDirectShow仮想Webカメラを指します。 StackOverflowの多くの質問で説明されているDirectShow仮想Webカメラを作成する方法は、DirectShowを使用してビデオキャプチャを実装するアプリケーションのWindows 10で完全に有効です。

DirectShowのサンプルはWindows SDKから削除されましたが、古いリリースでも引き続き見つけることができます。

ビデオカメラデバイスのカーネルモードドライバー(カスタムカーネルドライバーを介した仮想Webカメラ)を提供する場合、DirectShowは他のビデオAPIと同じようにそれを表示します。

Media Foundationは、DirectShowの後継と見なされていますが、拡張性の面でのビデオキャプチャ機能は存在しません。マイクロソフトは、カスタムビデオソースアプリケーションがWebカメラと同じ方法で発見できるようにしないことを決定しました。 Media Foundationは複雑で、オーバーヘッドがあり、全体的に使いにくいため、適度な量のアプリケーションで使用されています。 Media Foundationアプリケーション用の仮想Webカメラを実装するには、Video for Windowsの場合のように、カーネルモードドライバーを実装する必要があります。

13
Roman R.