|
안녕하세요
capCreateCaptureWindow를 이용해서 캠제어하는데..
한개만 다이얼로그창에 "띄우는건 별문제가 되질 않는데
두개를 띄우는게 좀 안되네요...
이작업을 3일째 하고있는데 ㅠㅠ
제가 알아본결과 :
1. 두개의 캠을 다른 회사의 것으로 사용 (사용중)
2. usb포트를 pc의 앞 뒤로 꼽는다 (o k)
3.
m_Nhandle1 = capCreateCaptureWindow("cap window", WS_CHILD|WS_VISIBLE,20,20,400,400,this->m_hWnd,0);
capDriverConnect(m_Nhandle1, 0); << 두번째 인자값이 디바이스 인덱스라고 하더군요
capPreviewRate(m_Nhandle1, 30);
capPreview(m_Nhandle1, TRUE);
m_Nhandle2 = capCreateCaptureWindow("cap window", WS_CHILD|WS_VISIBLE,430,20,400,400,this->m_hWnd,0);
capDriverConnect(m_Nhandle2, 1); << 0이 아닌 1로..
capPreviewRate(m_Nhandle2, 30);
capPreview(m_Nhandle2, TRUE);
이런식으로 해봐도 capDriverConnect(m_Nhandle1, 0); 는 영상이 잘 나옵니다만
capDriverConnect(m_Nhandle2, 1); 는 검은화면만 나타납니다.
m_Nhandle1의 인덱스값을 1로, m_Nhandle2의 인덱스값을 0으로해도 인덱스 값이 0인 쪽에서만 동작을합니다
이는 곧 나오는 캠만 계속 나온다는 소리입니다..
캠 한개를 장치관리자에서 미사용으로 하고 다시 사용으로하면 이렇게 변경한 캠이 인덱스 1이 되고 다른한개의
인덱스값이 0이 되며(예상) 그것만 동작이 됩니다
4. 디바이스를 못찾나해서
capGetDriverDescription( WORD wDriverIndex, <<<< 0~9번까지
LPSTR lpszName,
INT cbName,
LPSTR lpszVer,
INT cbVer ) ;
으로 찾아본결과 0번은 찾는데 1~9번은 찾지를못합니다
어느 블로그에서는 system.ini 에 인덱스가 있다고 나온다고
찾아봤는데 0번 조차 찾을수 없었습니다 (캠 디바이스를 설치한 다른 pc)에서도..
하지만, 다이얼로그에서 말고 그냥 캠을 동작시켰을땐 두 캠 모두 동시에 동작이 됩니다...
혹시
m_Nhandle1 = capCreateCaptureWindow("cap window", WS_CHILD|WS_VISIBLE,20,20,400,400,this->m_hWnd,0);
에서 this->m_hWnd를 다른걸로 바꾸면 될까요?
한개가 동작하면 다른걸 동작시키려고할때 사용중이라 안되는것 같기도....(이건제 문법이 좀 야게서..ㅠㅠ)
바꿔보고 싶지만 어떻게 바꿔야 할지 잘 몰라서 망설이고 있습니다 ㅠㅠ
도와주세요...죽겠습니다..ㅠㅠ
ps.사용툴은 visual C++6.0 이구요
DirectShow 사용하라는 답변을 많이 봤는데 이건 재껴두고 답변해주시면 감사하겠습니다 ㅠ_ㅠ;;
|