Как найти текущий микрофон MediaStream и применить ограничения - WEBRTC - PullRequest
0 голосов
/ 29 марта 2020

Я хочу отредактировать сигнал микрофона, используемый конференцией BigBlueButton, и отключить автоматическое управление c усилением и подавление эха.

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

Кроме этого, возможно, есть возможность изменить собственные флаги браузеров для этих AG C или AE C со сценария или расширения JS? (а не из самого браузера)

Более подробно c подробно об этой проблеме: в дистрибутиве BBB я искал файлы js (sip.js и bbb_webrtc_bridge_sip.js), которые используют метод getUserMedia, и я отредактировал их, чтобы придать ему желаемые ограничения, но безрезультатно. Если кто-то знает об этой конкретной платформе c, я хотел бы попросить вас о помощи.

Примечание: На упомянутой странице есть аудиообъект, который подтверждает srcObject, который разрешает MediaStream, я могу получить к нему доступ и применить к нему ограниченные действия, но только в тесте эха. После прохождения этого теста и внутри самой конференции доступ к этому аудиообъекту не имеет никакого эффекта.

1 Ответ

0 голосов
/ 04 апреля 2020

Решение оказалось не доступ к MediaStream из нового сценария или расширения JS, но, как в специфике проблемы: из файлов BigBlueButton JS:

sip.js и * Упомянутые выше файлы 1004 * принадлежали клиенту fla sh, который теперь не используется, предпочтение отдается клиенту html5, поэтому файл, который нужно редактировать, был прав:

/usr/share/meteor/bundle/programs/web.browser/app/compatibility/sip.js

, поэтому я посмотрел для случаев ограничений или где создается медиапоток, и вставлены пользовательские ограничения и принудительно их в:

строка 11941->. mediaHint = Object.keys(mediaHint || {}).length ? mediaHint : this.mediaHint;

заменен на -> mediaHint = this.mediaHint для принудительного входа в следующее условие, которое создает новый поток с моими собственными ограничениями в:

строка 11956->

var constraints = mediaHint.constraints ||
(this.mediaHint && this.mediaHint.constraints) ||
{audio: true, video: true};

вставил мои собственные ограничения:

var constraints = {
                   audio: {
                          autoGainControl: false,
                          echoCancellation: false,
                          noiseSuppression: false,
                   },
                   video:false
};

Это работает, и теперь эти ограничения отключают AG C, AE C и NS.

...