Skip to content

Карта системы

VideoGrace состоит из управляющей плоскости, media-плоскости и вспомогательных сервисов. Control-команды определяют состояние системы, media-плоскость переносит RTP/RTCP, а blob-плоскость переносит крупные бинарные данные.

flowchart TB
    subgraph Clients[Клиенты]
        Web[web-client Web]
        Native[Native Client]
        Bot[Bot / Agent]
        Recorder[Recorder]
    end

    subgraph Server[Server]
        Http[HttpServer / WebSocket accept]
        Processor[Processor]
        ClientsStore[ClientContainer]
        Conferences[ConferenceContainer]
        WSM[WSMServer]
        WebRTC[WebRTC Gateway]
        Blob[BlobManager]
        IM[IMManager]
    end

    subgraph Media[Media Core]
        Translator[Translator / RTP routing]
        Mixer[Video/Audio processing]
    end

    Web -->|CommandLoop JSON| Http
    Native -->|CommandLoop JSON| Http
    Bot -->|CommandLoop JSON| Http
    Recorder -->|CommandLoop JSON| Http

    Web -->|WebRTC SRTP primary / WSMedia fallback| Http
    Native -->|UDP primary / WSS fallback| Http
    Web -->|BlobChannel| Http

    Http --> Processor
    Processor --> ClientsStore
    Processor --> Conferences
    Processor --> Blob
    Processor --> IM
    Processor --> WSM
    Processor --> WebRTC
    WSM <-->|UDP RTP/RTCP by SSRC| Translator
    WebRTC <-->|plain RTP/RTCP bridge| Translator
    Translator --> Mixer

Слои ответственности

Слой Ответственность
CommandLoop Аутентификация, конференции, список участников, создание/удаление устройств, сообщения.
BlobChannel Файлы, изображения, voice blobs, speed-test payloads и другие крупные бинарные данные.
WSMedia RTP/RTCP media frames. Не владеет lifecycle устройств, только переносит кадры.
WSMServer Мост WSS media frames в UDP translator и обратно.
WebRTC Gateway Терминирует ICE/DTLS/SRTP для браузерных клиентов и связывает WebRTC tracks с device_id/SSRC/Translator.
Translator Внутренняя media-маршрутизация по портам/SSRC.

Важное разделение

device_connect не означает открытие нового transport-соединения. Он означает, что в конференции появился новый media endpoint. Transport может быть уже открыт и обслуживать несколько endpoints.