ТВ камеры Проекты Ссылки

Программно-аппаратный видеорегистратор своими руками.

ПРОГРАММЫ ВИДЕОРЕГИСТРАТОРА
Поводом к написанию программы видеорегистратора "Ориент-М" стала необходимость разработки простой четырех-восьми камерной компьютерной системы видеонаблюдения с преемлимыми техническими характеристиками при минимальных затратах. Так как многовходовая карта видеозахвата - вещь довольно дорогостоящая, было решено использовать платы PCI на BT848 - BT878 с одним видеовходом, и реализовать программное поочередное либо выборочное переключение ТВ камер при помощи внешнего устройства сопряжения с РС - коммутатора видеосигналов. Понятно, что при таком подходе наблюдение и запись видеоинформации со всех камер одновременно возможна лишь в малокадровом режиме, а в реальном времени - только с одной выбранной ТВ камеры. Этот явный недостаток все же с лихвой компенсируется простотой, надежностью и весьма невысокими затратами по реализации подобной системы видеонаблюдения. Справедливости ради следует отметить, что во времена засилья рынка страны китайскими дешевыми видеорегистраторами, постепенно теряется актуальность разработки программно-аппаратных устройств, аналогичных предлагаемому "Ориент-М".
При написании кода по захвату видео, его обработке и архивированию был использован инструментарий DirectX SDK. DirectX - набор бесплатных мультимедийных библиотек для Windows. В 2000 году библиотека DirectShow стала частью DirectX SDK (Software Development Kit - комплект разработки программного обеспечения) в составе DirectX 8.0, однако была удалёна из SDK в апреле 2005 года.

Немного о DirectShow. Библиотека DirectShow - это API, позволяющий Windows-приложениям управлять широким спектром устройств аудио/видео ввода. Оно поддерживает также различные форматы, от WAV и AVI до Windows Media.
Цифровые видеопотоки представляют собой последовательности видеофреймов, которые могут быть несжатыми RGB-изображениями или, если поток сжат, набором цировых значений, который можно декодировать для получения изображения. Видео и аудио потоки могут быть обработаны самыми разными способами. Они могут быть скомбинированы, проанализированы, перемешаны, скопированы, сгенерированы, изменены и т.д. В DirectShow все эти операции скрыты в фильтрах - COM-объектах, имеющих стандартное поведение. Фильтры, читающие файлы, расщепляющие бинарные данные на разные (например, аудио и видео) потоки - демультиплексоры, фильтры-компрессоры и фильтры-декомпрессоры, фильтры, отображающие аудио или видеоданные, фильтры - драйверы устройств - все это фильтры, которые "знают", как они должны взаимодействовать, кроме обработки данных, - с другими фильтрами - для передачи потоковых данных. Программные приложения соединяют эти фильтры в необходимом порядке. В пакете разработчика DirectX SDK имеется программа "GraphEdit", манипулирующая фильтрами, установленными и зарегистрированными в системе Windows.
Скачать программу для работы с фильтрами "GraphEdit" - 142 кб.

Фильтры могут быть трех основных типов: фильтры источников для ввода, фильтры преобразования для обработки и фильтры рендеринга для отображения информации.
Фильтр источника вводит данные в поток. Эти данные он может получать из файла или, например, видеокамеры, микрофона и т.д. DirectShow тесно связана с моделью Windows-драйвером (Windows Driver Model - WDM). Любое медиаустройство, например карта видеозахвата с правильно реализованным WDM-драйвером, автоматически предоставляется для приложения как DirectShow фильтр источника.
Скачать WDM драйвер для карт видеозахвата на базе BT848 - BT878 - 286 кб.

Фильтры преобразования получают входящие данные от некоторого другого фильтра, обрабатывают их и посылают следующему фильтру. Фильтры преобразования могут анализировать потоки, кодировать их и декодировать и т.д., т.е. проводить анализ или манипуляции над аудио и видеоданными. DirectShow предоставляет множество разнообразных фильтров преобразования для управления различными сжатиями и форматами файлов, включая аналоговые телевизионные сигналы.
Фильтры рендеринга принимают данные от фильтров источников или преобразования и отображают их на экране, выводят через колонки, в файлы, устройства и т.д.
ВИДЕОРЕГИСТРАТОР "ОРИЕНТ-М"
О программе "Ориент-М". Это приложение под Windows XP, использующее фильтры DirectShow и реализованное в среде разработки Borland C++ Builder 5. Два основных режима работы программы - одноканальный ("Коммутатор") и мультиканальный ("Мультиплексор"). В одноканальном режиме Пользователем выбирается конкретная камера из общего числа подключенных к аппаратному видеокоммутатору. Одновременно с видео может быть использован и аудиоканал. Захваченная и оцифрованная информация в реальном времени выводится на монитор и звуковые колонки, а при необходимости записывается на винчестер в сжатом виде (качество и степень сжатия определяются Пользователем при выборе конкретных "кодеков", установленных в системе).
В режиме "Мультиплексор" после захвата кадра, например с ТВ камеры 1, видеофрейм записывается в буфер, из которого выводится в видеоокно 1 и, одновременно с этим, отсылается на устройство (фильтр) сжатия (кодек) и далее сохраняется в файл. В этот момент видеопереключатель через регистры данных и контроля порта LPT, получает из программы команду на коммутацию видео ТВ камеры 2. Кадр, полученный со второй камеры анализируется (в следствие отсутствия синхронизации ТВ камер, информация может быть неполной) и, по результатам анализа, - пропускается или записывается в буфер. Далее процесс повторяется. Пользователь наблюдает на мониторе мульти-картинку в малокадровом режиме.
Программа написана с учетом возможности использования в системе до четырех карт видеозахвата и четырех видеокоммутаторов, что позволило довести общее число подключаемых ТВ камер - до 32. Однако, необходимо помнить о том, что большое число создаваемых видеопотоков требует значительных рессурсов РС и не всегда оправдано. Опыт показывает, что наиболее оптимально - подключение не более четырех ТВ камер на канал.

В заключении можно сказать о том, что программа видеорегистратора "Ориент-М" с аппаратным видео и аудиокоммутатором позволила осуществить:

- прием видео сигналов от 1 до 8 ТВ камер на одну карту видеозахвата;
- прием аудио сигналов от 1 до 8 микрофонов;
- прием сигналов «тревога» от 1 до 8 шлейфов охранно-пожарной сигнализации;
- запись видео и аудио информации на жесткий диск компьютера по сформированному Пользователем заданию;
- запись видео и аудио информации на жесткий диск компьютера в режиме «коммутатор» или «мультиплексор»;
- запись видео и аудио информации на жесткий диск компьютера по сигналу «тревога»;
- одновременные просмотр (прослушивание) и запись видео и аудио информации в режиме «коммутатор» (в режиме «мультиплексор» только видео);
- совместное использование цветных и черно-белых телевизионных камер;
- функционирование системы, как в автономном режиме, так и под контролем оператора;
- установку видео-разрешения при просмотре и записи не ниже или соответствующему разрешающей способности применяемых компонентов в телевизионной системе;
- автоматическое сканирование свободного места на жестком диске компьютера и определение максимально возможной длительности записи при выбранном Пользователем видеоразрешении;
- воспроизведение ранее сохраненной видео и аудио информации в режимах: «реальный», «пошаговый» с регулировкой длительности «шага»;
- возможность выбора кадра, участка в кадре, их сохранения для дальнейшей обработки в специализированных графических программах.

Скачать исходники (полный архив) - 4,0 Мб.
Скачать исходники (только файлы "*.cpp" и "*.h") - 112 кб.
Скачать демо-версию программы - 5,8 Мб.
В скомпилированной демо-версии функции "аларм" и "аудио" отключены. Для их включения необходимо внести изменения в заголовочный файл "CVideo.h" и заново перекомпилировать весь проект. В этом же файле прописывается число используемых карт видеозахвата и подключенных ТВ камер.

Недостатком проекта можно считать использование большого числа vcl-компонентов сторонних организаций и разработчиков, что безусловно отражается на его возможной повторяемости. Однако в настоящее время проект остается в том виде, в котором был реализован несколько лет тому назад, и никаких изменений в него более производиться не будет. Тем не менее, каки-либо "куски" кода, возможно будут кому-нибудь полезны.
Перечень vcl-компонентов (со ссылками), используемых в проекте, для С++ Builder5
Скачать архив файлов фильтра переключателя видеопотоков - 232 кб.
При написани кода модуля для работы с LPT портом был использован free vcl - компонент "SmallPort" для Делфи или С++ Билдера (Alexander Weitzman: alweit1@hotmail.com)
Скачать архив файлов free vcl - компонента "SmallPort" - 24 кб.
Скачать BaseClasses9 для С++ Builder5 - 4,8 Мб.
ВИДЕОРЕГИСТРАТОР "ЭСПЕР"
Программа видеорегистратора "Эспер", так же как и "Ориент-М" - приложение под Windows XP, основанное на применении фильтров DirectShow и реализованное в среде разработки Borland C++ Builder 5. Программа поддерживает возможность использования в системе видеонаблюдения до четырех одновходовых карт видеозахвата на базе BT848 - BT878 (скачать WDM драйвер - 286 кб.), до четырех видеокоммутаторов, имеет те же технические характеристики, что и "Ориент-М" и позволяет решать аналогичные задачи в соответствующем объеме при создании многокамерной системы видеонаблюдения.
Основными отличиями этой программы являются применение собственного фильтра переключения видеопотоков, как отдельного программного модуля, упрощение общего кода и использование меньшего числа vcl-компонентов, не входящих в стандартную палитру среды разработки Borland C++ Builder 5.
Так же в программе "Эспер" упрощен интерфейс Пользователя, добавлена возможность записи файлов в формате ASF (Windows Media) и расширена общая функциональность за счет введения дополнительных программных опций, в том числе по пользовательским заданиям на запись в видеоархив.

Скачать исходники (полный архив) - 3,2 Мб.
Скачать исходники (только файлы "*.cpp" и "*.h") - 52 кб.
Скачать архив файлов фильтра переключателя видеопотоков - 232 кб.

При написани кода фильтра переключателя видеопотоков для работы с LPT портом был использован free vcl - компонент "SmallPort" для Делфи или С++ Билдера (Alexander Weitzman: alweit1@hotmail.com).
Скачать архив файлов free vcl - компонента "SmallPort" - 24 кб.
Скачать демо-версию программы - 5,0 Мб.
В скомпилированной демо-версии функция "аудио" отключена. Для ее включения необходимо внести изменения в заголовочный файл "CParams.h" и заново перекомпилировать весь проект. В этом же файле прописывается число используемых карт видеозахвата и подключенных ТВ камер.
Скачать BaseClasses9 для С++ Builder5 - 4,8 Мб.
ВИДЕОРЕГИСТРАТОР "ЭСПЕР - X"
В настоящее время разрабатывается проект кроссплатформенного клиент-серверного программного приложения "Эспер - Х".
Желающие могут ознакомиться с одним из вариантов кода под Linux по захвату видео. Файловый архив среза проекта, реализуемого на C++ QT4 в среде разработки QDevelop:
Скачать архив - 193,0 кб.

Реализованный код позволяет:
- определять все устройства видеозахвата, имеющиеся в системе;
- изменять и устанавливать свойства и параметры отображения и записи видео;
- выводить полученную с устройств видеоинформацию в многооконном мультиэкранном режиме на монитор при помощи OpenGL;
- записывать видео с использованием библиотеки libquicktime.

Программа не использует коммутатор видеосигналов, а выводит в реальном времени "картинки" со всех карт видеозахвата, в том числе и многовходовых, на экран монитора.
Код тестирован в OpenSUSE 10.2, но может быть запущен и в других UNIX-подобных системах. Необходимо лишь наличие QT4 или выше, OpenGL и библиотеки libquicktime.
Обсудить на форуме MSEVM.COM

Как получить несколько тысяч ссылок на свой сайт?
EVM EVM EVM e-KIT � ейтинг@Mail.ru Rambler's Top100 Яндекс цитирования