Сетка для микширования

Artem

New Member
Добрый вечер!

Нам нужно иметь возможность изменять сетку микшера динамически и иметь несколько разных видов сеток например для разных размеров плеера или страницы на которой будет плеер, можете более подробно рассказать есть ли такая возможность и как этим управлять?

Например, у нас есть такой кейс — нам надо показывать в маленьком окошке только говорящего, при открытии на фуллскрин показывать сетку (по возможности на ней крупно отображать говорящего, а мельче всех остальных, как в примере сетки с шарингом экрана). При этом на мобильных телефонах нужна другая сетка, адаптированная под портретную ориентацию.
 

Max

Administrator
Staff member
Добрый день.
Микширование выполняется на стороне сервера. Вы можете реализовать собственный класс для размещения картинок потоков в микшере. Метод computeLayout этого класса принимает на вход список потоков в микшере, имена потоков можно использовать как маркер для определения того, каким именно образом размещать картинки.
Однако, задачу в Вашей постановке следует решать на стороне клиента, т.к. микшер не знает, где (на ПК или мобильном устройстве) будет проигрываться его выходной поток, в какой размере экрана и в какой ориентации: все эти параметры известны только на клиенте, который будет этот поток играть.
Если Вы хотите динамически менять раскладку картинок в зависимости от параметров клиента, Вам нужно принимать на клиенте картинки потоков по отдельности и раскладывать их на странице, как требуется. Это требует хорошего канала между клиентом и сервером.
Компромиссный вариант: реализовать собственный класс для размещения картинок в микшере с разными раскладками в зависимости от имен потоков, и создавать несколько микшеров (один поток можно добавить в несколько микшеров, если это микшеры реального времени mixer_realtime=true: один обычный, один для полноэкранного режима и один для портретной ориентации. Отметим, что это увеличит нагрузку на сервер, поскольку количество энкодеров видео и аудио возрастет втрое.
 

Artem

New Member
Еще такой вопрос. Планируете ли вы реализовать серверное определение говорящего, которое будет доступно на клиенте по средствам события, присылаемого сервером?
 

Max

Administrator
Staff member
Еще такой вопрос. Планируете ли вы реализовать серверное определение говорящего, которое будет доступно на клиенте по средствам события, присылаемого сервером?
Эта задача также должна решаться на клиенте. По сути, нужно в одном потоке доставить на сторону клиента несколько потоков, это называется Selective Forwarding Units (SFU). Мы работаем над внедрением такого функционала в тикете WCS-2393. Пока работы в этом направлении находятся в стадии пре-альфа.
 
Top