写点什么

技术分享| WebRTC 之 SDP 详解

作者:anyRTC开发者
  • 2023-08-18
    上海
  • 本文字数:1066 字

    阅读完需:约 3 分钟

技术分享| WebRTC之SDP详解

一,什么是 SDP

WebRTC 是 Web Real-Time Communication,即网页实时通信的缩写,是 RTC 协议的一种 Web 实现,项目由 Google 开源,并和 IETF 和 W3C 制定了行业标准。


WebRTC 是点对点通讯,他的通话建立需要交换媒体信息才能建立,媒体信息的载体就是 SDP。SDP(Session Description Protocol) 是一种会话描述协议,基于文本,其本身并不属于传输协议,需要依赖其它的传输协议(比如 SIP, HTTP,自定义的信令等)来交换必要的媒体信息,用于两个会话实体之间的媒体协商,同时 SDP 也不是只为 WebRTC 使用,其他的传输比如 RTSP,SIP 通话也是通过 SDP 进行媒体协商。


SDP 是由多行文本组成的一个纯文本协议,如果将 SDP 从语义上分解成不同组件来描述一个多媒体会话信息,那么 SDP 由以下部分组成:


a,会话级别描述 b,网络描述 c,媒体级别描述 d,安全描述 e,DTLS 角色 f,ICE 策略 g,QoS,Grouping 传输描述



一个标准的 WebRTC 通话的建立,至少需要一次 Offer/Answer 交互,如下所示:



二,为什么 SDP 又分 PlanB 与 UnifiedPlan

WebRTC 的单个通道是可以传输多路音视频流的。而 PlanB 和 UnifiedPlan 其实就是 WebRTC 在多路媒体源(multi media source)场景下的不同的两种 SDP 协商方式。WebRTC 引入了 Stream 和 Track 的概念,一个流:Stream 可能包含音轨:AudioTrack 和 视轨:VideoTrack,当有多路 Stream 时,就会有更多的 Track,那么 UnifiedPlan 就是每一个 Track 唯一对应一个自己的 M 描述,而 Plan B 就是每一个 M line 描述了多个 Track(track id)。


我们来详细的介绍一下 PlanB 和 UnifiedPlan 的区分:


对于 PlanB 来说,由于只有一个 M(audio) 和 M(video),隶属于同一个 M line 的编码格式是相同的,当有多路媒体流(一路流就是一个 track)时,则根据 SSRC 去区分,意味着在 PlanB 中一个 Mline 中含有多个 SSRC 的流,这些媒体流共用同一个编码格式。对于 UnifiedPlan 来说,由于可以有多个 M(audio) 和 M(video),每路流(一路流就是一个 track)都有自己的 M Line,每个 M line 都能够指示自己的编码格式。


示例如下:


A,Plan-B:



B,UnifiedPlan:



从上面可以看出,UnifiedPlan 相对要更清晰,更精简一点。WebRTC 在 M79 版本之后正式的支持了 UnifiedPlan,这也让其成为了现在的主流 SDP 交互方式。

三,anyRTC 对 WebRTC 的支持

anyRTC 早在 WebRTC 的创建初期,就是其忠实的追随者,从 2015 年开始,一直保持着 WebRTC-Master 的代码更新,我们也经历了 WebRTC 的 api,设计的一次次变迁。


现在 anyRTC 公有云推流端支持 SimulCast 方式推送多码率的视频流;拉流端支持单通道多路流的方式。


同时 anyRTC 的著名开源项目anyRTC-RTMP-OpenSource也支持 WebRTC 的推拉流。



发布于: 刚刚阅读数: 4
用户头像

实时交互,万物互联! 2020-08-10 加入

实时交互,万物互联,全球实时互动云服务商领跑者!

评论

发布
暂无评论
技术分享| WebRTC之SDP详解_WebRTC_anyRTC开发者_InfoQ写作社区