0

64 ビット Windows 用の Visual C++ で仮想カメラ アプリケーションを実装しようとしています。DirectShow フィルターを使用してビデオ キャプチャ デバイスをエミュレートする tmhare.mvps.org/downloads/vcam.zip のコードから始めました。32 ビットの Windows では問題なく動作しますが、64 ビットの Windows では動作しません。Visual C++ プロジェクトを次のように変更しました。

1) プラットフォームを x64 に変更し、dll を再コンパイルして、64 ビット バージョンの strmbase.lib にリンクします。
2) プリプロセッサ定義を WIN32,_WIN32 から WIN64,_WIN64 に変更。
3) ライブラリを再コンパイルし、C:\Windows\system32\regsvr32.exe を使用して dll を登録しました。

dll は正常に登録され、regedit は仮想カメラの 3 つのキーを表示します

HKEY_CLASSES_ROOT\CLSID\{860BB310-5D01-11D0-BD3B-00A0C911CE86}\Instance\{8E14549A-DB61-4309-AFA1-3578E927E933},
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID\{860BB310-5D01-11D0-BD3B-00A0C911CE86}\Instance\{8E14549A-DB61-4309-AFA1-3578E927E933},
HKEY_CLASSES_ROOT\CLSID\{8E14549A-DB61-4309-AFA1-3578E927E933}\InprocServer32

ただし、Skype も Windows Live Messenger も、64 ビット Windows ではカメラを認識しません。
私は何を間違っていますか?Win64 には 64 ビット アプリケーション用の HKEY_LOCAL_MACHINE\Software\Classes\CLSID{guid} と 32 ビット アプリケーション用の HKEY_LOCAL_MACHINE\Software\Wow6432Node があることは理解していますが、コードを 64 ビット アプリケーションとしてコンパイルしているため、そのキーがレジストリの右側の部分に配置されていること。サンプルとして使用できる 64 ビット ウィンドウ用の DirectShow 仮想カメラ フィルターの実装はありますか (32 ビット ウィンドウ用のものしか見つかりませんでした)。

4

2 に答える 2

1

1 年ほど前に DirectShow を試してみましたが、覚えている限りでは、64 ビット アプリケーションではサポートされていません。したがって、32 ビット モードに切り替えるか、64 ビットをサポートするライブラリを見つけることをお勧めします。これはあなたを助けるかもしれません。

http://directshownet.sourceforge.net/

于 2011-10-22T20:30:13.317 に答える
0

64 ビット フィルターは、32 ビット ピアとまったく同じように機能し、特異性は関係ありません。言及する価値のある一般的なルールが適用されます。フィルター DLL のビット数はアプリケーションのビット数と一致する必要があります。たとえば、Skype は OS のビット数に関係なく常に 32 ビットであるため、32 ビットの仮想カメラが必要です。Skype は 64 ビット フィルターを使用しないため、それらを気にしません。

また、上記の#2がわかりません。別のターゲット (x64) 用に既存の構成の複製を作成するだけで、Visual Studio は _WIN64 などの定義済みの条件を更新します。コードを手動で変更する必要はありません。

于 2011-10-22T21:06:18.467 に答える