0

我想编辑 BigBlueButton 会议使用的麦克风信号并禁用自动增益控制和回声消除。

但是,我没有关于会议页面中使用的 MediaStream 实例的信息。那么,第一个问题是是否可以在页面上找到这样的活动流?稍后对其应用约束。有这个问题说不可能找到活动流。但是时间已经过去,也许选择已经改变。另外,可能还有其他一些方法可以访问此流对象。

除此之外,也许有可能从 JS 脚本或扩展中更改这些 AGC 或 AEC 的浏览器自己的标志?(而不是来自浏览器本身)

在这个问题的更具体的细节中:在 BBB 发行版中,我查找了使用该方法的 js 文件 (sip.js和),并对其进行了编辑以提供所需的约束,但无济于事。如果有人知道这个特定平台,我想寻求您的帮助。bbb_webrtc_bridge_sip.jsgetUserMedia

注意:在提到的页面中,有一个音频对象证明了一个解析为 MediaStream 的 srcObject,我可以访问它并对其应用有限的操作,但仅限于回声测试。一旦通过此测试并进入实际会议,访问此音频对象将无效。

4

1 回答 1

2

解决方案原来不是从新的 JS 脚本或扩展访问 MediaStream,而是在问题的细节中:从 BigBlueButton JS 文件内部:

sip.js并且bbb_wertc_bridge_sip.js上面提到的文件属于 flash 客户端,现在已经不再使用,有利于 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
};

这有效,现在这些约束禁用 AGC、AEC 和 NS。

于 2020-04-04T20:45:07.780 回答