Webrtc:如何将流添加到连接的 RTCPeerConnection?

Webrtc : how to add streams to a connected RTCPeerConnection?

我正在使用纯 HTTP 轮询来建立连接。

PC1:打开 cam,创建并发送他的报价。

PC2:接受提议、创建答案、发送答案。

PC1 和 PC2 已连接,PC2 可以观看 PC1 的摄像头。

现在 PC2 打开他的摄像头:我显示本地网络摄像头并将视频和音频添加到连接的电脑 (RTCPeerConnection)

localStream = await navigator.mediaDevices.getUserMedia({video: true, audio: true});
myVideo.srcObject = localStream; // display local webcam
localStream.getTracks().forEach((track) => pc.addTrack(track, localStream)); // add audio and video to the connected pc

但是,PC1 无法观看 PC2 网络摄像头。我错过了什么:如何将流添加到已连接的 RTCPeerConnection?

由于添加流会更改 SDP,因此您需要重新协商,即调用 createOffer、setLocalDescription 和(在从远程端获得答案后)setRemoteDescription。这称为重新协商(您会注意到 negotiationneeded 事件触发)。

This sample 显示将 audio-only 调用升级为 audio-video 调用,但适用相同的原则。

请注意,在您的情况下,您正在更改发送报价的人,因此您可能 运行 遇到一个名为 'glare' 的问题,该问题在 this Mozilla blog post.

中有很好的解释