C # веб-камера WM_CAP_CONNECT: хотите принудительно установить источник захвата, когда присутствует несколько источников захвата - PullRequest
2 голосов
/ 17 мая 2010

Я использую код WebCam_Capture, который нашел в Интернете для доступа через C # к веб-камере. На компьютере с одним источником видео это работает как шарм! (Программа запускается при запуске, находит веб-камеру и работает).

Хотя на компьютере с большим количеством видеоисточников (скажем, веб-камера, а затем многокамерная камера, работающая поверх этого), программа запускается и запрашивает пользователя, какой источник использовать. Мне бы очень хотелось, чтобы моя программа запускалась автономно при перезапуске машины, поэтому ожидание ввода данных пользователем приводит к тому, что я все равно могу заставить его просто выбрать, скажем, первый найденный источник и продолжить с этим?

Итак, у меня есть код веб-камеры, который я действительно нашел здесь:

http://channel9.msdn.com/forums/TechOff/93476-Programatically-Using-A-Webcam-In-C/?CommentID=94149

и теперь при подготовке этого поста я провел дополнительное исследование и обнаружил, что моя проблема заключается в этой строке из приведенного выше кода:

SendMessage(mCapHwnd, WM_CAP_CONNECT, 0, 0);

Это то, что подключает веб-камеру, единственная проблема заключается в том, что вышеизложенное вызывает этот раздражающий диалог источника видео, если у меня более одного источника. Я хочу, чтобы он просто использовал первый источник, чтобы диалог не появлялся. Я попытался передать различные значения, где 0, конечно, диалоговое окно не появляется, но оно также не работает. Кто-нибудь знает, есть ли значение, которое я могу передать SendMessage, чтобы приостановить диалоговое окно и, тем не менее, выбрать первый источник видео, который он найдет?

1 Ответ

1 голос
/ 21 мая 2010

Единственный совет, который я обнаружил, заключается в том, что первый 0 - это индекс камеры:

SendMessage(_windowHandle, WM_CAP_CONNECT, _videoSourceIndex, 0)

Попробуйте дать 0,1,2, пока не подключится нужная камера. Обратите внимание, что до ответа веб-камеры может пройти до 5 секунд. Некоторые из них довольно медленные.

Но лучшее предложение - попробовать библиотеку DirectShow.NET , так как она гораздо более функциональна, чем используемый в настоящее время API.

...