Архитектура Mediaserver
Mediaserver – это мощная платформа для обработки и управления медиаданными, которая состоит из нескольких ключевых модулей, каждый из которых отвечает за выполнение определенных функций. На данной странице документации мы рассмотрим архитектуру Mediaserver и особенности каждого из его модулей: Capture, Streaming и DVR, а также сервиса Web.
На странице:
Архитектурная схема

Архитектура Mediaserver
Модуль Capture
Модуль Capture отвечает за организацию и поддержание соединения с камерой (источником потока). Он выполняет следующие ключевые функции:
Предоставляет API для захвата потоков модулями (внутренними клиентами).
Захватывает потоки RTSP по протоколам TCP/UDP.
Обрабатывает RTP пакеты.
Для выполнения этих задач в Capture есть два типа обработчиков:
Streamer. При добавлении нового потока, создается отдельный обработчик Streamer. Он предоставляет интерфейс, который обрабатывает RTP пакеты потоков с камер и передает их для дальнейшего стриминга.
Recorder. Данный обработчик создается в том случаем, если включена запись потока. Он предоставляет интерфейс, который обрабатывает RTP пакеты потоков с камер и далее передает пакеты в архив DVR/Archive.
Модуль Streaming
Модуль Streaming выполняет следующие функции по управлению потоками видео в различных форматах и протоколах:
RTSP Live стриминг – передача видео в реальном времени с помощью протокола RTSP.
RTSP Archive/DVR стриминг – воспроизведение видео из архива с использованием RTSP.
HLS Live стриминг – передача видео в реальном времени с использованием протокола HLS.
HLS Archive/DVR стриминг – воспроизведение видео из архива с использованием HLS.
WebRTC Live стриминг – передача видео в реальном времени с использованием технологии WebRTC.
WebRTC Archive/DVR стриминг – воспроизведение видео из архива с использованием WebRTC.
Получение записи в отдельном архиве в формате fMP4.
Получение записи в отдельном архиве TAR – сохранение видео в архив в формате TAR, что позволяет упаковывать множество файлов в один архивный файл для удобного хранения и управления.
Для осуществления функциональности сервис Streaming взаимодействует со следующими обработчиками Live/DVR player:
HLS Live / RTSP Live / WebRTC Live – обрабатывают запросы на просмотр видео Live.
HLS DVR / RTSP DVR / WebRTC DVR – обрабатывают запросы на просмотр видео из архива Archive/DVR.
Сервис DVR player обеспечивает загрузку всех RTP пакетов, записанных в архив Archive/DVR, по указанному потоку (Stream UID) и временной отметке (Time stamp).
Модуль DVR
Модуль DVR в Mediaserver позволяет записывать видеопотоки и работать с видеоархивами. Эта функция, называемая DVR (Digital Video Recording), предоставляет гибкие возможности настройки записи, хранения и дальнейшего использования архива для каждого потока. Этот подход обеспечивает удобное и адаптивное управление видеоданными, подходящее для различных сценариев использования, условий эксплуатации системы, а также позволяет эффективно управлять пространством для хранения данных.
DVR обеспечивают следующие возможности.
Запись и хранение потока в зависимости от требований и условий:
По умолчанию записи DVR создаются фрагментами длительностью по 2 минуты. Однако, при заведении потока в Controller, доступна настройка длительности записи в соответствии с потребностями.
Система автоматически архивирует данные в локальное хранилище, расположенное в указанной директории, и хранит их в течение заданного периода. По истечении этого срока старые записи автоматически удаляются, обеспечивая непрерывное сохранение новых. Кроме того, предусмотрена возможность полного удаления архива по запросу клиента.
Архив возможно записывать как постоянно (видео записывается без остановки, обеспечивая полный непрерывный архив), так и для экономии ресурсов настроить частичную запись по следующим параметрам:
Запись по требованию – запись начинается и заканчивается по требованию клиента.
Запись по событию – запись начинается при наступлении определенного события, например, движении в кадре. Детально о логике записи архива по событию смотрите ниже в «Логика записи архива по событию».
Запись по расписанию – запись происходит в соответствии с установленным расписанием, что позволяет записывать видео в определенные промежутки времени.
Запись с прореживанием – запись потока осуществляется с различными вариантами прореживания:
Постоянно – записываются только ключевые кадры потока (IDR кадры).
По требованию – запись включается только по требованию клиента.
По активности сцены – если в кадре нет изменений, то записываются только IDR кадры. При наличии изменений в кадре – происходит событие и видеопоток записывается полностью.
Экспорт архива позволяет сохранить видео в различных форматах, каждый из которых обладает своими преимуществами:
MP4 – один из самых популярных видеоформатов, широко совместимый с различными устройствами и программным обеспечением. Это делает MP4 отличным выбором для удобного воспроизведения и обмена видеофайлами.
fMP4 – вариант формата MP4, поддерживающий адаптивное потоковое видео (adaptive streaming). Это позволяет видео автоматически подстраиваться под скорость интернет-соединения пользователя, обеспечивая наилучшее качество и минимальную задержку даже при изменениях в сети.
Snapshot (MP4) – снимок в формате MP4. Этот формат отлично подходит для быстрого доступа к ключевым моментам видео, позволяя легко находить и просматривать важные события.
Preview (MP4) – предпросмотр видеоматериала в формате MP4. Это дает возможность быстро оценить содержание видеофайла, не тратя время на просмотр всего видео.
Сырой архив – сохранение неотредактированного видеопотока для дальнейшей обработки и анализа. Этот формат позволяет сохранить максимально полную и точную информацию, что может быть полезно для профессионалов, занимающихся детальным анализом видео.
Передача и воспроизведение DVR-записей:
Использование RTSP, HLS и fMP4 для передачи и воспроизведения DVR-записей предоставляет пользователям удобный и эффективный способ удаленного доступа к видеозаписям. Эти протоколы и форматы обеспечивают высокое качество видео, адаптивность и совместимость с большинством современных устройств, включая компьютеры, смартфоны и планшеты.
Просмотр DVR-записи без захвата потока. Одной из важных функций DVR является возможность просмотра записанного видеопотока без необходимости его повторного захвата. Это особенно актуально для систем видеонаблюдения, где требуется оперативно получить доступ к архивным записям.
Логика записи архива по событию
Медиасервер обеспечивает функциональность записи видеоархива по событию, используя буферизированные данные и продолжающуюся запись потока. В этом документе описывается принцип работы буферизации видеопотока по времени в Mediaserver, а также связанный с ним процесс записи архива по событию.
Буферизация потока
Mediaserver реализует механизм буферизации видеопотока, полученного от камеры, на заданную глубину по времени. Этот буфер представляет собой временное хранилище для последовательности циклов. Цикл – это набор различных типов пакетов (таких как VPS/SPS/и другие), которые необходимы для воспроизведения определенного фрагмента видеопотока заданной длительности. Проще говоря, это небольшой, неделимый фрагмент видео, содержащий все необходимые данные для его воспроизведения (например, 3 секунды видео).
Принцип работы буфера
Получение нового цикла: при поступлении нового видеоцикла от камеры, он незамедлительно записывается в буфер.
Удаление старых данных: для поддержания заданной глубины буфера (то есть постоянного наличия видео за определенный временной интервал), наиболее давний цикл автоматически удаляется из буфера при поступлении новых. Это обеспечивает постоянное наличие в буфере актуальных видеоданных за определенный временной интервал.
Параметры конфигурации
Для каждого видеопотока Mediaserver хранит файл конфигурации (config-файл), содержащий параметры, относящиеся к записи архива по событию:
Глубина (X) потока: Определяет продолжительность видеопотока (в секундах), которую Mediaserver должен сохранять в буфере. Диапазон значений: от 5 до 120 секунд.
Таймаут (Y): Определяет продолжительность (в секундах), в течение которой Mediaserver продолжает запись видео в архив после получения сигнала о событии. Диапазон значений: от 5 до 120 секунд.
Процесс записи архива по событию
При получении сигнала о событии, Mediaserver выполняет проверку, ведётся ли запись архива для данного потока в настоящий момент. В зависимости от результата проверки:
Если запись не ведется:
Mediaserver изымает все видео из буфера (очищая буфер) и помещает его в самое начало нового архивного файла. После этого Mediaserver продолжает запись текущего видеопотока непосредственно в тот же архив.
Mediaserver создает отложенное событие на остановку записи архива по событию по истечении заданного таймаута (Y). Отсчет этого времени начинается с момента получения сигнала о событии.
Mediaserver создает отложенное событие на начало повторного наполнения буфера за Х секунд до окончания записи, чтобы буфер снова начал собирать данные для будущего события.
Если запись уже ведется:
Mediaserver продлевает время до окончания текущей записи архива на величину таймаута (Y).
Также продлевается время для начала наполнения буфера на Х секунд.
Сервис Web
Сервис Web предоставляет возможности управления потоками данных, обработки запросов и обеспечения отказоустойчивости системы следующим образом:
HTTP/HTTPS API для управления потоками (CRUD): добавление, удаление, авторизация, и создание токенов.
HTTP/HTTPS прокси API для перенаправления запросов на указанные адреса.
Cluster API – предназначен для работы с кластерами, что помогает обеспечивать отказоустойчивость системы.
Webhooks/Websockets – механизм уведомления Controller о различных событиях как, например, добавление потока, изменения статуса потоков и т.д. Детально смотрите в разделе документации «Конфигурирование Webhook и событий оповещения».