PlanB与UnifiedPlan

做过 WebRTC 应用开发的读者应该都清楚,目前 WebRTC 中的 SDP 包括两种规格,即 PlanB 和 UnifiedPlan。PlanB 由标准 SDP 演化而来,而 UnifiedPlan 则是代替 PlanB 的 SDP 新规格。它们之间的关系如下:

标准SDP → PlanB → UnifiedPlan

那么 PlanB 与 UnifiedPlan 的主要区别是什么呢?它们之间最大的区别是,在 PlanB 规格中,只有两个媒体描述,即音频媒体描述(m=audio……)和视频媒体描述(m=video……)。如果要传输多路视频,则它们在视频媒体描述中需要通过 SSRC 来区分。而在 UnifiedPlan 中可以有多个媒体描述,因此,对于上面多路视频的情况,将其拆成多个视频媒体描述(多行“m=video……”)即可。举例如下。

假如有三路媒体流,即一路音频和两路视频,如果用 PlanB 规格的 SDP 描述,其形式大体如代码 7.6 所示。

代码7.6 PlanB规格的SDP描述
...
m=audio ...
a=ssrc:11223344 ...
...
m=video ...
...
a=ssrc:22334455 cname:video1
...
a=ssrc:33445566 cname:video2
...

从上面的代码中可以看到,在视频媒体描述中出现了两个 SSRC,它们的 cname 各不相同,代表两路不同的视频流。如果换作 UnifiedPlan 规格 SDP 描述的话,其形式则变成代码 7.7 所示效果。

...
m=audio ...
a=ssrc:11223344 ...
...
m=video ...
...
a=ssrc:22334455 cname:video1
...
m=video ...
...
a=ssrc:33445566 cname:video2
...

从代码 7.7 中可以看到,它将两路视频拆成了两个视频媒体描述,这样的描述更加清晰,一眼就可以看出它包含了两路视频。