34 lines
1.5 KiB
Text
34 lines
1.5 KiB
Text
@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
|