無意間我發現this blog post from Mozilla。有趣的部分從標題「靜音音頻和視頻流」開始。在這裏你會發現下面這行代碼:
mediaStream.getVideoTracks()[0].enabled = !(mediaStream.getVideoTracks()[0].enabled);
這基本上意味着你可以禁用視頻軌道。事實證明,同樣是可能的:
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相同的操作。但我將不得不通過進一步的測試來驗證這一點。
爲什麼不使用peerjs調用的元數據參數來識別其是音頻呼叫還是視頻呼叫。當然,您在撥打電話時必須設置此參數。 – thunderbird