Документация разработчика 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-clientmedia path и принципов подключения новых клиентов.
Границы документации
Это публичная техническая документация. В ней фиксируются протоколы, архитектурные решения и внешне полезные инварианты системы.
Главные идеи
- Управляющий протокол, бинарные данные и медиа разделены на разные каналы:
CommandLoop,BlobChannel,WSMedia. - Устройство создаётся и удаляется через control-команды, а media transport только переносит RTP/RTCP.
- Основной ключ маршрутизации медиа —
ssrc. - Web client использует один bidirectional
WSMediaWebSocket на access token/conference и multiplex/demultiplex всех потоков поssrc. - Native clients используют UDP как основной media path; WSS должен рассматриваться как fallback и постепенно приводиться к той же mux-модели.
- Серверный
WSMServerуже поддерживает несколькоssrcвнутри однойWSMediasession.
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.
Как читать
- Начать с карты системы и инвариантов.
- Затем прочитать
WebSocket/WSS APIиКонференция и устройства. - Для server-side задач читать
Подсистемы сервераиWSMServer. - Для интеграций читать
Как писать клиентов, затем примерыFilePlayerиRecorder. - Для browser media читать
web-client media pathиWSMedia mux/demux. - Для деталей протокола читать
Команды,Структуры данныхиСценарии.
Правило изменения media path
Новые media-типы, клиенты и боты должны добавлять потоки как новые ssrc внутри существующего media transport. Не нужно создавать отдельный media WebSocket на каждое устройство, если транспорт уже поддерживает multiplexing.