我想附加远程流并将其发送给另一个对等端,像这样附加远程流:
firstPeer.onaddstream = function(remoteSteam) {
otherPeer.addStream(remoteStream); /* attaching remote stream */
};
但它不起作用! (我无法在另一个浏览器中收到此流。)
谁能告诉我如何附加远程流?如何将远程流发送给另一个对等体?
谢谢!
答案 0 :(得分:0)
我测试了while ago。但是,如果附加了“远程流”,则流不会流动。
我发现chrome在创建offer sdp时错过了很多属性,同时提供sdp设置为“ recvonly ”而不是“ sendrecv ”。
在最新的镀铬金丝雀中,您可以像这样附加“远程流”。
var newStream = new webkitMediaStream(remoteStream);
peer2.addStream(newStream);
或者其他:
var newStream = new webkitMediaStream([remoteStream.getAudioTracks(),remoteStream.getVideoTracks()]);
peer2.addStream(newStream);
旧的Chrome:
var newStream = new webkitMediaStream(remoteStream.audioTracks, remoteStream.videoTracks);
peer2.addStream(newStream);
填写“offer sdp”中的遗漏属性;我使用了以下编码:
sdp = sdp.replace(/a\=msid-semantic: WMS/g, 'a=msid-semantic: WMS ' + getChars());
sdp = sdp.replace(/recvonly/g, 'sendrecv')
var chars00 = getChars();
var numbers = getNumbers();
sdp += 'a=ssrc:'+ numbers+' cname:+Sb9HXiiNN/nhpZ1\r\n';
sdp += 'a=ssrc:'+ numbers+' msid:' + chars00 + ' v0\r\n';
sdp += 'a=ssrc:'+ numbers+' mslabel:' + chars00 + '\r\n';
sdp += 'a=ssrc:'+ numbers+' label:' + chars00 + '\r\n';
var replace = 'a=rtpmap:126 telephone-event/8000\r\n';
var chars00 = getChars();
var numbers = getNumbers();
replace += 'a=ssrc:'+ numbers+' cname:iecJoX+jqjkT8Dky\r\n';
replace += 'a=ssrc:'+ numbers+' msid:' + chars00 + '\r\n';
replace += 'a=ssrc:'+ numbers+' mslabel:' + chars00 + '\r\n';
replace += 'a=ssrc:'+ numbers+' label:' + chars00;
sdp = sdp.replace(/a\=rtpmap:126 telephone-event\/8000/g, replace)
请记住,“getChars”和“getNumbers”方法会返回随机值。