Нормализация звука

R2D2

Member
Добрый день.
В нашем случае приложения Anroid через вашу библиотеку передают: видео H264, VP8, аудио PCMA. Далее данные обрабатываются и публикуются. У всех пользователей настройки телефонов разные. Поэтому одних пользователей хорошо слышно, других не слышно вообще.
Можно ли нормализовать уровень звука? чтоб всех одинаково хорошо было слышно? Или хотя бы увеличить уровень звука...
 

Max

Administrator
Staff member
Попробуйте отключить все звуковые фильтры как показано в этом примере:
https://github.com/flashphoner/wcs-...sexample/phone_min/PhoneMinActivity.java#L512
Возможно на отдельных устройствах включается лишнее шумоподавление или эхоподавление, которое давит звук.
Code:
 MediaConstraints mediaConstraints = audioConstraints.getMediaConstraints();
                    mediaConstraints.optional.add(
                            new MediaConstraints.KeyValuePair("googEchoCancellation", Boolean.toString(googEchoCancellation.isChecked())));
                    mediaConstraints.optional.add(
                            new MediaConstraints.KeyValuePair("googAutoGainControl", Boolean.toString(googAutoGainControl.isChecked())));
                    mediaConstraints.optional.add(
                            new MediaConstraints.KeyValuePair("googNoiseSupression", Boolean.toString(googNoiseSupression.isChecked())));
                    mediaConstraints.optional.add(
                            new MediaConstraints.KeyValuePair("googHighpassFilter", Boolean.toString(googHighpassFilter.isChecked())));
                    mediaConstraints.optional.add(
                            new MediaConstraints.KeyValuePair("googEchoCancellation2", Boolean.toString(googEchoCancellation2.isChecked())));
                    mediaConstraints.optional.add(
                            new MediaConstraints.KeyValuePair("googAutoGainControl2", Boolean.toString(googAutoGainControl2.isChecked())));
                    mediaConstraints.optional.add(
                            new MediaConstraints.KeyValuePair("googNoiseSuppression2", Boolean.toString(googNoiseSuppression2.isChecked())));
 

R2D2

Member
В примере сделано для SIP соединения, для WebRTC:
StreamOptions streamOption = new StreamOptions();
AudioConstraints audioConstraints = streamOption.getConstraints().getAudioConstraints();
MediaConstraints mediaConstraints = audioConstraints.getMediaConstraints();
и т.д????
 

Max

Administrator
Staff member
Да, все верно.
Пример Phone используется для звонков, но там также используется WebRTC как и в случае стримов.
 

R2D2

Member
С настройкой фильтров разобрался. А есть ли такой ключ который задает степень усиления микрофона или аудиопотока?
 

Max

Administrator
Staff member
Проверим можно ли это сделать в Android SDK и если да, то как. По результатам отпишем.
 

Max

Administrator
Staff member
А есть ли такой ключ который задает степень усиления микрофона или аудиопотока?
Не получилось найти простого способа принудительно выставить уровень громкости микрофона в Android SDK.
Скорее всего для этого потребуется серьезная переработка внутренних библиотек.
 

R2D2

Member
Шумоподавление встроили в приложение:

streamOptionsConstraints = streamOptions.getConstraints();
audioConstraints = streamOptionsConstraints.getAudioConstraints();
videoConstraints = streamOptionsConstraints.getVideoConstraints();
audioConstraints.setBitrate(audioBitrate);
audioConstraints.setUseStereo(audioUseStereo);
//Выключаю все аудио фильтры
MediaConstraints mediaConstraints = audioConstraints.getMediaConstraints();
mediaConstraints.optional.add(new MediaConstraints.KeyValuePair("googAutoGainControl", "false"));//Автоматическая регулировка усиления
mediaConstraints.optional.add(new MediaConstraints.KeyValuePair("googAutoGainControl2", "false"));//Автоматическая регулировка усиления
mediaConstraints.optional.add(new MediaConstraints.KeyValuePair("googEchoCancellation", "false"));//Эхоподавление
mediaConstraints.optional.add(new MediaConstraints.KeyValuePair("googEchoCancellation2", "false"));//Эхоподавление
mediaConstraints.optional.add(new MediaConstraints.KeyValuePair("googNoiseSupression", "false"));//Шумоподавление
mediaConstraints.optional.add(new MediaConstraints.KeyValuePair("googNoiseSupression2", "false"));//Шумоподавление
mediaConstraints.optional.add(new MediaConstraints.KeyValuePair("googHighpassFilter", "false"));//Фильр высоких частот
mediaConstraints.optional.add(new MediaConstraints.KeyValuePair("googTypingNoiseDetection", "false"));//Обнаружение шума ввода
mediaConstraints.optional.add(new MediaConstraints.KeyValuePair("googAudioMirroring", "false"));
streamOptionsConstraints.setAudioConstraints(audioConstraints);
Но к сожалению шумопдавление не отключается на проблемных телефонах (например Mi8se)...звук с микрофона сначала громкий - через несколько секунд почти не слышно....
 
Last edited:

Max

Administrator
Staff member
Добрый день.
Мы запланируем обновление версии WebRTC в следующих сборках Android SDK, возможно, это поможет с шумоподавлением на проблемных телефонах.
 

Max

Administrator
Staff member
Добрый день.
Мы обновили библиотеку WebRTC в новой версии Android SDK 1.1, сборка 1.1.0.4. Документация по новой версии находится здесь.
Отметим, что приложения, собранные с Android SDK 1.1, будут работать только на Android 8 и выше.
 
Top