Оптимальные настройки для звука в микшере

Ras2607

Member
Здравствуйте!

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

По ресурсам сервера все в порядке - процессор не более 60% загружен, оперативки выделено 2gb через -Xmx, еще 2 свободны в системе
Интернет канал гигабитный у сервера, занято не более 70-80 мб\с

По каналу ведущих сказать сложно, но все предупреждены о том, что его надо максимально освободить на время трансляции

Пробовал разные варианты настроек из статей на форуме и документации, ни одни полностью проблему не исправляли.

Из наблюдений настройки
mixer_in_buffering_ms=50
audio_mixer_max_delay=100
наоборот усугубляют проблему и заиканий становится гораздо больше, возможно тут надо что-то изменить, но не понятно какие значения будут оптимальными
 

Ras2607

Member
Забыл добавить - если смотреть эту же трансляцию но не через микшер, а напрямую, то заиканий практически нет.

Ведущие в основном говорят по одному, иногда их модератор может объявить и тогда получается две дорожки, но проблемы есть даже на одной аудио дорожке в микшере
 

Max

Administrator
Staff member
Добрый день.
Пожалуйста, обновите WCS до сборки 5.2.930 или новее, в этой сборке был фикс по данной проблеме (тикет WCS-3135).
Также подъем битрейта аудио, рекомендованный в этой теме, поможет улучшить качество.
 

Ras2607

Member
Здраствуйте, используется сборка 5.2.931

Вот отрывок из проблемной записи

Тоже самое было и при просмотре микшера

В этот момент микшировался всего один поток с голосом: рабочий стол + микрофон

На записи видно по зеленой рамке, что звук все-время прерывается и проглатываются окончания фраз

На момент записи на сервере были следующие настройки, кроме стандартных для mcu микшера

mixer_in_buffering_ms=50
audio_mixer_max_delay=100
mixer_type=MULTI_THREADED_NATIVE
mixer_mcu_multithreaded_mix=true
mixer_audio_threads=3
mixer_mcu_multithreaded_delivery=true
opus.encoder.bitrate=128000

После отключения первых двух строчек
mixer_in_buffering_ms=50
audio_mixer_max_delay=100
стало лучше, но проблема полностью не ушла. Только выпадания стали реже - иногда может вообще не быть, а иногда начинаются.
При этом в самой трансляции ничего не меняется. Но симптом тот же - зеленая рамка начинает дрожать. При этом в чистой версии трансляции без микширования на слух проблем со звуком нет.

Так что повторю вопрос - как правильно настроить параметры, чтобы минимизировать такие затухания, грубо говоря чувствительность микшера повысить? Чтобы короткие паузы или снижение громкости при беглой речи не считались тишиной.
Но возможно я ошибаюсь и тут дело не в этом, а в какой-нибудь буферизации или еще в чем. Сложно разобраться не зная как это все работает на самом деле
 

Max

Administrator
Staff member
opus.encoder.bitrate=128000
Битрейт публикации звука на стороне клиента также нужно поднять, т.к. по умолчанию используется 20-30 кбит/с
Code:
constraints: {
  audio: {
     bitrate: 128000
  }
}
После отключения первых двух строчек
mixer_in_buffering_ms=50
audio_mixer_max_delay=100
стало лучше, но проблема полностью не ушла.
В таком случае, должно помочь увеличение буферизации входящего видео потока
Code:
mixer_in_buffering_ms=600
audio_mixer_max_delay=600
Так что повторю вопрос - как правильно настроить параметры, чтобы минимизировать такие затухания, грубо говоря чувствительность микшера повысить? Чтобы короткие паузы или снижение громкости при беглой речи не считались тишиной.
Есть настройка уровня тишины в децибелах, по умолчанию -50 Дб, можно ее покрутить
Code:
mixer_audio_silence_threshold=-50.0
но в данном случае проблема скорее в том, что в потоке есть и видео с достаточно большим разрешением.
 

Ras2607

Member
Установил в параметрах

mixer_in_buffering_ms=600
audio_mixer_max_delay=600
mixer_audio_silence_threshold=-70.0

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

Вроде бы немного возросла нагрузка на процессор (где-то 10-15% от ядра), но это вообще не критично

Что именно помогло пока что нет времени тестировать, но кому-то может на будущее поможет
 

Max

Administrator
Staff member
Что именно помогло пока что нет времени тестировать, но кому-то может на будущее поможет
Помогло увеличение буферизации, т.к. уровень тишины влияет только на вывод рамки (будет она дрожать или нет).
Видимо, канал у ведущего бывает не слишком хорош для трансляции экрана с голосом, и есть потери, просто на голосе это более заметно, т.к. экран дает в основном статичную картинку. Буфер это все сглаживает. Отметим, что, чем больше буферизация, тем больше может быть задержка, но 600 миллисекунд - это относительно немного.
Кодирование звука с высоким битрейтом также на слух делает звук чище.
 

Ras2607

Member
Вообще конечно немного не понятно, так как при просмотре того же самого потока напрямую без микшера проблем со звуком не было.
Если бы были проблемы с каналом, тогда и в потоке без микшера они наблюдались бы, разве нет?


В любом случае, проблемы сейчас нет, просто хочется понять на будущее для более тонкой настройки принцип действия параметров.

mixer_in_buffering_ms
добавляет буферизацию, а соответственно и задержку при воспроизведении, тут вроде бы все понятно, помогает при плохом соединении

mixer_audio_silence_threshold
с ваших слов на сам звук никак не влияет, только отображает зеленую рамку.
То есть если установить его например в +300дб то сам звук в микшере будет, но рамка не будет включатся, правильно?

audio_mixer_max_delay
А вот этот параметр на что влияет и как работает?
Что будет при малых значениях, а что при больших?
 

Max

Administrator
Staff member
Вообще конечно немного не понятно, так как при просмотре того же самого потока напрямую без микшера проблем со звуком не было.
Если бы были проблемы с каналом, тогда и в потоке без микшера они наблюдались бы, разве нет?
При проигрывании потока напрямую в браузере проблемы сглаживает jitter buffer на стороне браузера, поэтому они могут быть незаметны. В микшере же нужно крутить настройку буфера (по умолчанию 200 мс, чего может быть недостаточно)
mixer_in_buffering_ms
добавляет буферизацию, а соответственно и задержку при воспроизведении, тут вроде бы все понятно, помогает при плохом соединении
Да, причем это буферизация видео
mixer_audio_silence_threshold
с ваших слов на сам звук никак не влияет, только отображает зеленую рамку.
То есть если установить его например в +300дб то сам звук в микшере будет, но рамка не будет включатся, правильно?
Да, должно так работать
audio_mixer_max_delay
А вот этот параметр на что влияет и как работает?
Что будет при малых значениях, а что при больших?
Этот параметр определяет максимальное время, в течение которого могут отсутствовать аудио пакеты во входящем потоке (по умолчанию 300 мс). Если это время превышено, поток не микшируется. Так сделано, чтобы весь микшер не ждал одного потока вечно (как могло быть в старой реализации микшера, не realtime). Если нет данных от какого-то одного участника, он в выходном потоке микшера даст фриз видео и/или пропадание аудио, но потоки остальных участников продолжат играть.
 

Ras2607

Member
Спасибо большое, теперь стало понятней.

Уже не по теме, просто обратная связь от клиента:
Вот все у Вас отлично, кроме документации к параметрам сервера.

Какие-то из них объясняются в примерах, но приходится долго искать информацию, не факт что она будет актуальна, а большая часть параметров вообще не известно зачем существуют. А при этом они могут оказаться очень полезными.

Или может я не там смотрю?
 

Max

Administrator
Staff member
Какие-то из них объясняются в примерах, но приходится долго искать информацию, не факт что она будет актуальна, а большая часть параметров вообще не известно зачем существуют. А при этом они могут оказаться очень полезными.
Параметров настройки более 500, и в одной таблице физически нельзя исчерпывающе объяснить каждый из них. Поэтому в документации по каждому конкретному случаю, где может потребоваться изменение того или иного параметра, приводятся примеры.
На всех страницах доступна кнопка поиска
1619680464842.png

нажав на которую, можно указать параметр, и получить список страниц, где он упоминается, например
1619680567167.png

Документация поддерживается в актуальном состоянии
 

Ras2607

Member
Это да, все прекрасно понимаю. Это не как претензия, а как пожелание на будущее.
Потому что например по тому же audio_mixer_max_delay информации в документации никакой вообще нигде нет.
Сам параметр нашел здесь на форуме в советах другому пользователю. Только принцип действия был не понятен, поэтому стало изначально только хуже.
 

Max

Administrator
Staff member
Это да, все прекрасно понимаю. Это не как претензия, а как пожелание на будущее.
Потому что например по тому же audio_mixer_max_delay информации в документации никакой вообще нигде нет.
Документация поддерживается в том числе благодаря и Вашим отзывам. Добавили описание опции в соответствующий раздел.
Сам параметр нашел здесь на форуме в советах другому пользователю.
У того пользователя другой кейс: audio only микшер без видео, и были жалобы на задержки в микшере по сравнению с оригинальным потоком. Поэтому ему было предложено в качестве быстрого решения уменьшить это значение. Позднее мы внутренними тестами нашли баг, который вносил задержку в микшере именно в случае публикации только аудио, и исправили его.
 

Ras2607

Member
Отлично, еще раз благодарю за оперативные и развернутые ответы!
 
Top