【问题标题】:How to attach remote stream and send it to another peer?如何附加远程流并将其发送到另一个对等点?
【发布时间】:2013-03-05 13:25:37
【问题描述】:

我想附加远程流并将其发送给另一个对等方,像这样附加远程流:

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

但它不起作用! (我无法在其他浏览器中接收此流。)

谁能告诉我如何附加远程流?如何将远程流发送到另一个对等点?

谢谢!

【问题讨论】:

  • 我也很好奇这个。 RTC 是否允许服务器侦听和记录两个对等方之间的流?

标签: html stream chat p2p webrtc


【解决方案1】:

我用while ago 对其进行了测试。但是,如果附加了“远程流”,则流不会流动。

我发现chrome在创建offer sdp时遗漏了很多属性,同时offer sdp被设置为“recvonly”而不是“sendrecv”。

在最新的 chrome canary 中,您可以像这样附加“远程流”。

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”方法返回随机值。

A demo to test.

【讨论】:

  • 非常感谢您的回复。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-02
  • 1970-01-01
  • 2013-03-11
  • 2014-06-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多