这个项目中有很多代码。目前,我没有收到将远程流添加到RTCPeerConnection
的回调。而不是在此时提供代码示例,而是仅验证自己是否正在使用有效的方法来建立连接。
getUserMedia()
,并在成功回调期间创建RTCPeerConnection
和createOffer()
。在回调过程中,localDescription设置开始了查找ICE候选对象的过程。 createAnswer()
。 在这一点上,我的期望是WebRTC堆栈将启动基础 session 初始化,并且两个对等方都将获得addstream回调以连接视频。这是一个好方法吗?工作流是否必须以不同的顺序发生?
WebRTC内部日志(感谢@Philipp Hancke)显示以下内容。即使我的代码在
createAnswer
之后调用setRemoteDescription()
4/12/2015, 6:35:26 PM setRemoteDescription
4/12/2015, 6:35:26 PM createAnswer
4/12/2015, 6:35:26 PM setRemoteDescriptionOnFailure
4/12/2015, 6:35:26 PM createAnswerOnFailure
CreateAnswer can't be called before SetRemoteDescription.
rtcPeer.conn.setRemoteDescription(new RTCSessionDescription(remotePeers[msgObj.peer].sdp));
rtcPeer.conn.createAnswer(createOfferSuccess);
最佳答案
不使用细流冰将对 call 建立时间产生非常负面的影响,但这可能是一个问题。您可能要在步骤5中访问peerconnections .localDescription,以便发送包含所有候选者的报价。
请注意,您无法在步骤8中与多个同伴共享报价。但这听起来并不像您打算这样做。实际上,您想在步骤8中调用createAnswer,然后在步骤9中将其发送给客户端(以及任何候选冰)。在步骤10中,您在调用方调用setRemoteDescription。
这听起来与您所描述的内容略有不同,后者可能解释了为什么您没有远程流。确保在chrome:// webrtc-internals中检查createOffer,setLocalDescription,setRemoteDescription的顺序与在apprtc.appspot.com上看到的顺序相同-调用方不必调用createAnswer。