Skip to content

Документация разработчика VideoGrace

Этот раздел описывает архитектуру, протоколы и расширяемые точки VideoGrace для разработчиков, интеграторов и технических партнеров.

Документация помогает понять, как устроены сервер, клиенты, media transport, WebSocket/WSS API и сервисные сценарии вроде записи, воспроизведения файлов и внешних ботов. Она рассчитана на инженеров, которые хотят интегрировать VideoGrace в свою инфраструктуру, написать собственного клиента или доработать существующие компоненты системы.

Что здесь можно найти

  • С чего начать, если вы оцениваете продукт: руководство администратора и основной сайт VideoGrace.
  • Архитектурную карту VideoGrace: сервер, клиенты, сервисы, control/media/blob каналы.
  • Описание WebSocket/WSS API и JSON-команд управляющего протокола.
  • Модель конференций, клиентов, устройств и media sessions.
  • Бинарный WSMedia path для RTP/RTCP и multiplexing нескольких media streams.
  • Примеры сервисных клиентов на базе FilePlayer и Recorder.
  • Описание текущего web-client media path и принципов подключения новых клиентов.

Границы документации

Это публичная техническая документация. В ней фиксируются протоколы, архитектурные решения и внешне полезные инварианты системы.

Главные идеи

  • Управляющий протокол, бинарные данные и медиа разделены на разные каналы: CommandLoop, BlobChannel, WSMedia.
  • Устройство создаётся и удаляется через control-команды, а media transport только переносит RTP/RTCP.
  • Основной ключ маршрутизации медиа — ssrc.
  • Web client использует один bidirectional WSMedia WebSocket на access token/conference и multiplex/demultiplex всех потоков по ssrc.
  • Native clients используют UDP как основной media path; WSS должен рассматриваться как fallback и постепенно приводиться к той же mux-модели.
  • Серверный WSMServer уже поддерживает несколько ssrc внутри одной WSMedia session.
flowchart LR
    Client[Client / Bot / Service]
    Control[CommandLoop JSON]
    Blob[BlobChannel binary]
    Media[WSMedia binary mux]
    Server[VideoGrace Server]
    Translator[Media Translator]

    Client <-->|commands, auth, conferences, devices| Control
    Client <-->|files, speed-test, voice blobs| Blob
    Client <-->|RTP/RTCP frames by SSRC| Media

    Control --> Server
    Blob --> Server
    Media --> Server
    Server <-->|UDP RTP/RTCP| Translator

Где что находится

  • Server/Processor — бизнес-логика сервера, логин, конференции, устройства, WSMedia routing.
  • Server/Http — HTTP/WebSocket входы.
  • Engine/Proto — JSON-команды протокола.
  • Engine/Transport/WSM — заголовки бинарного WSM-протокола.
  • Engine/Controller — C++ SDK-level control client, на котором построены FilePlayer, Recorder, Consolidator.
  • web-client/src/core/VideograceClient.ts — интеграция React UI с core-протоколом.
  • web-client/src/web-client-core/media — web media capture/render/mux.

Как читать

  1. Начать с карты системы и инвариантов.
  2. Затем прочитать WebSocket/WSS API и Конференция и устройства.
  3. Для server-side задач читать Подсистемы сервера и WSMServer.
  4. Для интеграций читать Как писать клиентов, затем примеры FilePlayer и Recorder.
  5. Для browser media читать web-client media path и WSMedia mux/demux.
  6. Для деталей протокола читать Команды, Структуры данных и Сценарии.

Правило изменения media path

Новые media-типы, клиенты и боты должны добавлять потоки как новые ssrc внутри существующего media transport. Не нужно создавать отдельный media WebSocket на каждое устройство, если транспорт уже поддерживает multiplexing.