我偶然发现了 Mozilla 的这篇博文。有趣的部分从标题“静音音频和视频流”开始。在这里,您将找到以下代码行:
mediaStream.getVideoTracks()[0].enabled = !(mediaStream.getVideoTracks()[0].enabled);
这基本上意味着您可以禁用 Video-Track。事实证明,同样是可能的:
mediaStream.getAudioTracks()[0].enabled = false;
这将使音频流静音。如果这适用于 localStream 像这样:
Participant.prototype.startCall = function(){
var participant = this;
var target = participant.callees[0];
navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia;
navigator.getUserMedia({
audio: true,
video: true
},function(stream){
console.log("called");
//IMPORTANT LINE HERE
stream.getAudioTracks()[0].enabled = false;
participant.localStream = stream;
participant.call = participant.peer.call(target, stream);
},function(error){
console.log(error);
});
};
它似乎禁用了音频流。如您所见,我将 localStream 存储为我的对象的属性,然后可以使用以下方法激活音频流
myObj.localStream.getAudioTracks()[0].enabled = true;
据我判断,您不能在 remoteStream 上执行相同的操作。但我将不得不通过进一步的测试来验证这一点。