Skip to end of metadata
Go to start of metadata

Описание

WCS поддерживает мониторинг параметров публикации и воспроизведения потока в реальном времени при помощи REST API

Получение общей информации о потоке

Запрос /stream/find позволяет найти поток по заданным условиям фильтрации и получить общую информацию о нем. В сборке 5.2.923 также могут быть запрошены метрики потока.

REST API

REST-запрос должен быть HTTP/HTTPS POST запросом в таком виде:

  • HTTP: http://streaming.flashphoner.com:8081/rest-api/stream/find
  • HTTPS: https://streaming.flashphoner.com:8444/rest-api/stream/find

Здесь:

  • streaming.flashphoner.com - адрес WCS-сервера
  • 8081 - стандартный REST / HTTP порт WCS-сервера
  • 8444 - стандартный HTTPS порт
  • rest-api - обязательная часть URL
  • /stream/find - используемый REST-метод

REST-методы и статусы ответа

REST-метод

Пример тела REST-запроса

Пример тела REST-ответа

Статусы ответа

/stream/find

{
   "name":"stream1",
   "published":true,
   "display":["metrics"]
}



[
  {
    "appKey": "flashStreamingApp",
    "sessionId": "/192.168.23.83:51309/192.168.130.39:1935",
    "mediaSessionId": "6af0baf1-f014-48d6-b285-c975951a402f",
    "name": "stream1",
    "published": true,
    "hasVideo": true,
    "hasAudio": true,
    "status": "PUBLISHING",
    "sdp": ...,
    "audioCodec": "mpeg4-generic/48000/2",
    "videoCodec": "H264",
    "record": false,
    "width": 640,
    "height": 360,
    "bitrate": 0,
    "minBitrate": 0,
    "maxBitrate": 0,
    "quality": 0,
    "history": false,
    "gop": 0,
    "fps": 0,
    "audioBitrate": 0,
    "codecImpl": "",
    "transport": "UDP",
    "cvoExtension": false,
    "createDate": 1616730493789,
    "mediaType": "publish",
    "mediaProvider": "Flash",
    "metrics": {
      "VIDEO_SYNC": 43688,
      "VIDEO_K_FRAMES": 22,
      "AUDIO_SYNC": 43712,
      "VIDEO_NACK": 0,
      "AUDIO_RATE": 129408,
      "AUDIO_LOST": 0,
      "VIDEO_LOST": 0,
      "VIDEO_CODEC": 119,
      "VIDEO_B_FRAMES": 0,
      "VIDEO_PLI": 0,
      "AUDIO_CODEC": 96,
      "VIDEO_RATE": 1187440,
      "VIDEO_WIDTH": 640,
      "VIDEO_GOP_SIZE": 48,
      "VIDEO_HEIGHT": 360,
      "VIDEO_FPS": 24,
      "VIDEO_P_FRAMES": 1027
    }
  }
]

200 - Данные получены

404 - Поток не найден

500 - Неверные параметры запроса

Параметры

Имя параметра

Описание

Пример

displayДополнительные параметры, которые должны быть отображены в ответе["metrics"]

mediaSessionId

Идентификатор медиасессии

6af0baf1-f014-48d6-b285-c975951a402f

nameИмя потокаstream1
publishedПубликация или воспроизведениеtrue
hasVideoЕсть ли видео в потоке?true
hasAudioЕсть ли аудио в потоке?true
statusСтатус потокаPUBLISHING
sdpSDP потока
audioCodecАудио кодекmpeg4-generic
videoCodecВидео кодекH264
recordВедется ли запись потокаfalse
widthШирина картинки, с которой опубликован поток640
heightВысота картинки, с которой опубликован поток360
transportИспользуемый транспорт WebRTC или MPEG-TS потокаUDP
cvoExtensionИспользуется ли WebRTC расширение для ориентации картинкиfalse
createDateДата создания потока1616730493789
mediaTypeТип потока: публикация или воспроизведениеpublish
mediaProviderСпособ публикации или проигрывания (Flash для RTMP)Flash
minBitrateПараметры транскодера, созданного по REST API
maxBitrate
quality
gop
fps
audioBitrate
codecImpl

Отображение параметров аудио кодека

В сборке 5.2.1619 добавлено отображение частоты дискретизации и количества каналов аудио дорожки:

{
    ...,
    "name": "stream1",
    ...,
    "audioCodec": "mpeg4-generic/48000/2",
    "videoCodec": "H264",
    ...
}

Если аудио в потоке нет, audioCodec не отображается.

Отображение статистики восстановления аудио пакетов

В сборке 5.2.2066 добавлено отображение статистики восстановления аудио пакетов по запросу

POST /rest-api/stream/find HTTP/1.1
Host: localhost:8081
Content-Type: application/json

{
   "name":"stream1",
   "published":true,
   "display":["red"]
}

Пример статистики для опубликованного потока

{
    ...,
    "name": "stream1",
    ...,
    "red": {
        "output": {
            "totalRedundantBytes": 0,
            "totalRedundantPackets": 0
        },
        "input": {
            "totalRedundantBytes": 862151,
            "usedRedundantBytes": 24115,
            "totalRedundantPackets": 24633,
            "usedRedundantPackets": 689
        }
    }
}

Здесь:

  • totalRedundantBytes - количество байтов избыточной информации для восстановления аудиоданных
  • usedRedundantBytes - количество использованных байтов избыточной информации
  • totalRedundantPackets - количество пакетов избыточной информации для восстановления аудиоданных
  • usedRedundantPackets - количество использованных пакетов избыточной информации

Статистика будет ненулевой только в том случае, если включена поддержка избыточности для восстановления потерянного аудио (RED)

codecs=red,opus,...

Получение метрик потока

Доступные метрики

Метрика

Описание

VIDEO_HEIGHT

Высота видео, пикс

VIDEO_WIDTH

Ширина видео, пикс

VIDEO_RATE

Битрейт видео, бит/с

VIDEO_SYNC

Синхронизация видео

VIDEO_FPS

Частота кадров видео

VIDEO_NACK

Количество NACK-запросов

VIDEO_PLI

Количество PLI-пакетов

VIDEO_CODEC

Видеокодек

VIDEO_K_FRAMESКоличество ключевых кадров (I-frames) видео
VIDEO_P_FRAMESКоличество P-кадров видео
VIDEO_B_FRAMESКоличество B-кадров видео
VIDEO_GOP_SIZEКоличество кадров в последней группе между ключевыми кадрами
VIDEO_LOSTКоличество потерянных пакетов видео

AUDIO_SYNC

Синхронизация аудио

AUDIO_RATE

Битрейт аудио, бит/с

AUDIO_LOST

Количество потерянных пакетов аудио

AUDIO_CODEC

Аудиокодек

REST API

REST-запрос должен быть HTTP/HTTPS POST запросом в таком виде:

  • HTTP: http://streaming.flashphoner.com:8081/rest-api/stream/metrics
  • HTTPS: https://streaming.flashphoner.com:8444/rest-api/stream/metrics

Здесь:

  • streaming.flashphoner.com - адрес WCS-сервера
  • 8081 - стандартный REST / HTTP порт WCS-сервера
  • 8444 - стандартный HTTPS порт
  • rest-api - обязательная часть URL
  • /stream/metrics - используемый REST-метод

REST-методы и статусы ответа

REST-метод

Пример тела REST-запроса

Пример тела REST-ответа

Статусы ответа

/stream/metrics

{
   "mediaSessionId" : "72b76eb8-3c01-47f3-b308-a0516d51249b"
}

или

{
   "name" : "testStream"
}
{
    "VIDEO_B_FRAMES": 0,
    "VIDEO_WIDTH": 1920,
    "VIDEO_SYNC": 1583463093448,
    "AUDIO_RATE": 31832,
    "VIDEO_PLI": 0,
    "VIDEO_HEIGHT": 1080,
    "AUDIO_SYNC": 1583463093415,
    "VIDEO_FPS": 36,
    "AUDIO_CODEC": 111,
    "VIDEO_P_FRAMES": 3989,
    "VIDEO_RATE": 684352,
    "VIDEO_CODEC": 119,
    "VIDEO_K_FRAMES": 173,
    "VIDEO_NACK": 1,
    "VIDEO_LOST": 1,
    "AUDIO_LOST": 130
}

200 - Метрики потока получены

404 - Поток не найден

Параметры

Имя параметра

Описание

Пример

mediaSessionId

Идентификатор медиасессии

72b76eb8-3c01-47f3-b308-a0516d51249b

nameИмя потокаtestStream