Просмотр камер на мобильных устройствах

Клиент позволяет одновременно просматривать видео с 16 камер, управлять PTZ с помощью функции «тачскрин», сохранять кадры в память планшетного ПК, прослушать звук с микрофонов. Веб-камеру можно запросто приспособить для распознавания лиц и создания продвинутого способа лог-она в систему? Все, что позволяла сделать библиотека – вывести изображение с веб-камеры. Вполне возможно, что в одном компе/ноуте может быть несколько веб-камер.

Тогда я и столкнулся с этими функциями впервые. Каждого из участников снимает отдельная камера. Сами камеры подключены к моему компу. Когда я начинаю съемку, то выбираю в программе для работы с видеокамерами нужную в настоящий момент камеру.

Начинаем реализацию: первые досадные огорчения

Немного забегая вперед, скажу, что дальнейшие действия с камерой будут происходить путем банальной отправки сообщений окну захвата. Увы, как и в случае с функциями, C# ничего не знает о существовании этих констант. Дальнейшее описание класса для работы с веб-камерой я опущу. Каркас я рассмотрел, а со всем остальным ты легко разберешься путем раскуривания моего хорошо прокомментированного исходника.

Содержание статьи

Ах да, еще на моей форме пестреет компонент Image. Его я применяю для отображения видео с камеры. AForge.NET в первую очередь предназначен для разработчиков и исследователей. В ней описаны абсолютно все возможности продукта. Все написано цивильно и копаться в коде – одно удовольствие.

На их основе легко сварганить как профессиональную утилиту для работы с веб-камерой, и поднимать на ее продаже несколько сотен баксов в квартал или написать хитрого и злобного трояна-шпиона. Для просмотра видео с сервера через мобильные устройства (КПК, мобильный телефон) предусмотрено специальное программное обеспечение, доступное для свободного скачивания в разделе «Скачать». Благодаря специальному программному обеспечению возможно получить доступ к серверу в любой точке мира и не только просматривать видео с камер, но и управлять поворотными устройствами.

Некоторые люди опасаются, что встроенная в их ноутбуки вебкамера может за ними подглядывать. Практически отчаявшись, я плотно засел в гугле. Результаты поиска по рунету меня не вдохновили – все, что я нашел – это ссылки на MSDN и технологию DirectDraw. Среди них были всевозможные примеры и небольшие статейки (американцы не любят много писать).

Разобраться в нем было тяжело. Поэтому я решил с ним не заморачиваться, а попытаться найти способ попроще. Посмотрев сорцы, я решил написать свою версию библиотеки и снабдить ее нужным функционалом. Обычно в них участвуют два человека.

Раз уж мы решили взять камеру под контроль, то обязаны разобраться, как получать список установленных устройств видеозахвата и выбрать то, с которым будем работать в настоящий момент

Для решения этой нехитрой задачи в WindowsAPI предусмотрена функция capGetDriverDescription(). Самое интересное место в нем – цикл, в котором происходит вызов упомянутой выше функции capGetDriverDescription. Из MSDN мы знаем, что индекс (первый параметр функции capGetDriverDescription()) может варьироваться от 0 до 9, поэтому мы целенаправленно запускаем цикл в этом диапазоне.

Вышеприведенный код (не считая инициализацию класса MotionDetector) у меня выполняется при получении очередного кадра с веб-камеры. С получением списка устройств разобрались, теперь позаботимся об отображении видеопотока с камеры.