Описание SQA¶
Подсистема Stream Quality Analyzer (SQA) предназначена для сбора статистических данных WebRTC при публикации и проигрывании медиа потоков на стороне клиента и для проверки метрик качества потока на основе собранных данных. Это дает возможность определить проблемы стриминга на стороне клиента, такие как плохой сетевой канала, производительность кодирования/декодирования видео в браузере и т.д..
Как это работает¶
Сбор метрик WebRTC стриминга¶
На стороне клиента собираются метрики WebRTC потока, публикуемого или играемого в браузере или при помощи WebRTC библиотеки на мобильном устройстве
Attention
Никаких персональных данных не собирается. Для проверки качества стриминга необходимо и достаточно только данных WebRTC статистики

Пачки собранных метрик отправляются через Websocket или HTTP/HTTPS соединение на точку приема метрик. WCS, используемый для стриминга, может сам принимать метрики. Например, в случае небольшого решения все-в-одном на одном физическом или виртуальном сервере данные могут передаваться так

В сложных распределенных сетях стриминга рекомендуется использовать отдельную HTTPS точку приема метрик

Затем полученные метрики записываются в базу данных Clickhouse.
Анализ метрик WebRTC стриминга¶
Метрики, собранные для определенного медиапотока, анализируются при помощи REST API запроса /rest-api/stream_metrics_analyzer
POST /rest-api/stream_metrics_analyzer HTTP/1.1
Host: localhost:8081
Content-Type: application/json
{
"mediaSessionId": "7324b000-a246-11f0-822a-dd36fbada6fa",
"from": "0",
"to": "0"
}
Здесь
mediaSessionId- идентификатор, ассоциированный с медиа потоком на WCS сервере. Его значение для потока может быть получено REST API запросом /rest-api/v3/stream/find во время публикации или проигрывания потока.fromиtoопределяют границы интервала времени, за который буду выбраны метрики для анализа,0означает отсутствие границ (с начала и до конца)
В ответ на запрос возвращается список возможных проблем при публикации или проигрывании указанного потока
{
"Video": {
"status": "PROBLEM",
"problems": [
{
"startTimestamp": "1759708392408.411",
"endTimestamp": "1759708392408.411",
"mediaSessionId": "7324b000-a246-11f0-822a-dd36fbada6fa",
"level": "WARN",
"message": "FPS deviates significantly from expected value: fps=0.00, avg=28.50, deviation=100.00%",
"metricName": "framesPerSecond"
},
{
"startTimestamp": "1759708392408.411",
"endTimestamp": "1759708392408.411",
"mediaSessionId": "7324b000-a246-11f0-822a-dd36fbada6fa",
"level": "ERROR",
"message": "Video resolution does not match expected parameters: (actual=0x0, expected=640x480, timestamp=1759708392408.411)",
"metricName": "frameWidth/frameHeight/frameWidth/frameHeight"
}
]
}
}
Существует также инструмент визуального анализа, отображающий графики метрик и подсвечивающий возможные проблемы на этих графиках
