webRTC的SDP格式,RTCConfiguration中的sdp_semantics
当我尝试用QQ浏览器和其它浏览器通讯时,报错如下:
查询资料得知,在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;
https://www.pianshen.com/article/69381335613/