Video ABR playback using WebRTC statistics data¶
Начиная со сборки WCS 5.2.1663 и сборки SFU SDK 2.0.231 поддерживается автоматическое переключение между доступными качествами ABR при изменении состояния канала. Выбор качества основывается на следующих параметрах WebRTC статистики проигрывания
- nackCount
- freezeCount
- packetsLost
Если хотя бы один из этих параметров резко изменился более чем на 10 пунктов, канал считается непригодным для проигрывания текущего качества видео, и будет сделана попытка переключиться на более низкое качество.
Параметры переключения настраиваются при вызове функции initRemoteDisplay()
:
// Create remote display item to show remote streams
const displayOptions = {
quality:true,
autoAbr: true
};
const abrOptions = {
thresholds: [
{parameter: "nackCount", maxLeap: 10},
{parameter: "freezeCount", maxLeap: 10},
{parameter: "packetsLost", maxLeap: 10}
],
abrKeepOnGoodQuality: ABR_KEEP_ON_QUALITY,
abrTryForUpperQuality: ABR_TRY_UPPER_QUALITY,
interval: ABR_QUALITY_CHECK_PERIOD
};
const display = initRemoteDisplay(
state.room,
document.getElementById("remoteVideo"),
displayOptions, abrOptions,
createDefaultMeetingController,
createDefaultMeetingModel,
createDefaultMeetingView,
oneToOneParticipantFactory(remoteTrackProvider(state.room))
);
state.setDisplay(display);
// Start WebRTC negotiation
await state.room.join(state.pc, null, null, 1);
Здесь:
abrKeepOnGoodQuality
- интервал в миллисекундах, в течение которого будет проигрываться текущее качество видео без резких скачков параметров WebRTC статистикиabrTryForUpperQuality
- интервал в миллисекундах, по истечении которого будет предпринята попытка переключиться на более высокое доступное качество видео, если не было резких скачков параметров WebRTC статистикиinterval
- интервал сбора WebRTC статистики в миллисекундах
Если какое-то качество выбрано вручную, оно будет проигрываться даже при ухудшении параметров WebRTC статистики.