Аннотация
Для полноценных съемок требуется запись всех видеопотоков с сведением их по таймкоду начала и по звуку. В серьезных продакшенах для этого применяются отдельные физические сервера записи несжатых видеосигналов. В сетевой потоковой передачи для записи видео используются различные физические или программные сетевые видеорекордеры (NVR). Большинство таких рекордеров предназначены для записи с перекодированием набора видеопотоков без сведения по времени и звуку - как камера отдает поток, так и пишем. Требуется создать сетевой видеорекордер предназначенный для студийной записи сетевых видеопотоков без перекодирования. Важнейшим требованием является сведение по единому таймкоду, а также возможность выбора из какого медиапотока, среди записываемых забирается аудиодорожка.
Роли
- DevOps
- Веб-разработчик
Имеющийся задел
Имеется полноценный записывающий агент с фейловером и созданием файла разрывов для склейки. Реализована запись множества потоков за раз без перекодирования, для управления записью написан сетевой API, отдельно сделана веб-страница для управления, а также реализован экспортер для Prometheus/Victoria Metrics, с возможностью реализовать алертинг через Alert Manager или Grafana.
Ожидаемый результат
Мастер-сервис для управления экземплярами записывающего агента. Мастер-сервис должен оркестирировать запись по заранее созданной конфигурации. Интерфейс редактирования конфигурации. Синхронизация по произвольному таймкоду или по NTP. Мультиплексирование аудиодорожек между записями.
Доступные ресурсы
Виртуальные машины кластера МИЭМ
Видеооборудование УЛ Сетевых Видеотехнологий
🎯 Общая характеристика проекта
| Атрибут | Значение |
|---|---|
| Тип | Программно-сетевой проект (рабочий) |
| Максимальная оценка | 10 баллов (рабочий проект) |
| Описание | Исследование: отсутствие синхронизированной многоканальной записи сетевых видеопотоков без перекодирования. Продукт: сетевой видеорекордер (NVR) для студийной съёмки, обеспечивающий одновременную запись нескольких RTSP-потоков с точной синхронизацией по таймкоду и гибким выбором аудиодорожки из одного из потоков. |
| Цель продукта | Создание решения для профессиональной многокамерной съёмки, позволяющего записывать все потоки без перекодирования, с точным сведением по времени и звуку — как в полноценных студийных условиях, но на базе IP-камер и сетевой инфраструктуры. |
| Целевая аудитория | Операторы студийных съёмок, организаторы трансляций, AV-инженеры, преподаватели, интеграторы СКУД/AV, службы трансляций, умный класс, корпоративные продакшены, студии стриминга. |
| Технологии (рекомендуемые) | Go, Docker, Kubernetes (опционально), GStreamer, RTSP, NTP, Prometheus/Grafana/VictoriaMetrics, Alertmanager, WebSocket, REST API, PostgreSQL/SQLite, веб-интерфейс (React/Vue), systemd, Bash/Ansible (управление ВМ), JSON-конфигурации. |
📅 Поэтапные требования к проекту
📌 Этап 1: Выбор темы
Дата: 19.01.2026
Формат: Онлайн-форма
Документы: Форма
🔹 Требования к защите
- Подтверждён выбор темы 5-3.
- Сформирована команда (до 2 человек).
- Определены роли: DevOps (развёртывание, масштабирование, мониторинг), Веб-разработчик (интерфейс, API, логика).
- Подтверждено понимание задачи: синхронная многоканальная запись без перекодирования с выбором аудио.
- Наличие доступа к ВМ кластера МИЭМ и IP-камерам (или симуляторам потоков).
| Критерий | Вес | Описание |
|---|---|---|
| Выбор темы | 1% | Формальное подтверждение выбора темы, формирования команды, распределения ролей и технической готовности. Оценка выставляется при условии своевременной подачи формы. |
📌 Этап 2: Представление проекта
Дата: 31.01.2026
Формат: Презентация
Документы: Слайды, ТЗ
🔹 Требования к защите
- Чётко сформулированы:
- Проблема: отсутствие синхронизации при записи нескольких потоков → сложности при монтаже, рассогласование видео и звука.
- Решение: мастер-сервис, управляющий записью нескольких экземпляров записывающего агента с синхронизацией по NTP/таймкоду и мультиплексированием аудио.
- Целевая аудитория.
- Описаны технологии и архитектура системы.
- Представлен план реализации.
- Подтверждено согласование подхода с заказчиком.
| Критерий | Вес | Описание |
|---|---|---|
| Продукт | 25% | Постановка цели, видение законченного продукта: как работает система, где применяется (студии, лекции, конференции) |
| Польза | 25% | Обоснование необходимости: точное сведение, сохранение качества, упрощение постпродакшена, отказ от дорогостоящих физических рекордеров |
| Пользователь | 20% | Описание целевой аудитории внутри и вне МИЭМ, количественная оценка, рынки применения (медиа, образование, ИТ) |
| Технологии | 20% | Обоснованный выбор стека: Go, Docker, GStreamer, NTP, Prometheus, веб-интерфейс, архитектура "мастер-воркер" |
| Развитие | 10% | Перспективы развития: интеграция с OBS, поддержка SRT, WebRTC, коммерциализация, ВКР, интеграция с системами монтажа (DaVinci Resolve) |
📌 Этап 3: PoC (Proof of Concept)
Дата: 21.02.2026
Формат: Демонстрация + видео + репозиторий
Документы: Git, видео
🔹 Требования к защите
- Экспериментально подтверждена техническая реализуемость:
- Запуск двух экземпляров записывающих агентов на разных машинах.
- Синхронизация времени между записывающими агентами по NTP.
- Запуск записи синхронно с точностью до 100 мс.
- Извлечение аудио из одного из потоков.
- Простейшее мультиплексирование: объединение видео и аудио в один файл.
- Демонстрация: запуск → запись → проверка синхронности.
- Базовая склейка видеопотоков при разрыве соединения в процессе записи.
- Видео (до 3 минут) с демонстрацией: запуск записи, проверка таймкода, извлечение аудио.
- Код выложен в репозиторий с README.
| Критерий | Вес | Описание |
|---|---|---|
| Техническая реализуемость | 60% | Подтверждение, что возможно синхронно управлять записью и мультиплексировать аудио |
| Демонстрация | 20% | Наличие видео, показывающего: запуск записи на нескольких ВМ, синхронность, извлечение аудио, результат |
| Код и документация | 20% | Наличие репозитория с рабочим кодом, README, инструкцией по запуску и описанием архитектуры PoC |
📌 Этап 4: Прототип
Дата: 16.03.2026
Формат: Демонстрация + отчет + репозиторий
Документы: Демо, отчет, git
🔹 Требования к защите
- Реализован прототип:
- Мастер-сервис с REST API.
- Интерфейс редактирования конфигурации: список камер (RTSP-URL), выбор аудиоисточника, длительность записи, синхронизация (NTP/ручной таймкод).
- Запуск и остановка записи на нескольких записывающих агентах.
- Синхронизация запуска с точностью до 50 мс.
- Автоматическое извлечение аудио из выбранного потока.
- Простейшее мультиплексирование: объединение каждого видео + выбранное аудио в один файл.
- Логирование состояний.
- Оптимизированная склейка видео без перекодирования.
- Демонстрация работы в реальном времени.
- Отчёт с описанием архитектуры, API, схемы взаимодействия.
| Критерий | Вес | Описание |
|---|---|---|
| Реализация функционала | 40% | Поддержка конфигурации, синхронного запуска, аудиовыбора, мультиплексирования |
| Интеграция | 25% | Успешная интеграция мастер-сервиса, воркеров, FFmpeg, NTP, API управления |
| Демонстрация | 20% | Работающий демо-стенд, показ синхронной записи и мультиплексирования |
| Документация | 15% | Наличие отчёта с описанием архитектуры, API, алгоритмов синхронизации, инструкций по запуску |
📌 Этап 5: MVP (Minimal Viable Product)
Дата: 11.04.2026
Формат: Работающий продукт + отзыв + отчет + git
Документы: Отзыв, отчет, git
🔹 Требования к защите
- Продукт может быть запущен и использован без участия разработчика.
- Поддержка всех базовых функций:
- Веб-интерфейс для создания и редактирования конфигураций.
- Выбор аудиоисточника из списка записываемых камер.
- Синхронизация по NTP (или ручной таймкод).
- Запуск/остановка записи по расписанию или вручную.
- Автоматическое мультиплексирование: видео (все) + аудио (один) → единый файл.
- Мониторинг через Prometheus (статус записи, ошибки, нагрузка).
- Алертинг при сбоях (через Alertmanager/Grafana).
- Автозапуск сервисов (Docker Compose/systemd).
- Автозапуск склейки после окончания записи.
- Наличие документации пользователя и разработчика.
- Получен отзыв пользователя.
| Критерий | Вес | Описание |
|---|---|---|
| Продукт | 30% | Готовность продукта: отчуждаемость, выполнение базовых функций, стабильность |
| Документация разработчика | 20% | Наличие спецификации MVP/MUP, описание архитектуры, API, алгоритмов, текущего результата |
| Запуск и работа | 30% | Продукт запускается без разработчика, не требует несвойственных действий от пользователя |
| Документация пользователя | 20% | Полная инструкция по установке, настройке, созданию конфигураций, запуску записи, устранению неисправностей |
📌 Этап 6: MUP (Minimal Usable Product)
Дата: 16.05.2026
Формат: Асинхронная защита + консультация
Документы: Отзыв, отчет, git
🔹 Требования к защите
- Продукт внедрён в тестовую среду (например, в лаборатории сетевых видеотехнологий).
- Пользователь самостоятельно использует весь функционал.
- Получен отзыв о реальном использовании.
- Документация дополнена на основе фидбэка.
- Созданы маркетинговые материалы.
| Критерий | Вес | Описание |
|---|---|---|
| Отзыв пользователя | 30% | Удобство интерфейса, точность синхронизации, стабильность, простота настройки, качество мультиплексирования |
| Функциональность | 30% | Полная реализация всех функций: конфигурация, синхронизация, аудиовыбор, запись, мультиплексирование, мониторинг |
| Документация пользователя | 20% | Наличие полной, понятной документации с установкой, навигацией, сценариями использования и устранением неисправностей |
| Маркетинг | 20% | Наличие лендинга, продуктового ролика, раздатки или презентации, адаптированных под целевую аудиторию |
📌 Этап 7: Защита проекта
Дата: 06.06.2026 или 13.06.2026
Формат: Презентация + демо + отзывы
Документы: Слайды, демо, отзывы
🔹 Требования к защите
- Презентация пользовательского опыта.
- Демонстрация работы продукта (включая сценарии: создание конфигурации, синхронная запись, сбой одной камеры, мультиплексирование).
- Представление отзывов пользователей.
- Подача заявки на РИД.
- Ответы на вопросы.
| Критерий | Вес | Описание |
|---|---|---|
| Представление | 20% | Маркетинговый стиль, ясность, логичность, отсутствие научного стиля, фокус на пользе и кейсах |
| Маркетинг | 20% | Качество лендинга, ролика, раздатки — соответствие продуктовому жанру, наличие кейсов применения |
| Впечатления пользователей | 30% | Удобство, точность, стабильность, простота установки и использования |
| Завершённость | 30% | Полная документация, функциональность, наличие дистрибутива (Docker-образы, скрипты развёртывания), ссылки на код, расширенный функционал (например, поддержка SRT, резервное копирование, интеграция с OBS, визуализация таймкода) |