Документация разработчика VideoGrace
Этот раздел описывает архитектуру, протоколы и расширяемые точки VideoGrace для разработчиков, интеграторов и технических партнеров.
Документация помогает понять, как устроены сервер, клиенты, media transport, WebSocket/WSS API и сервисные сценарии вроде записи, воспроизведения файлов и внешних ботов. Она рассчитана на инженеров, которые хотят интегрировать VideoGrace в свою инфраструктуру, написать собственного клиента или доработать существующие компоненты системы.
Что здесь можно найти
- С чего начать, если вы оцениваете продукт: руководство администратора и основной сайт VideoGrace.
- Архитектурную карту VideoGrace: сервер, клиенты, сервисы, control/media/storage каналы.
- Описание WebSocket/WSS API и JSON-команд управляющего протокола.
- Модель конференций, клиентов, устройств и media sessions.
- WebRTC primary media path, выбор RTC route и WSMedia fallback.
- Примеры сервисных клиентов на базе
FilePlayerиRecorder. - Описание текущего
web-clientmedia path и принципов подключения новых клиентов.
Границы документации
Это публичная техническая документация. В ней фиксируются протоколы, архитектурные решения и внешне полезные инварианты системы.
Главные идеи
- Управляющий протокол, файлы и медиа разделены на разные каналы:
CommandLoop, HTTPS storage, WebRTC primary media,WSMediafallback. - Устройство создаётся и удаляется через control-команды, а media transport только переносит RTP/RTCP.
- Основной ключ маршрутизации медиа —
ssrc. - Web client использует WebRTC как основной media path:
webrtc_routes_request,rtc_node_id,webrtc_offer,webrtc_answer,webrtc_ice_candidate. WSMediaостается fallback и использует один bidirectional WebSocket на access token/conference с multiplex/demultiplex потоков поssrc.- Для новых native/KMP клиентов целевой media contract — WebRTC; legacy UDP остается совместимым path для старых native-клиентов и сервисов.
flowchart LR
Client[Client / Bot / Service]
Control[CommandLoop JSON]
Storage[HTTPS storage]
Blob[BlobChannel legacy]
RTC[WebRTC primary]
Media[WSMedia fallback]
Server[VideoGrace Server]
Translator[Media Translator]
Client <-->|commands, auth, conferences, devices| Control
Client <-->|files, avatars, recordings| Storage
Client <-->|legacy blob frames| Blob
Client <-->|ICE/DTLS/SRTP| RTC
Client <-->|RTP/RTCP frames by SSRC| Media
Control --> Server
Storage --> Server
Blob --> Server
RTC --> 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.