如何查找当前麦克风媒体流并应用约束-WEBRTC

如何查找当前麦克风媒体流并应用约束-WEBRTC,webrtc,html5-audio,sip,mediastream,bigbluebutton,Webrtc,Html5 Audio,Sip,Mediastream,Bigbluebutton,我想编辑BigBlueButton会议使用的麦克风信号,并禁用自动增益控制和回声消除 但是,我没有关于会议页面中使用的MediaStream实例的信息。所以,第一个问题是是否有可能在页面上找到这样的活动流?以便以后对其应用约束。这说明不可能找到活动流。但时间已经过去,也许选择已经改变。另外,可能还有其他一些方法可以到达这个流对象 除此之外,是否有可能从JS脚本或扩展更改这些AGC或AEC的浏览器自身标志?(而不是从浏览器本身) 关于这个问题的更具体的细节:在BBB发行版中,我查找了使用getUs

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

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

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

关于这个问题的更具体的细节:在BBB发行版中,我查找了使用
getUserMedia
方法的js文件(
sip.js
BBB_webrtc_bridge_sip.js
),我对它们进行了编辑,以提供所需的约束,但没有结果。如果有人知道这个特定的平台,我想寻求你的帮助


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

解决方案没有从新的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

解决方案没有从新的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