Описание
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 |
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,...
Получение метрик потока
Доступные метрики
Метрика | Описание |
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 |