2011-07-30 3 views
0

두 개의 다른 웹캠이 내 PC에 연결되어 있지만 다음 코드를 실행할 때 문제가 있습니다. 모든 초기화 루틴을 포함하고 capDlgVideoSource 호출로 마지막 줄을 선택하면 하나의 웹캠의 videosource 대화 상자가 목록 대신 표시되어 목록 사이에 선택할 수 있습니다. OS는 WinXP SP3여러 웹캠에서 capDlgVideoSource 문제

//Create invisible window to hold the capture window. 
hwnd = CreateWindowEx(0, _T("webcampcapwindow"), _T(""), 0, 0, 0, 1, 1, HWND_DESKTOP, NULL, GetModuleHandle(NULL), NULL); 
if(!hwnd) 
    throw FatalException(_T("main Capture window create failed"), _T(__FILE__), __LINE__); 

//Create capture window. 
capHwnd = capCreateCaptureWindow(_T("webcampcapwindowchild"), WS_CHILD, 0, 0, 1, 1, hwnd, 1); 
if(!capHwnd) 
    throw FatalException(_T("secondary Capture window create failed"), _T(__FILE__), __LINE__); 

CAPDRIVERCAPS caps; 
if(capDriverConnect(capHwnd, 0)) { 
    connectedtoWc = true; 
    break; 
} 

if (!connectedtoWc) 
    throw FatalException(_T("Could not connect to capture driver."), _T(__FILE__), __LINE__); 

//Attach our callback to the capture window. 
if(!capSetCallbackOnVideoStream(capHwnd, videoCallback)) 
    throw FatalException(_T("Unable to Attach our callback to the capture window."), _T(__FILE__), __LINE__); 

//Make sure we can access this object from the callback. 
if(!capSetUserData(capHwnd, this)) 
    throw FatalException(_T("Could not associate user data with capture."), _T(__FILE__), __LINE__); 

//Check everything's initialised. 
caps.fCaptureInitialized = false; 
if(!capDriverGetCaps(capHwnd, &caps, sizeof(CAPDRIVERCAPS))) 
    throw FatalException(_T("Unable to get driver caps"), _T(__FILE__), __LINE__); 

if(!caps.fCaptureInitialized) 
    throw FatalException(_T("Unable to initialize capture driver"), _T(__FILE__), __LINE__); 

if (caps.fHasDlgVideoSource) 
    capDlgVideoSource(capHwnd); 

비디오 소스 대화 상자에서 웹캠을 선택하려면 어떻게해야합니까? 현재 두 번째 웹캠 속성을 보여줍니다.

답변

1

귀하의 질문에 약간의 불명예가 있습니다. 전문가가 아니지만 많은 카메라 드라이버가 더 이상 지원하지 않는 VfW를 사용하고있는 것으로 보입니다.

지원은 WDM 하위 호환성 드라이버를 사용하여 작성됩니다.이 드라이버는 잘 작동하지 않습니다. 내가이 문제를 보았던 유일한 해결책은 일부 레지스트리 체조 (원하는 장치에 HKLM\SYSTEM\CurrentControlSet\Control\MediaResources\msvideo\MSVideo.VFWWDM을 설정하고 DevicePath)를 수행하는 것이지만, 이것은 내 머리를 약간 감싸고있다. 나는 하드웨어 녀석이다.