从 0 打造音视频直播系统
李超
前新东方音视频直播技术专家,前沪江音视频架构师
32579 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 41 讲
WebRTC 1对1通话 (23讲)
从 0 打造音视频直播系统
15
15
1.0x
00:00/00:00
登录|注册

07 | 你竟然不知道SDP?它可是WebRTC的驱动核心!

fmtp
rtpmap
zero or more media attribute lines
media name and transport address
time the session is active
Session Name
owner/creator and session identifier
protocol version
媒体描述
会话描述
媒体级描述
会话级描述
SDP的细分描述
SDP的组成
Qos Grouping Descriptions
Security Descriptions
Stream Description
Network Description
Session Metadata
SDP的结构
SDP的格式
信令交互的重要信息
交换SDP的目的
1对1 WebRTC处理过程图
描述音视频编解码器、传输协议等信息
用文本描述各端的能力
Session Description Protocol
思考时间
小结
WebRTC 中的 SDP
标准 SDP 规范
交换SDP信息
SDP 是什么
参考文章

该思维导图由 AI 生成,仅供参考

在前面《01 | 原来通过浏览器访问摄像头这么容易》《04 | 可以把采集到的音视频数据录制下来吗?》等文章中,我向你讲解了 WebRTC 如何采集音视频数据,以及如何将它们录制成文件等相关内容。但那些知识不过是个“开胃菜”,WebRTC 真正核心的知识将从本文开始陆续向你展开。不过从本文开始,知识的难度会越来越高,你一定要做好心理准备。
说到 WebRTC 运转的核心,不同的人可能有不同的理解:有的人认为 WebRTC 的核心是音视频引擎,有的人认为是网络传输,而我则认为 WebRTC 之所以能很好地运转起来,完全是由 SDP 驱动的,因此 SDP 才是 WebRTC 的核心
掌握了这个核心,你就知道 WebRTC 都支持哪些编解码器、每次通话时都有哪些媒体(通话时有几路音频 / 视频)以及底层网络使用的是什么协议,也就是说你就相当于拿到了打开 WebRTC 大门的一把钥匙。
由此可见,SDP 在 WebRTC 中是何等重要。下面就让我们正式进入正题吧!

SDP 是什么

在正式讲解 SDP 之前,你首先要弄清楚 SDP 是什么?SDP(Session Description Protocal)说直白点就是用文本描述的各端(PC 端、Mac 端、Android 端、iOS 端等)的能力。这里的能力指的是各端所支持的音频编解码器是什么,这些编解码器设定的参数是什么,使用的传输协议是什么,以及包括的音视频媒体是什么等等。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

WebRTC中的SDP(Session Description Protocol)是描述音视频能力和协商传输协议的核心驱动。SDP包括会话级描述和媒体级描述,其中会话描述包括版本号、会话发起者信息和会话时间,而媒体描述包括媒体类型、端口、传输协议和媒体格式等信息。通过SDP交换,双方可以协商出最终使用的音视频参数和传输协议。文章通过SDP片段和交换SDP信息的图示,生动地展示了SDP的重要性和应用场景。对于想要深入了解WebRTC的读者来说,本文提供了SDP的基本知识和规范,为后续学习打下了坚实的基础。通过具体的SDP片段例子,读者可以清晰地了解SDP在会话和媒体信息中的应用,以及对音视频流的进一步描述。文章还详细介绍了WebRTC对SDP规范的调整,以及SDP中的会话元数据、网络描述、流描述、安全描述和服务质量描述等内容。通过实际例子,读者可以深入了解SDP的结构和应用。整体而言,本文为读者提供了一份简洁而全面的技术概览,为他们快速了解SDP在WebRTC中的重要性和应用提供了有力支持。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《从 0 打造音视频直播系统》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(21)

  • 最新
  • 精选
  • 诸葛亮了
    浏览器和ios app之间用webrtc建立视频直播,ios app退出到后台,再次进入时浏览器的直播会卡住是什么原因呢?

    作者回复: 因为你的网络连接断了,切回来之后要重新来一遍。你想你都切到后台了,如果应用程序还在跑着流量,而且流量要花钱你乐意吗?

    2019-07-31
    2
    7
  • _(:з」∠)_
    果然饭要一口一口吃 以前找的案例都是能跑通 但是想改点什么 不知道原理真没法下手_(:з」∠)_

    作者回复: 是的

    2021-03-20
    3
  • qiezitx
    这节课开始加深了,找了一段资料,不知道对不对。 课后题: In SDP [1] there exists a bandwidth attribute, which has a modifier used to specify what type of bit-rate the value refers to. The attribute has the following form: b=<modifier>:<value> Today there are four defined modifiers used for different purposes.

    作者回复: 没错!

    2019-12-12
    3
  • 艺超(鲁鸣)
    老师好,请问一下,一直不是很明白,这个里面交换SDP的时候,是通过信令服务器做的交换是吗?即使是P2P里面,也是需要信令服务器的吗?

    作者回复: 是的,必须要有信令服务器

    2021-05-25
    2
    2
  • Benjamin
    李老师你好。 SDP 这篇内容不错,让我梳理清楚了很多 SDP 细节和后续需要进一步补充更多细节的方向。 但是我这里一直有个 SDP 信息报文两端相互交换的时间点疑问。 假设是 1 to 1 的场景,一次连接时相互会交换一次 SDP 信息,连接正常音视频通信正常中的时候。 后续两端还会相互交换 SDP 信息嘛?还是说在一段主动发起再次协商时,才会触发一次两边交换一次新的 SDP 信息。并且 o= 下的 version 会递增一次。

    作者回复: 对,再协商时才会有

    2020-02-11
    2
  • just so so
    当用户发送数据量太大超过评估的带宽时,要及时减少数据包的发送:这是不是代表着视频的质量就下降了,或者会出现马赛克的情况?

    作者回复: 视频的质量会下降,但不一定会出现马赛克哈。你可以想想这是为甚么

    2019-08-26
  • David
    在流媒体描述中改变码率吧,a=rtpmap:96 VP8/90000,不过我好奇怎么更改SDP

    作者回复: 通过 SDP 是可以的,但不是你现在写的这个。另外 SDP 是可以修改的,你自己一定可能找到修改的办法的,偿试一下!

    2019-08-15
    2
  • Geek_1ae6d0
    看了sdp 但是sdp是怎么用呢 web端要我们自己去打出来吗 还是调用api

    作者回复: 自己可以将 sdp打印出来

    2019-08-14
    2
  • Geek_855fe4
    可以使用b=AS:xxx来限制传输码率,应该是这样子的吧; 另外,老师是否可以增加些candidate、ssrc-group、ice-ufrag、ice-pwd、fingerprint、setup等属性的深入讲解呢,以及这些属性在哪些地方会被用到。有些属性一直没能很清楚的理解,没能很好的通RTP包关联起来,谢谢老师。

    作者回复: 这些属于比较高级一些地知识了,会在其它的课程中讲解哈!

    2019-08-08
  • 良师益友
    多个用户加入一个房间,需要sdp关于编解码部分必须一样吗?

    作者回复: 不需要,每路流都有它自己的PayloadType, webrtc会根据 PayloadType进行解码

    2019-07-30
收起评论
显示
设置
留言
21
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部