Начиная со сборки WCS 5.2.1663 и SFU SDK 2.0.231 поддерживается автоматическое переключение между доступными качествами ABR при изменении состояния канала. Выбор качества основывается на следующих параметрах WebRTC статистики проигрывания
- nackCount
- freezeCount
- packetsLost
Если хотя бы один из этих параметров резко изменился более чем на 10 пунктов, канал считается непригодным для проигрывания текущего качества видео, и будет сделана попытка переключиться на более низкое качество.
Параметры переключения настраиваются при вызове функции initRemoteDisplay() :
// Create remote display item to show remote streams
state.setDisplay(initRemoteDisplay({
div: document.getElementById("remoteVideo"),
room: state.room,
peerConnection: state.pc,
displayOptions: {
publisher: false,
quality: true,
type: false,
abr: true,
abrKeepOnGoodQuality: 20000,
abrTryForUpperQuality: 30000
}
}));
// Start WebRTC negotiation
await state.room.join(state.pc);
Здесь:
- abr - включает или отключает автоматическое переключение качества видео
- abrKeepOnGoodQuality - интервал в миллисекундах, в течение которого будет проигрываться текущее качество видео без резких скачков параметров WebRTC статистики
- abrTryForUpperQuality - интервал в миллисекундах, по истечении которого будет предпринята попытка переключиться на более высокое доступное качество видео, если не были резких скачков параметров WebRTC статистики
Если какое-то качество выбрано вручную, оно будет проигрываться даже при ухудшении параметров WebRTC статистики.