鸟语天空
WebRTC SdpSemantics
post by:追风剑情 2024-2-6 10:59

  统一计划(Unified Plan)是用于在会话描述协议(SDP)中发送多个媒体源的 IETF 草案。谷歌在 2013 年于 Chrome 浏览器中实施了 Plan B。Plan B 实际上是 Unified Plan 的一个变种。谷歌后续又在Chrome浏览器中提供了对 Unified Plan 的支持。作为过渡方案,目前Chrome浏览器同时支持 Plan B 和 Unifed Plan,将来 Chrome 可能会取消对 Plan B 的支持。

  在 Plan B 中,SDP协议为同一类的媒体使用一个"m="字段。如果同一类媒体包括多个不同的媒体轨道,比如同时包含摄像头和屏幕共享的媒体轨道,则在"m="字段中列出多个"a=ssrc"信息,以示区分。

  而使用 Unified Plan 时,每个媒体轨道都分配单独的“m=”字段。如果使用多个媒体轨道,则会创建多个“m=”字段。

  由于处理多个媒体轨道的方式不同,如果使用同一媒体类型的多个媒体轨道,则 Unified Plan 和 Plan B 是不兼容的,对于同一媒体类型只有一个轨道的情况,则会保持兼容。

  如果 Unified Plan 客户端收到 Plan B 客户端生成的提案(offer),则 Unified Plan 客户端在调用 setRemoteDescription() 时报错。同样,如果 Plan B 客户端收到 Unified Plan 客户端生成的提案,则它只能在第一个媒体轨道触发 ontrack 事件,并丢弃其他相同类型的媒体轨道。

  Chrome M69 版本开始支持 Unified Plan,但是默认支持的仍然是 Plan B。Chrome 在 WebRTC 的媒体管理接口 RTCPeerConnection 中添加了一项新的枚举类型 SdpSemantics,用于在两种计划之间进行切换。

enum SdpSemantics("plan-b", "unified-plan");
partial dictionary RTCConfiguration { SdpSemantics sdpSemantics; }  

在创建对等连接时,使用如下命令启用 unified-plan。

let peer = new RTCPeerConnection({sdpSemantics : "unified-plan"});  

  Chrome 从 M72 版本开始改为默认支持 Unified Plan。在上述代码中,将 unified-plan 改为 plan-b 则可以切换回对 Plan B 的支持。

评论:
发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容