Перейти к содержанию

Мониторинг параметров потока при помощи REST API

Описание

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

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

Метрика Описание
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 Аудиокодек

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

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

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-запросы и ответы

/stream/find

Найти поток и отобразить информацию о нем

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

{
   "name":"stream1",
   "published":true,
   "display":["metrics"]
}
Response example
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Type: application/json

[
  {
    "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
    }
  }
]
Return codes
Code Reason
200 OK
404 Not found
500 Internal server error

Параметры

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

Описание

Пример

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

mediaSessionId

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

6af0baf1-f014-48d6-b285-c975951a402f

name Имя потока stream1
published Публикация или воспроизведение true
hasVideo Есть ли видео в потоке? true
hasAudio Есть ли аудио в потоке? true
status Статус потока PUBLISHING
sdp SDP потока
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,...

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

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-запросы и ответы

/stream/metrics

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

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

{
   "mediaSessionId" : "72b76eb8-3c01-47f3-b308-a0516d51249b"
}
POST /rest-api/stream/metrics HTTP/1.1
Host: localhost:8081
Content-Type: application/json

{
   "name" : "testStream"
}
Response example
HTTP/1.1 200 OK
Access-Control-Allow-Origin: *
Content-Type: application/json

{
    "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
}
Return codes
Code Reason
200 OK
404 Not found
500 Internal server error

Параметры

Имя параметра Описание Пример
mediaSessionId Идентификатор медиасессии 72b76eb8-3c01-47f3-b308-a0516d51249b
name Имя потока testStream