Приложение под Windows для захвата, сжатия и записи видео

Цена договорная • наличный расчёт, безналичный расчёт, электронные деньги
28 августа 2014, 21:48 • 4 отклика • 57 просмотров
Требуется написать клиент-серверное приложение для Windows (XP и выше, все разрядности).
Задача приложения: захват видео со звуком (DirectShow), сжатие и запись в реальном времени. Опционально - наложение текста на картинку.

Серверная часть - запускается как сервис на машине (сервер, на данный момент Windows 7) с подключенным устройством захвата видео/аудикартой, имеет уникальный ID (строка).
Также к серверу подключена аппаратная кнопка "старт/стоп" записи с индикатором состояния (дублирует аналогичную в клиентской части), реализация на данный момент не определена, скорее всего какое-то устройство будет висеть на COM/LPT-порте.
Управление сервером-по сети, желательно предусмотреть дальнейшее развитие (написание модуля
для 1С, выполняющего функционал клиентской части, возможную интеграцию с
другими системами).
В перспективе (на данный момент не нужно):
- должна уметь устанавливаться сервисом с запуском под конкретной учетной записью посредством соответствующей команды;
- возможно будет прикручиваться аппаратная защита (HASP, привязка к железу, и т.п.);

Клиентская часть - управляет серверной по сети. Как вариант - можно заменить web-интерфейсом.

Клиент позволяет подключиться к серверу по его IP/DNS (задается в настройках). Опционально - самостоятельный поиск доступных серверов в сети.
Далее:
- получить/изменить текущие настройки серверной части (должны храниться на сервере), такие как:
- идентификатор сервера;
- текущие устройства захвата видео, звука (DirectShow). Позволяет выбрать требуемые из доступных серверу, изменить их настройки в случае необходимости;
- кодек для сжатия видео, аудио (для видео планируется h.264, mpeg2). Позволяет выбрать требуемые из доступных на сервере, изменить настройки сжатия/качество;
- корневой путь для сохранения (локальная папка на сервере, SMB или FTP ресурс), можно просто ручной ввод;
- логин/пароль пользователя для SMB/FTP;
- в случае не локального хранения (SMB, FTP) опция "кешировать запись" - сначала пишем в локальную папку, по окончании записи переносим в папку назначения;
- путь к локальному кешу;
- опцию "Наложить комментарий на изображение" (с параметрами: начальные координаты на экране, шрифт, размер шрифта)

Клиент имеет:

-2 поля для ввода текста, "Номер"(обязательное) и "Комментарий"

-кнопку "подготовить к записи".
При нажатии - надпись на кнопке меняем на "Завершить сеанс", поля "Номер" и "Комментарий" делаем неактивными.
Передаем на сервер "Номер". "Комментарий" и устанавливаем на сервере флаг "готов к записи". Эти параметры также должны храниться на сервере и подгружаться в клиент вместе с остальными текущими настройками, с соответствующим заполнением полей в клиенте и их активацией/деактивацией.

Серверная часть формирует полный путь для хранения файлов записи в виде: Корневой путь данного сервера\год\месяц\число\"Номер"\ID сервера.ХХХХ.avi
где: каталоги год, месяц, число - текущая дата.
Сами файлы именуются согласно ID сервера + порядковый номер (запись может быть инициирована/остановлена несколько раз, порядковый номер должен устанавливаться в "0001" при нажатии кнопки "подготовить к записи", далее инкремент номера на 1 при каждом старте записи).
Пример конечного результата для сервера: "\\share\video-root\2014\08\28\Видеосервер-А.0001.avi" "ftp://myftpserver.ru/videoarc/Видеосервер-А.000..."
Контейнер для видео любой, но должен открываться стандартными проигрывателями.

При повторном нажатии - активируем поля для ввода, флаг "готов к записи" снимаем;

-кнопку "запись"/"стоп"
При нажатии - запуск серверной части.
Если стоит флаг "готов к записи" - захватывать картинку и звук (как есть, обработка пока не планируется),
при активной опции "Наложить комментарий на изображение" наложить тест на изображение: "Номер / Комментарий / Текущая дата-время",
сжимать и сохранять в файле согласно настроек.

-предпросмотр картинки (с наложенным текстом). Живое видео не нужно, можно просто сформированный кадр. Обновлять по клику или можно, допустим 1 кадр/с. На время записи предпросмотр не нужен - только для контроля настроек перед стартом.

-в клиенте отображается текущая дата/время сервера (для контроля);

В перспективе планируется сжатие FullHD в h.264 в реальном времени.
Для начала нужен продукт, позволяющий оценить требуемые аппаратные ресурсы, в связи с чем возможна разработка в два этапа.
На первом этапе возможны упрощения: для начала достаточно будет приложения под Windows 7, выполняющего функции сервера и клиента одновременно (не сервис), работа только с локальной папкой для сохранения, без аппаратной кнопки старт/стоп записи.
Второй этап - согласно ТЗ.

Первоначально требуется оценка сроков и примерной стоимости проекта, как в полном виде, так и первого (упрощенного) этапа.

ТЗ не претендует на полноту, вопросы, предложения и уточнения принимаются.

В дальнейшем планируется развитие продукта (расширение клиентской части до многопользовательского web-приложения c БД и разграничением прав пользователей, работой одновременно с несколькими серверами и т.д., написание модуля для 1С).