Рекомендации по использованию микшеров.

Ilya K.

Member
Здравствуйте.
Существует 3 реализации микшеров:
1. JAVA
2. NATIVE
3. MULTI_THREADED_NATIVE
также есть опции lossless video processor, realtime, настройки многопоточности и др.
Относительно MULTI_THREADED_NATIVE в принципе понятно, он рассчитан на большое количество потоков в микшере,
Есть описания по использованию lossless videoprocessor, realtime, многлпоточности и прочему
Не нашел информации по типу - JAVA.
В каких случаях целесообразно использовать?
В чем его принципиальное отличие, плюсы и минусы по срванению с NATIVE?
В каких случаях имеет смысл включать mixer_lossless_video_processor_enabled ?
Сложилось впечатление, что при использовании realtime, в сочетании с MULTI_THREADED_NATIVE (с выключенным mixer_lossless_video_processor_enabled) периодически возникают фризы, прерывание аудио. Да, это может быть проблемой с каналом публикующего, но при других вариациях настроек микширования такого нет, либо не воспроизводится. Не так критично небольшое прерывание видео, как аудио. Есть информация по тонкой настройке микшера реального времени, в одном из постов получил советы, но к желаемому результату не привело.
Какой микшер, с какими настройками лучше использовать для множества (от 10 и выше) микшеров на сервере, при условии, что количество потоков в одном не будет больше пяти? один поток в нём может иметь максимальное разрешение 1080p, остальные 360p.
Есть ли рекомендации по используемым машинам в AWS? Возможно, микширование лучше работает с типом c5n, чем с c5a.
Заранее спасибо.
 

Max

Administrator
Staff member
Добрый день.
Не нашел информации по типу - JAVA.
В каких случаях целесообразно использовать?
Данный тип реализации микшера устарел, его использование не рекомендуется.
Сложилось впечатление, что при использовании realtime, в сочетании с MULTI_THREADED_NATIVE (с выключенным mixer_lossless_video_processor_enabled) периодически возникают фризы, прерывание аудио. Да, это может быть проблемой с каналом публикующего, но при других вариациях настроек микширования такого нет, либо не воспроизводится.
Realtime микшер отличается тем, что при проблемах с входящим потоком не ждет его восстановления, а продолжает микширование, в то время как микшер с mixer_realtime=false или mixer_lossless_video_processor_enabled приостанавливает микширование до восстановления входящего потока. Т.е. c realtime Вы получаете фризы и прерывание аудио для отдельного участника, а без realtime Вы получите фриз всего микшера.
При проблемном канале участника рекомендуем:
- использовать TCP для публикации
Code:
session.createStream({
    name: streamName,
    display: localVideo,
    cacheLocalResources: true,
    receiveVideo: false,
    receiveAudio: false,
    transport: "TCP"
}).on(STREAM_STATUS.PUBLISHING, function (stream) {
...
}).publish();
- снижать разрешение и битрейт публикации
- не ограничивать минимальный битрейт публикации видео: использовать настройку по умолчанию на сервере
Code:
webrtc_cc_min_bitrate=30000
- увеличить буферизацию для входящих потоков микшера
Code:
mixer_in_buffering_ms=600
Что касается использования многопоточности в микшере mixer_type=MULTI_THREADED_NATIVE, это рекомендуется при большом количестве участников в MCU микшере, а также при необходимости оптимизации загрузки процессорных ядер. Подробнее по использованию данной настройки написано здесь. Отметим, что выставление числа потоков больше, чем число доступных процессорных ядер, не рекомендуется.
Какой микшер, с какими настройками лучше использовать для множества (от 10 и выше) микшеров на сервере, при условии, что количество потоков в одном не будет больше пяти? один поток в нём может иметь максимальное разрешение 1080p, остальные 360p.
Есть ли рекомендации по используемым машинам в AWS? Возможно, микширование лучше работает с типом c5n, чем с c5a.
Почитайте, пожалуйста, статью Сколько микшеров может быть на сервере?
Что касается конфигураций инстансов, сейчас мы рекомендуем инстансы m5.
 

Ilya K.

Member
Спасибо за информацию.
Что касается конфигураций инстансов, сейчас мы рекомендуем инстансы m5.
Имеете в виду всё семейство, включая m5a, m5n, m5zn?
Рекомендуется при больших нагрузках, или при малых тоже?

mixer_in_buffering_ms=600
В статье описано, что нужно либо увеличить буферизацию, либо не кодировать B-кадры (предпочтительно). Можно подробнее, каким образом можно исключить кодирование B-кадров?

В статье https://docs.flashphoner.com/pages/viewpage.action?pageId=42303910 описано размещение картинок микшера. Актуально для демо рабочего стола в том числе, либо относится только к видео?
 

Max

Administrator
Staff member
Имеете в виду всё семейство, включая m5a, m5n, m5zn?
Рекомендуется при больших нагрузках, или при малых тоже?
Сейчас при развертывании инстанса из образа, опубликованного на AWS Marketplace, по умолчанию предлагается m5.large
Выбор конкретного инстанса может быть произведен только для конкретного случая по результатам нагрузочных тестов.
В статье описано, что нужно либо увеличить буферизацию, либо не кодировать B-кадры (предпочтительно). Можно подробнее, каким образом можно исключить кодирование B-кадров?
Для публикации RTMP это можно задать явным образом в настройках кодировщика, например
1628470133949.png

Также помогает снизить профиль кодирования до Baseline
При публикации WebRTC из Chrome B-фреймы могут появляться в потоке, если включено аппаратное ускорение на некоторых видеоадаптерах. В этом случае должно помочь исключение профилей кодирования из SDP
Code:
webrtc_sdp_h264_exclude_profiles=4d,64
В статье https://docs.flashphoner.com/pages/viewpage.action?pageId=42303910 описано размещение картинок микшера. Актуально для демо рабочего стола в том числе, либо относится только к видео?
Desktop layout - это отдельный вариант, который включается по ключевому слову в потоке независимо от того, какой вариант использовался до этого.
Но при необходимости можно на языке разметки описать вариант размещения с похожим функционалом, при этом параметры отображения потока также необходимо задавать с учетом определенного ключевого слова в потоке, например
Code:
<?xml version="1.0" encoding="utf-8"?>
<body xsi:noNamespaceSchemaLocation="schema.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <div width="1024" height="600" padding-left="0" padding-right="0" padding-bottom="0" align="TOP_CENTER">
    <video crop="false">myDesktop.*</video>
  </div>
  <div height="120" padding-left="0" padding-right="0" padding-bottom="0" align="BOTTOM_CENTER">
    <video></video>
  </div>
</body>
 
Top