WebRTC:为什么 "CreateAnswer can't be called before SetRemoteDescription"?
WebRTC: Why "CreateAnswer can't be called before SetRemoteDescription"?
浏览器:Chrome
我正在尝试调试一个 webRTC 应用程序,该应用程序在四个方面中的三个方面都运行良好!我无法从接收方获取视频到呼叫方。我可以从呼叫者获得视频和音频到接收者,从接收者到呼叫者的音频。问题是接收器不触发视频 (sdpMid="video") ICE 候选。在拼命尝试解决这个问题时,我尝试在设置 pc.remoteDescription 之前使用 pc.CreateAnswer 并且它给出了标题中引用的错误。
我的问题是了解这背后的原因。答案 SDP 就是基于 getUserMedia settings/constraints 的 SDP。那么,为什么我们必须等待设置 remoteDescription。我认为 createAnswer 会开始触发 ICE 候选人的收集,这可以在不等待设置 remoteDescription 的情况下提前完成。事实并非如此。为什么?
提议和回答不是独立的,它们是本质上不对称交换的一部分。
答案是对特定报价的直接回应(因此得名 "answer")。因此,对等方在收到您用 setRemoteDescription
.
设置的报价之前无法回答
要约包含特定限制或信封(如 m 线),答案必须遵守 by/answer to/stay。另一种说法是,答案是报价的迭代。
例如,使用报价选项 offerToReceiveVideo: false
创建的报价只能用 recvonly
视频回答(意味着仅从报价者到应答者接收视频),永远不会 sendrecv
。
浏览器:Chrome
我正在尝试调试一个 webRTC 应用程序,该应用程序在四个方面中的三个方面都运行良好!我无法从接收方获取视频到呼叫方。我可以从呼叫者获得视频和音频到接收者,从接收者到呼叫者的音频。问题是接收器不触发视频 (sdpMid="video") ICE 候选。在拼命尝试解决这个问题时,我尝试在设置 pc.remoteDescription 之前使用 pc.CreateAnswer 并且它给出了标题中引用的错误。
我的问题是了解这背后的原因。答案 SDP 就是基于 getUserMedia settings/constraints 的 SDP。那么,为什么我们必须等待设置 remoteDescription。我认为 createAnswer 会开始触发 ICE 候选人的收集,这可以在不等待设置 remoteDescription 的情况下提前完成。事实并非如此。为什么?
提议和回答不是独立的,它们是本质上不对称交换的一部分。
答案是对特定报价的直接回应(因此得名 "answer")。因此,对等方在收到您用 setRemoteDescription
.
要约包含特定限制或信封(如 m 线),答案必须遵守 by/answer to/stay。另一种说法是,答案是报价的迭代。
例如,使用报价选项 offerToReceiveVideo: false
创建的报价只能用 recvonly
视频回答(意味着仅从报价者到应答者接收视频),永远不会 sendrecv
。