Фризит видео на телефонах

Добрый день! Есть проблема с отображение видео в конференция на мобильных девайсах.
Это касаеться старых телефонов таких как Samsung S5, S6, IPhone 7.
Тормозит как видео от других пользователей так и то которое паблишим с телефона, на девайсах у других частников.

Вопрос:
1) Можно ли настроить качество отображаемых видео только для других участников конференции при старте?
В room API в метод play() можно предавать только dom елемент куда рендерить видео, хотя сам метод который вызываеться под капотом

Code:
        function play(streamName) {
            return function(display){
                var stream = session.createStream({name: streamName, display: display, custom: {name: name_}});
                stream.play();
                return stream;
            }
        }
createStream принимает constraints для видео.


2) Возможно у вас етсть гдето сводная таблица с требованиями к девайсам для видео конференций.
Например если 4 участника то 1 Гиг оперативки и проц такойто.
 

Max

Administrator
Staff member
Добрый день.
Тормозит как видео от других пользователей так и то которое паблишим с телефона, на девайсах у других частников.
Проблема не только в производительности телефона, но и в пропускной способности канала участника. Если, например, в конференции 4 участника, и для организации конференции используется RoomApi, то фактически браузер каждого участника получает и играет 3 потока, и один поток публикует.
Упомянутые телефоны, кстати, вполне в состоянии рендерить в браузере 4 потока, так что проблема скорее всего в канале. В этом случае мы обычно рекомендуем снижать разрешение и максимальный битрейт публикации:
Code:
    room.publish({
        display: display,
        constraints: {
             audio: true,
             video: {
                   width: 320,
                   height: 240,
                   maxBitrate: 200
             }
        },
        record: false,
        receiveVideo: false,
        receiveAudio: false
        ...
    });
1) Можно ли настроить качество отображаемых видео только для других участников конференции при старте?
В room API в метод play() можно предавать только dom елемент куда рендерить видео, хотя сам метод который вызываеться под капотом
Разрешение и битрейт проигрывания можно настроить, если для проигрывания потоков использовать не функцию play() RoomApi, а Session.createStream() и Stream.play(), как для обычных потоков. Но в этом случае на сервере включится транскодинг, который потребует значительных ресурсов (1 ядро CPU на кодирование двух потоков 720p в среднем).
Есть другой вариант: использовать для конференций MCU микшер. В этом случае на сервере также будет работать транскодинг, но кодироваться будет только один поток на комнату. Каждый участник один поток публикует и один поток получает. Пример реализации приведен в статье, описание примера клиентского приложения здесь, код клиентской части на GitHub.
При использовании микшера, RoomApi можно использовать для регистрации участников и текстового чата.
 
Top