Тестирование пропускной способности канала публикации¶
Современные версии браузеров могут оценивать пропускную способность канала, вычисляя максимально доступный битрейт видео при публикации потока с определенным разрешением, битрейтом и частотой кадров. Значение максимального доступного битрейта 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 Мбит/с. В обоих случаях, максимально доступный битрейт значительно превышает текущий битрейт публикации. Это означает, что качество канала публикации хорошее и есть запас, даже если канал ухудшится.
Если же максимально доступный битрейт близок к текущему битрейту, то запаса нет, и при дальнейшем ухудшении канала (например, при появлении помех), у зрителей начнутся фризы и ухудшение качества картинки