Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 3 Next »

Информация о потоках, опубликованных в данный момент на узле, в реальном времени может быть получена по протоколу STOMP поверх Websocket API.

Подключение к бэкенд-серверу по STOMP через Websocket

Для подключения к бэкенд-серверу для получения метрик в реальном времени необходимо:

1. Установить Secure Websocket соединение по адресу https://hostname:8090/ws, где hostname – имя бэкенд-сервера

2. Установить соединение по протоколу STOMP, отправив сообщение

CONNECT
accept-version:1.2
host:hostname

^@

3. Подписаться на событие /stream/nodeId/mediaId, отправив сообщение

SUBSCRIBE
id:sub-1
destination:/stream/15/010934f0-0766-11e9-a950-59983a9de3c8

^@

Здесь

15 - идентификатор узла на бэкенде

010934f0-0766-11e9-a950-59983a9de3c8 - идентификатор медиасессии, в которой опубликован или проигрывается поток

4. Подписаться на событие /alarm для получения тревог (см ниже)

SUBSCRIBE
id:sub-0
destination:/alarm

^@

После этого клиент начинает получать STOMP-сообщения вида

"MESSAGE\ndestination:/stream/15/010934f0-0766-11e9-a950-59983a9de3c8\ncontent-type:application/json;charset=UTF-8\nsubscription:sub-1\nmessage-id:oilwo0os-701\ncontent-length:1349\n\n[{\"VIDEO_SYNC\":3754637125197,\"VIDEO_CODEC\":120,\"VIDEO_NACK\":18,\"VIDEO_PLI\":0,\"VIDEO_RATE\":478104,\"VIDEO_WIDTH\":320,\"VIDEO_HEIGHT\":240,\"VIDEO_FPS\":30,\"timestamp\":1545648325506},{\"AUDIO_SYNC\":3754637125227,\"AUDIO_CODEC\":111,\"AUDIO_RATE\":32616,\"timestamp\":1545648325558,\"AUDIO_LOST\":21},{\"AUDIO_SYNC\":3754637125347,\"AUDIO_CODEC\":111,\"AUDIO_RATE\":32960,\"timestamp\":1545648325684,\"AUDIO_LOST\":21},{\"VIDEO_SYNC\":3754637125397,\"VIDEO_CODEC\":120,\"VIDEO_NACK\":18,\"VIDEO_PLI\":0,\"VIDEO_RATE\":504632,\"VIDEO_WIDTH\":320,\"VIDEO_HEIGHT\":240,\"VIDEO_FPS\":31,\"timestamp\":1545648325701},{\"AUDIO_SYNC\":3754637125467,\"AUDIO_CODEC\":111,\"AUDIO_RATE\":33048,\"timestamp\":1545648325805,\"AUDIO_LOST\":21},{\"VIDEO_SYNC\":3754637125597,\"VIDEO_CODEC\":120,\"VIDEO_NACK\":18,\"VIDEO_PLI\":0,\"VIDEO_RATE\":495624,\"VIDEO_WIDTH\":320,\"VIDEO_HEIGHT\":240,\"VIDEO_FPS\":30,\"timestamp\":1545648325911},{\"AUDIO_SYNC\":3754637125587,\"AUDIO_CODEC\":111,\"AUDIO_RATE\":33048,\"timestamp\":1545648325921,\"AUDIO_LOST\":21},{\"AUDIO_SYNC\":3754637125707,\"AUDIO_CODEC\":111,\"AUDIO_RATE\":32400,\"timestamp\":1545648326049,\"AUDIO_LOST\":21},{\"VIDEO_SYNC\":3754637125796,\"VIDEO_CODEC\":120,\"VIDEO_NACK\":18,\"VIDEO_PLI\":0,\"VIDEO_RATE\":480224,\"VIDEO_WIDTH\":320,\"VIDEO_HEIGHT\":240,\"VIDEO_FPS\":32,\"timestamp\":1545648326104},{\"AUDIO_SYNC\":3754637125827,\"AUDIO_CODEC\":111,\"AUDIO_RATE\":33048,\"timestamp\":1545648326159,\"AUDIO_LOST\":21}]\u0000"

или, при использовании библиотеки STOMP.js

{
    "command": "MESSAGE",
    "headers": {
        "content-length": "1282",
        "message-id": "oilwo0os-926",
        "subscription": "sub-1",
        "content-type": "application/json;charset=UTF-8",
        "destination": "/stream/15/010934f0-0766-11e9-a950-59983a9de3c8"
    },
    "body": [
        {
            "VIDEO_SYNC": 3754637299170,
            "VIDEO_CODEC": 120,
            "VIDEO_NACK": 20,
            "VIDEO_PLI": 0,
            "VIDEO_RATE": 617024,
            "VIDEO_WIDTH": 320,
            "VIDEO_HEIGHT": 240,
            "VIDEO_FPS": 24,
            "timestamp": 1545648499723
        },
        {
            "AUDIO_SYNC": 3754637299482,
            "AUDIO_CODEC": 111,
            "AUDIO_RATE": 30600,
            "timestamp": 1545648499799,
            "AUDIO_LOST": 23
        },
        ...
    ]
}

Сообщения содержат значения метрик, получаемые от узла, на котором опубликован данный поток.

Для того, чтобы перестать получать метрики потока в реальном времени, необходимо отписаться от данных потока, отправив сообщение

UNSUBSCRIBE
id:/stream/15/010934f0-0766-11e9-a950-59983a9de3c8

^@

Настройка подключения

Максимальное количество метрик в одном сообщении настраивается при помощи параметра в файле wcsoam.properties

stomp_max_metrics=10

Таймаут соединения настраивается при помощи параметра

stomp_max_timeout=1000

Влияние частоты сбора метрик на частоту получения сообщений

Различные наборы метрик могут собираться на бэкенд-сервере с разной частотой, задаваемой в профиле. Если значение метрики, например, VIDEO_HEIGHT, не изменяется в течение публикации потока, сообщения, содержащие эту метрику, будут приходить подписчику не реже заданной частоты сбора. Если значение метрики меняется (VIDEO_RATE), сообщения, содержащие эту метрику, могут приходить подписчику по факту изменения, но не реже заданной частоты сбора.

Например, если собирать данные потока по профилю, включающему одну статичную метрику VIDEO_WIDTH, с частотой 30

https://hostname:8090/api/profile/create
{
  "name": "profile1",
  "rate": "30",
  "metrics": ["1"],
  "rules": ["1"]
}

при максимальном количестве метрик в одном сообщении 1

stomp_max_metrics=1

сообщения будут приходить подписчику приблизительно 1 раз в секунду.

Если указать частоту 600

https://hostname:8090/api/profile/update
{
  "id": "2",
  "name": "profile1",
  "rate": "600",
  "metrics": ["1"],
  "rules": ["1"]
}

сообщения будут приходить подписчику приблизительно 1 раз в 20 секунд.

Если теперь расширить набор метрик до 4 статических VIDEO_WIDTH, VIDEO_HEIGHT, VIDEO_CODEC, AUDIO_CODEC

https://hostname:8090/api/profile/update
{
  "id": "2",
  "name": "profile1",
  "rate": "600",
  "metrics": ["1","2","8","12"],
  "rules": ["1"]
}

сообщения будут приходить подписчику приблизительно 1 раз в 5 секунд.

Если собирать данные по профилю, включающему две метрики VIDEO_RATE, AUDIO_RATE, с частотой 30

https://hostname:8090/api/profile/create
{
  "name": "profile2",
  "rate": "30",
  "metrics": ["3","10"],
  "rules": ["1"]
}

при максимальном количестве метрик в одном сообщении 1

stomp_max_metrics=1

для потока, опубликованного на WCS сервер по RTMP, сообщения будут приходить подписчику приблизительно 1-2 раза в секунду.


  • No labels