YYDS
发布于

Failed construct 'RTCPeerConnection' to plan b SDP semantics is a legacy version of the session

关于webRTC的SDP格式(RTCConfiguration中的sdp_semantics)

在web端,sdp_semantics有两个值,分别是“plan-b”和“unified-plan”,webRTC1.0规范要求的是“unified-plan”,Chrome71还是使用的“plan-b”,但是Chrome72就已经改成“unified-plan”,因此现在大多数浏览器都是使用的“unified-plan”,火狐更是推荐使用“unified-plan”,但是现在最新的QQ浏览器使用的还是Chrome70的内核。

因此我有考虑过根据Chrome内核版本分开设置sdp_semantics,但是据我测试发现,两端通讯若sdp_semantics格式不一致,就会报上面的错误,所以QQ与其他浏览器无法通讯。

这种情况,将sdp_semantics一键设置成“plan-b”可解决问题,火狐也可通讯,但是“plan-b”不是规范格式,只能根据项目需求做出取舍。

web端在RTCConfiguration中指定:

const configuration = {
    iceServers: [
      {
        ......
      },
    ],
    sdpSemantics:'plan-b'
  }

而PC端对应的SDP格式则是:“kDefault”和“kPlanB”,通过下面语句指定

SdpSemantics sdp_semantics = SdpSemantics :: kDefault;
SdpSemantics sdp_semantics = SdpSemantics :: kPlanB;

评论