Перейти к содержанию

Тестирование пропускной способности канала публикации

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

Если же максимально доступный битрейт близок к текущему битрейту, то запаса нет, и при дальнейшем ухудшении канала (например, при появлении помех), у зрителей начнутся фризы и ухудшение качества картинки