Реализация Android WebRTC — очень низкий объем

Я реализовал возможность видеоконференции в своем приложении, используя следующий пример: https://github.com/androidthings/sample-videoRTC

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

Я попытался проверить, есть ли какой-либо параметр, определяющий громкость звука, но мне не удалось найти такие параметры, кроме AudioBitRate(=32) и AudioCodec=("OPUS").

Вот параметры, которые я использую для создания peerConnection:

    peerConnectionParameters =
            new PeerConnectionClient.PeerConnectionParameters(true,
                    false,
                    false,
                    videoWidth,
                    videoHeight,
                    0,
                    Integer.parseInt(getString(R.string.pref_maxvideobitratevalue_default)),
                    getString(R.string.pref_videocodec_default),
                    true,
                    false,
                    Integer.parseInt(getString(R.string.pref_startaudiobitratevalue_default)),
                    getString(R.string.pref_audiocodec_default),
                    false,
                    false,
                    false,
                    false,
                    false,
                    false,
                    false,
                    false,
                    null);

Кто-нибудь знает, как я могу улучшить громкость звука?

Я попытался заменить аудиокодек по умолчанию, но результат был таким же низким.


person Zion Cohen    schedule 19.05.2019    source источник


Ответы (1)


После многих проверок и исследований я нашел проблему. Я отвечаю здесь, если у кого-то еще будет такая же проблема.

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

    audioManager = (AudioManager) this.activity.getSystemService(Context.AUDIO_SERVICE);
    audioManager.setSpeakerphoneOn(true);
    audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);

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

вот полный код:

    toggleSpeakerHeadset.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (speakerOn) {
                setHeadsetOn();
            } else {
                setSpeakerOn();
            }
        }
    });

private void setSpeakerOn() {
    speakerOn = true;
    toggleSpeakerHeadset.setImageResource(R.drawable.headset);
    audioManager.setSpeakerphoneOn(true);
    audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
}

private void setHeadsetOn() {
    speakerOn = false;
    toggleSpeakerHeadset.setImageResource(R.drawable.speaker);
    audioManager.setSpeakerphoneOn(false);
    audioManager.setMode(AudioManager.MODE_IN_COMMUNICATION);
}
person Zion Cohen    schedule 22.05.2019
comment
У меня такая же проблема с моим приложением. Я хотел спросить, где я должен разместить этот код? - person Armaan Labib; 23.05.2019
comment
это должно быть размещено после запроса разрешения и до начала вызова - person PrincEVergil; 10.04.2020