@startuml title Сценарий: запуск стрима, назначение канала и переход в streaming participant CENTRAL as "Централ (API5)" participant CTRL as "analytics-controller" database DB as "DB (analytics.channels)" participant PROXY as "analytics-video-proxy" participant VNODE as "Видеоноды" participant CLVS as "cloud-vs" == Синхронизация с централом == CTRL -> CENTRAL : GET /cameras (список камер на обработку)\nGET /cloud-analytics/settings CENTRAL --> CTRL : список камер, настройки == Назначение канала == CTRL -> DB : upsert channel{cameraId, state=stream_awaited,\nsettings, rev, ...} -> analytics.channels == PROXY подхватывает канал == PROXY -> DB : poll analytics.channels DB --> PROXY : channel{state=stream_awaited} PROXY -> DB : update channel.state=streaming,\nack={rev, ts} == Получение видео и проксирование == PROXY -> CENTRAL : API5 запрос параметров доступа к потоку CENTRAL --> PROXY : креденшелы/URL PROXY -> VNODE : запрос видеопотока (через выданные параметры) VNODE --> PROXY : FLV поток (формат видеонод) PROXY -> CLVS : проксирование FLV в cloud-vs (ingest) note right of CLVS cloud-vs получает поток в формате видеонод (FLV) и готов генерировать события end note @enduml