Задвоение звука с микрофона в конференции

petczu

New Member
Добрый день,

1) Создали конференцию, 6 человек, все в наушниках с микрофоном, но звук в чате у некоторых участников двоится,
иногда как эхо, а иногда явно дублирование.

2) А также есть проблема другая, на mac book если быть в конференции без наушников, то микрофон компьютера хватает звук с динамиком и начинает транслировать всем участникам - получается зацикливание. Даже слышно как клавиши стучат. В discord есть активация по голосу, есть ли в вашем софте что-то подобное или может подскажите как можно устранить.

Используем
Mac
Windows 10
2 android устройства

Подскажите что можно сделать.
 
Last edited:

Max

Administrator
Staff member
Добрый день,

1) Попробуйте, пожалуйста, сузить сценарий: воспроизводится ли с меньшим количеством участников, с какими участниками; будет ли воспроизводиться без конференции - например, если один из этих участников только публикует, а другой только играет (например, с демо Two-way Streaming).

2) Активация по голосу - в коде примера Media Devices.
 

petczu

New Member
Добрый день,

1) Попробуйте, пожалуйста, сузить сценарий: воспроизводится ли с меньшим количеством участников, с какими участниками; будет ли воспроизводиться без конференции - например, если один из этих участников только публикует, а другой только играет (например, с демо Two-way Streaming).

2) Активация по голосу - в коде примера Media Devices.
добрый день,

если участники с windows машин - все хорошо
как только подключается mac book с safari, наблюдаем проблемы

участников в видео конференции 7
1 -android телефон
5 -windows/chrome
1-mac/safari

на сервере 2 ядра, вижу загрузку CPU в районе 100-120%
все участники с вебкамера

пробовали у всех выключать микрофоны и по очереди, но через какое-то время проблема возвращается

попробуем активацию по голосу
 

Max

Administrator
Staff member
Добрый день.
участников в видео конференции 7
1 -android телефон
5 -windows/chrome
1-mac/safari

на сервере 2 ядра, вижу загрузку CPU в районе 100-120%
Это известная проблема, мы уже работаем над ее исследованием в тикете WCS-2631. Проблема не проявляется при использовании рекомендованных версий JDK (8 или 12). Как установить JDK 12, описано тут.
 
Last edited:

Max

Administrator
Staff member
Добрый день.
С версией JDK 14 проблема с большой загрузкой CPU при подключении подписчика с iOS Safari также не воспроизводится, можно обновиться до нее.
 

Max

Administrator
Staff member
Добрый день.
Добрый день, какая настройка отвечает за активацию по голосу? По умолчанию ее нет, к примеру, слышно кликанье мышки.
В качестве примера, индикатор Talking меняет цвет с красного на зеленый, если аудио поток отличается от тишины. Код детектора речи вы можете посмотреть на GitHub. Вы можете использовать данный пример и функцию processor.isSpeech() как триггер, например
JavaScript:
    // Check speech every 500 ms
    intervalID = setInterval(function () {
        if (processor.isSpeech()) {
            $("#talking").css('background-color', 'green');
        } else {
            $("#talking").css('background-color', 'red');
        }
    }, 500);
 

agoodminute

New Member
В качестве примера, индикатор Talking меняет цвет с красного на зеленый, если аудио поток отличается от тишины.
Добрый день, индикатор светиться красным, но фон все равно слышно (клики мыши), если говорю - индикатор зеленый
 

Max

Administrator
Staff member
Добрый день.
Минимальный уровень, при котором детектор сработает, устанавливается в этой строке
JavaScript:
    processor.threshold = level || 0.10;
    processor.latency = latency || 750;
а ниже, в этой функции, текущий уровень аудио сравнивается по модулю с уровнем срабатывания
JavaScript:
function handleAudio(event) {
    var buf = event.inputBuffer.getChannelData(0);
    var bufLength = buf.length;
    var x;
    for (var i = 0; i < bufLength; i++) {
        x = buf[i];
        if (Math.abs(x) >= this.threshold) {
            this.clipping = true;
            this.lastClip = window.performance.now();
        }
    }
}
По умолчанию, уровень настроен на речь. Вы можете уменьшить уровень, чтобы реагировать также на клики мыши.
 

agoodminute

New Member
Не могу продублировать вызов detectSpeech() как в примере. Нужно реализовать его в конференции.
В примере
1588756099941.png

создается стрим, после чего, тригериться STREAM_STATUS.PLAYING. В конференции такого нет.

Вызывается сначала joinRoom, потом publishLocalMedia, событие STREAM_STATUS.PLAYING не тригериться. Пробовал добавить detectSpeech() в событие STREAM_STATUS.PUBLISHING, не работает.
1588756265070.png

1588756368766.png
 

Max

Administrator
Staff member
Добрый день.
В примере создается стрим, после чего, тригериться STREAM_STATUS.PLAYING. В конференции такого нет.
Посмотрите, пожалуйста, на эту строку в conference.js:
JavaScript:
function playParticipantsStream(participant) {
    if (participant.getStreams().length > 0) {
        $("[id$=Name]").each(function (index, value) {
            if ($(value).text() == participant.name()) {
                var p = value.id.replace('Name', '');
                var pDisplay = p + 'Display';
                participant.getStreams()[0].play(document.getElementById(pDisplay)).on(STREAM_STATUS.PLAYING, function (playingStream) {
                    document.getElementById(playingStream.id()).addEventListener('resize', function (event) {
                        resizeVideo(event.target);
                    });
                });
            }
        });
    }
}
Пробовал добавить detectSpeech() в событие STREAM_STATUS.PUBLISHING, не работает.
И не должно, процессинг звука в браузере работает только для входящих потоков.
 

agoodminute

New Member
Посмотрите, пожалуйста, на эту строку в conference.js:
Вставил вызов detectSpeech в playParticipantsStream, ничего не изменилось, пробовал менять диапазон processor.threshold от 0 до 100, тоже ничего. Постоянно слышно фон и кликанье мыши.
1588769566678.png
 

Max

Administrator
Staff member
Вставил вызов detectSpeech в playParticipantsStream, ничего не изменилось, пробовал менять диапазон processor.threshold от 0 до 100, тоже ничего. Постоянно слышно фон и кликанье мыши.
Вы добавили на html-страницу индикатор, как в примере Media Devices?
HTML:
                <div class="form-group">
                    <label class="col-sm-2 control-label">Talking</label>
                    <div class="col-sm-2 talking" id="talking"></div>
                </div>
стиль
CSS:
.talking {
    width: 30px;
    height: 30px;
    border-radius: 100%;
    border-color: black;
    border-style: solid;
    border-width: 1px;
    /*background-color: #008800;*/
    /*padding-left: 0px;*/
    margin-left: 5px;
}
а здесь в функции detectSpeech этот индикатор окрашивается
Code:
    intervalID = setInterval(function () {
        if (processor.isSpeech()) {
            $("#talking").css('background-color', 'green');
        } else {
            $("#talking").css('background-color', 'red');
        }
    }, 500);
В примере Media Devices из коробки с настройками по умолчанию индикатор меняет цвет при кликах мышью, если микрофон их слышит.
Проверьте Ваш микрофон в примере Media Devices.
Если в Вашем примере индикатор не срабатывает, предоставьте минимально модифицированный Вами код примера Conference для анализа: HTML+CSS+JS на support@flashphoner.com, указав в письме ссылку на данную тему.
 
Top