Современные версии браузеров могут оценивать пропускную способность канала, вычисляя максимально доступный битрейт видео при публикации потока с определенным разрешением, битрейтом и частотой кадров. Значение максимального доступного битрейта availableOutgoingBitrate
можно получить из WebRTC статистики в браузерах на основе Chromium и в Safari. Mozilla Firefox не выводит параметр оценки канала в статистику.
Параметр availableOutgoingBitrate
вместе со статистикой WebRTC можно получить при помощи метода Stream.getStat()
:
stream.getStats((stats) => { if (stats) { if (stats.outboundStream && stats.outboundStream.video) { let vBitrate = (stats.outboundStream.video.bytesSent - bytesSent) * 8; setBitrate(vBitrate); bytesSent = stats.outboundStream.video.bytesSent; } if (stats.otherStats && stats.otherStats.availableOutgoingBitrate !== undefined) { setAvailableBitrate(stats.otherStats.availableOutgoingBitrate); } } });
На скриншоте ниже для потока с камеры и потока скриншаринга отображаются текущий битрейт публикации и масимально доступный битрейт
Таким образом, видно, что поток с камеры (320x240, 30 fps) может быть опубликован с максимальным битрейтом 1.2 Мбит/с, а поток скриншаринга (1280x720, 5 fps) может быть опубликован с битрейтом до 4 Мбит/с. В обоих случаях, максимально доступный битрейт значительно превышает текущий битрейт публикации. Это означает, что качество канала публикации хорошее и есть запас, даже если канал ухудшится.
Если же максимально доступный битрейт близок к текущему битрейту, то запаса нет, и при дальнейшем ухудшении канала (например, при появлении помех), у зрителей начнутся фризы и ухудшение качества картинки.