0

リモート ストリームをアタッチして別のピアに送信したい場合は、次のようにリモート ストリームをアタッチします。

firstPeer.onaddstream = function(remoteSteam) {
  otherPeer.addStream(remoteStream);  /* attaching remote stream */
};

しかし、うまくいきません!(別のブラウザではこのストリームを受信できません。)

リモートストリームをアタッチする方法を誰が教えてくれますか? リモートストリームを別のピアに送信するには?

ありがとう!

4

1 に答える 1

0

少し前にテストしました。ただし、「リモートストリーム」を付けるとストリームは流れません。

オファー sdp を作成するときに chrome が多くの属性を欠いていることがわかりました。また、オファー sdp が「<strong>sendrecv」ではなく「<strong>recvonly」に設定されていました。

最近の chrome canary では、このように「リモートストリーム」を付けることができます。

var newStream = new webkitMediaStream(remoteStream);
peer2.addStream(newStream);

もしくはそうでないか:

var newStream = new webkitMediaStream([remoteStream.getAudioTracks(),remoteStream.getVideoTracks()]);
peer2.addStream(newStream);

古いクロムでは:

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」メソッドはランダムな値を返すことに注意してください。

テストするデモ

于 2013-03-06T05:38:03.227 に答える