6.2.SDP协议
那今天呢?我们来介绍一下sdp协议,那实际上呢?sdp协议非常的简单。我们如果拿到一个stp的文档去看的话,那你要分阅里边的所有的内容会觉得很枯燥,但实际上呢,如果我们按照这张图所展示的结构去看stp的话。你就会觉得它没有那么复杂了,那实际上呢,每一个stp它都是嵌套的方式来进行定义的。那在它最外层呢?是绘画层,

在绘画层之内是媒体层,那媒体层呢?又分为了音频和视频。在音频里头,它又对音频做了各种各样的定义,而视频里边儿呢,也同样的做了各种各样的定义。我们按照这种结构去给它进行一下拆分。你就会容易理解它里边儿所要表达的信息是什么了,所以这张图呢,非常的关键,大家呢,一定要把这张图记住。在看协议的相关文档的时候,那就按照这张图所描述的这种结构去套,

就很容易理解了。那下面呢,我们再来看看的规范,它这个规范啊,也非常的清晰,那主要就是ky 6中间用等号进行连接。等号的左边是k,右边是value。对于k来说呢,常见的k有MA CV so,那其中m呢代表的是media,也就是一个媒体。那媒体可以是音频,可以是视频,可以是应用
a呢表示属性,当我们定义了某个媒体之后,要对这个媒体进行进一步的说明。那就要通过a attribute进行进一步的这个定义啊,
这是C呢,就是connection代表连接。v代表版本,我们在进行协商的时候,版本一定要是一致的,比如说一个用户的版本是一。第二个用户的版本是二,这样他俩是没法进行协商的,必须要保证他们使用的stp的协议版本是一致的。
s代表session也就是一个会话。a与b之间进行一个通讯,
那这个呢?就是一个会话。会话呢?是一个全局的。
o代表owner就是谁拥有这个绘画好,这是k。那value呢,它的值就比较多了,那具体含义呢,
你可以查看rfc四五六六这个协议文档中呢,对value做了详细的定义。那实际我们在了解stp协议的时候呢,一般都是拿到一个实际的stp数据,对照着stp数据去看,每一个value它的值是什么含义?
那很少呢,直接去看这个文档,因为这个文档还是比较大的,我们去看的时候呢,如果你没有一个实际的例子。直接去看这文档,可能不太容易理解,那如果你真的想去看这文档的时候呢,可以直接在百度上搜rfc四五六六就可以搜到这篇文档。这就是stp规范,那下面呢?我们就来看一个具体的例子,那这个呢?就是我从一个实际的stp的例子中抽取出的一些重要的信息。那首先第一个就是我们的版本使用的是多少,

比如我们在第一次进行协商的时候,版本号是一。那第二次协商的时候呢,版本号就变成二,那第三次呢,就是三,它这个版本呢,是不断累加的,后边这个o呢,就代表是就谁拥有它?如果后边是干,就是不太关心具体这个名字是谁了,那后边这一串数字呢?对于外边心思来说呢,它是不实用的,
所以这块呢,它的含义呢,没必要特别深究。其中的in呢代表internet IP 4代表IPV 4后边呢,是你本机的IP地址。那一般都会写成幺二七点零点零点一,这代表我们自己的本机再下边
m是非常关键的一个信息,代表一个media。那每个呢,只代表一种类型的数据,要么是音频,要么是视频,要么是应用数据。对它不可能同时既包含音频,又包含视频,
这是不可能的,所以它的第一个单词呢?audio代表的这个媒体呢?是一个音频数据。好后边的九代表,它使用的端口号,这个端口呢?
对于外边tc来说,它也不用它会使用自己的ice进行网络传输。那这个端口有一个特殊的意义,如果这个端口是零,表示两个用户之间进行媒体协商时没有成功。那如果不是零这个值呢?是多少都无所谓,后边呢是这个媒体所使用的传输协议。
那底层呢?使用udp tls呢?就是进行数据加密,那在udp之上跑的是rtp。后边的sav TF表示的是支持rt CP协议,那a呢?代表audio v呢?代表video p呢?是protocol。f呢是feedback,所以这几个单词的第一个字母好,再后边的这一串数呢是?那它可以是幺幺幺,也可以是幺零三,也可以是幺零四,
那每个配具体代表的是哪个编辑码器?那在后边呢?都有定义。再接下来,这个a就是对前面的这个media进行的扩展说明,也就是attribute一个属性。MID代表的是media ID,也就是说我们这个media它的ID是多少?那冒号零表示的这个ID是零?那再下来,那对于这个media来说呢,它对传输的rtp协议进行了扩展,那如果rtp中的p是幺幺幺。它表达的意思是它使用的编解码器是oppos采样率呢,是48000双通道。

这两个a呢,都是对前面这个media的一个说明,当他遇到下一个
m的时候,前面的这个媒体就算结束了,就开始一个新的媒体。那这个m呢?表示这是一个视频的媒体,后边是端口号好,那再下来这些信息呢?与这个音频是类似的。也就是它使用的传输协议udp rtp下边儿是palo tap九六幺零二,那与音频类似,后边儿这a呢,是对这个媒体的一个说明。
那对于视频来说,它的media ID是一,那这个序号呢?是自动增加的,再下边这个rtp map是对payload type九六进行的说明。那p6使用的是VP 8,这个编辑码器,它的时钟频率呢是九万,那这个呢,就是一个stp的例子。当然,这里所展示的这些信息呢,都是一些比较关键的信息点。那除了这些信息之外呢,还有很多的信息在里边,那没有在这里列出来,
是由于没法在一张PPT中容纳所有的信息,所以我只挑出其中。最关键的向你做了展示,那没有展示的那些信息,每一个字段都是我们必须要掌握的,并不是说我在这里没有展示,你就可以不清楚了。不是这样的,每一个字段我们都要知道它的含义是什么,只有这样你才能看外边代码的时候,读懂它的逻辑是什么。那在这里啊,我有两个知识点,要特别向你重点介绍一下,那第一个呢就是ice four和ice light。

那这个信息呢?是标准stp中啊,不包含的,那这里我们要重点介绍一下,那首先我们来看一下ice light。那你在看sdp的真实的例子的时候呢,经常会看到这个属性,尤其是web rtc流媒体服务器中都会包含这个属性ice light。那它的含义是什么呢?这就要说到y八二tc的ice了,那对于y八二tc的ice,我们在前面的课程中呢,也向你做过介绍。那web rtc呢?实现了自己的一套传输的控制,
那这套控制呢?就称为ice,比如说每个web rtc的终端都会收集candidate。candidate呢,又是有类型的,不同的类型有不同的优先级,那这些内容呢,都属于ice的内容。那其中,在进行ice的时候,要做一次验证,也就是说验证一下这一端给我提供的这个candidate的是否是有效的?那验证应该是双方都要验证它使用的方法呢,就是通过发送向对方发一个请求。那对端收到这个请求之后呢?
要回一个response,这样表明我这个candidate是可用的。如果服务端与客户端之间每个都要做这个流程的话,那对于流媒体服务器来说,它的负载就太重了。所以,为了减轻这个负载,就简化了这个逻辑。所以,只要客户端进行验证就了,那这样呢,就提高了整个连接的这个效率。所以呢,对于客户端来说,它会发子弹request服务端返回子弹response就OK了,
服务端呢,不会向客户端再发送子弹request。那这个呢,就叫ice light,客户端发送stun,服务端回就好了,这就是ice light
那ice four就是与ice light相对应的,它是一个双方检测的过程,也就是说连接的双方都要发送stand request。收到request之后呢,都要回response,它是这样一个过程,这就是ice four与ice light,那如果我们在一个stp中没有发现a=ice light这个属性。那默认呢,它就是ice four,也就是说双方都要进行这个检测,对于外边tc来说呢,
它默认使用的就是ice four。一般的流媒体服务器都使用ice light,这个我们要清楚,
那第二个呢?就是plan b和unify plan。那plan b呢,是web rtc以前默认使用的语法,那什么意思呢?就是如果对于同一种媒体类型有多个源的话。它使用属性进行区别,也就是说对每一种媒体类型只有一个行,比如音频,有一个音频的行。视频呢?有视频的行,

如果在我们通讯的过程中有两个音频源,那它要进行区分的时候呢?是使用as src来进行区分。其中,每一个音频源有一个自己的ssrc,它们的这个ID呢是不一样的,比如在这里一个是一二三四五六七。另外一个呢是七六五四三二一,同时他们的cna me呢也是不一样的,这是plan b,而unit five plan呢,又与他们不一样了。它是对每一个媒体流都有一个行,就像我们刚才介绍的,如果有两个音频的媒体源。

那对于unify plan来说呢,它就有两个m行,其中一个m行,它的ssrc呢,是一二三四五六七。那另外一个行它的呢?是七六五四三二一,这是他们的一个最主要的区别,区别的关键点呢就是m行的个数。那在plan b中呢?每一种类型只有一个m行,而现在对于unify plan来说呢?是每一个圆都有一个m行。那对于现在的外包tc来说,它都统一使用unify plan,
也就是plan b被淘汰了。当然,对于一些老的浏览器,它还会使用plan b。那这一个呢?我们要清楚,尤其是做一些兼容开发的时候,那有的是用plan b,有的是用unify plan。那这个时候呢,我们要做好兼容,那以上呢,就是我们这节所要向你介绍的内容,那在这节中呢,我首先向你介绍了sdp协议的一个基本的规范。
它是由k value所组成的,那另外呢,我们要知道sdp它是分层的,对这对于我们理解sdp来说呢,非常的关键。那你了解了这个结构之后呢,我们去看sdp就会非常容易,那如果你不了解的话呢,就觉得很绕,没有逻辑感。那另外呢,我通过一个实例向你讲解了sdp是如何组织这个媒体信息的。那最后呢?我又向你介绍了两个重要的知识点,一个是ice light ice four,
另外一个呢是plan b和unified plan。那这两个点呢,是wrtc对标准sdp的一些修改,这我们要知道,
那这里我需要特别强调啊,对于sdp中的每一个信息。我们必须都要非常清楚它的含义是什么,这一点是非常关键的,这也是我学习web rtc的一个心得,对只有你了解了sdp中的每一个信息。你才能在阅读代码的时候游刃有余,否则的话呢,很多逻辑你都看不懂,不知道为什么要这么写,不知道它定义那个属性是干什么用的。
这样对于我们理解外边儿tc来说呢,就非常困难了,那以上呢,就是我们这节课的内容有任何的问题
相关文章:
6.2.SDP协议
那今天呢?我们来介绍一下sdp协议,那实际上呢?sdp协议非常的简单。我们如果拿到一个stp的文档去看的话,那你要分阅里边的所有的内容会觉得很枯燥,但实际上呢,如果我们按照这张图所展示的结构去看stp的话。你…...
[汇编实操]DOSBox工具安装——Ubuntu18.04系统
一、下载&安装 sudo apt install -y dosbox 二、启动 dosbox 三、C盘挂载 将上述文件下载放在任意路径,将DEBUG目录映射为虚拟C盘 MASM.EXE 是用来编译的,LINK.EXE 用来链接,这俩是必须的。 执行如下命令: mount c /m…...
前端 HTML 的 DOM 事件相关知识有哪些?
HTML 的 DOM 事件是指在网页上发生的各种事件,如点击、鼠标移动、键盘输入等。 通过 JavaScript 脚本可以对这些事件进行监听和处理,以实现交互效果。以下是一些常见的 DOM 事件及其相关知识点: 1、click:点击事件,在…...
Mac自带的看图如何连续查看多张图片
一、问题 mac看访达里的图片时,双击打开一张图片,然后按上下左右键都没法切换到另外的图片。而且也没找到像window一样单击缩略图可以看到预览图。其实是自己不懂得怎么使用,哈哈哈😂 二、方法 2.1、图标方式 可以看到缩略图&a…...
HTTP四大参数类型及请求参数的方式和如何接收
HTTP 请求中4大参数类型和接收方法。 1、请求头参数head 请求头参数顾名思义,是存放在请求头中发送给服务器的参数,服务器通过解析请求头获取参数内容。通常会存放本次请求的基本设置,以帮助服务器理解并解析本次请求的body体。 参数形式如…...
【C++11】default、delete与Noncopyable
C11 oop中的default、delete与Noncopyable default 在C11标准中,可以使用default关键字来显式地声明默认的构造函数和析构函数。 使用default关键字可以用来显式声明默认的构造函数和析构函数。这样做可以让编译器自动生成默认实现 –>->->关于构造函数…...
【心得】基于flask的SSTI个人笔记
目录 计算PIN码 例题1 SSTI的引用链 例题2 SSTI利用条件: 渲染字符串可控,也就说模板的内容可控 我们通过模板 语法 {{ xxx }}相当于变相的执行了服务器上的python代码 利用render_template_string函数参数可控,或者部分可控 render_…...
ubuntu20.04 nginx 部署静态网页
1、安装nginx Ubuntu环境下安装部署Nginx(有网)_ubuntu 安装nginx_荒Huang的博客-CSDN博客 2、压缩并上传文件到服务器指定位置(unzip命令),修改nginx配置文件,指定root目录为文件的目录,index 值为指定的html文件 …...
vue脚手架的基础搭建过程
MVVM架构 Vue框架底层设计遵循MVVM架构。 Model层(M)模型层(业务逻辑层) View层(V)视图层 主管UI ViewModel层(VM) 将项目代码划分清晰的层次结构后,非常有利于后期代…...
函数与数组
一.函数 1、函数的作用 定义较为复杂的但是需要重复使用的内容,以便再次使用,可以直接调用,节约时间,提高效率。 语句块定义成函数约等于别名,定义函数,再引用函数。 封装的可重复利用的具有特定功能的…...
2023年【安全生产监管人员】考试题及安全生产监管人员找解析
题库来源:安全生产模拟考试一点通公众号小程序 安全生产监管人员考试题参考答案及安全生产监管人员考试试题解析是安全生产模拟考试一点通题库老师及安全生产监管人员操作证已考过的学员汇总,相对有效帮助安全生产监管人员找解析学员顺利通过考试。 1、…...
K8S(一)
一、kubernetes 概述 1、kubernetes 基本介绍 kubernetes,简称 K8s,是用 8 代替 8 个字符“ubernete”而成的缩写。是一个开源的,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的 应用简单并且高效…...
Linux快速显示文件行号并跳转
有时候,想要在线上直接查看日志文件,搜索到关键词后,如果一直按n找下去,很麻烦,我们可以先显示出行号,确定好我们要找内容对应的行号,直接跳转过去。 esc进入命令模式,输入:set nu命…...
异步爬取+多线程+redis构建一个运转丝滑且免费http-ip代理池 (二)
继上一章: CSDN 本次需要做的是进行有效ip的验证! 我们知道,从网页上爬取上千上万个ip之后,因为是免费的代理,所以,对这上千上万个ip进行验证有效性就需要考虑效率上的问题了; 而验证ip有效性的唯一办法,就是通过对网络发起请求;如果state200,就是有效,否则就是无效; 而上…...
HugeGraph安装与使用
1、HugeGraph-Server与HugeGraph-Hubble下载 HugeGraph官方地址:https://hugegraph.apache.org/ 环境为:linux 官网是有模块版本对应关系,尽量下载较新版本,hubble1.5.0之前是studio功能比较少。官网已经下架server,其他模块下载也比较慢。可以在网上找…...
计算机端口
前言 计算机端口(Port)是一种用于在计算机网络中标识特定服务或应用程序的机制。 端口是一个数字,范围从0到65535,用于将网络通信分配给不同的应用程序或服务。 在 Internet 协议套件(TCP/IP)中࿰…...
激发创新,助力研究:CogVLM,强大且开源的视觉语言模型亮相
项目设计集合(人工智能方向):助力新人快速实战掌握技能、自主完成项目设计升级,提升自身的硬实力(不仅限NLP、知识图谱、计算机视觉等领域):汇总有意义的项目设计集合,助力新人快速实…...
centos 6.10 安装 perl 5.14
下载安装包 运行下面命令: wget http://www.cpan.org/src/5.0/perl-5.14.2.tar.gz也可以直接下载好安装包,再拷到虚拟机 安装 执行下面命令 tar -xvzf perl-5.14.2.tar.gz #解压安装包 cd perl-5.14.2 ./Configure -des -Dprefix/usr/local/perl ma…...
Elasticsearch:FMA 风格的向量相似度计算
作者:Chris Hegarty 在 Lucene 9.7.0 中,我们添加了利用 SIMD 指令执行向量相似性计算的数据并行化的支持。 现在,我们通过使用融合乘加 (Fused Mulitply-Add - FMA) 进一步推动这一点。 什么是 FMA 乘法和加法是一种常见的运算,…...
思维模型 等待效应
本系列文章 主要是 分享 思维模型 ,涉及各个领域,重在提升认知。越是等待,越是焦虑。 1 等待效应的应用 1.1 等待效应在管理中的应用 西南航空公司是一家美国的航空公司,它在管理中运用了等待效应。西南航空公司鼓励员工在工作中…...
[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?
论文网址:pdf 英文是纯手打的!论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误,若有发现欢迎评论指正!文章偏向于笔记,谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...
cf2117E
原题链接:https://codeforces.com/contest/2117/problem/E 题目背景: 给定两个数组a,b,可以执行多次以下操作:选择 i (1 < i < n - 1),并设置 或,也可以在执行上述操作前执行一次删除任意 和 。求…...
【Web 进阶篇】优雅的接口设计:统一响应、全局异常处理与参数校验
系列回顾: 在上一篇中,我们成功地为应用集成了数据库,并使用 Spring Data JPA 实现了基本的 CRUD API。我们的应用现在能“记忆”数据了!但是,如果你仔细审视那些 API,会发现它们还很“粗糙”:有…...
PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
《基于Apache Flink的流处理》笔记
思维导图 1-3 章 4-7章 8-11 章 参考资料 源码: https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...
C++八股 —— 单例模式
文章目录 1. 基本概念2. 设计要点3. 实现方式4. 详解懒汉模式 1. 基本概念 线程安全(Thread Safety) 线程安全是指在多线程环境下,某个函数、类或代码片段能够被多个线程同时调用时,仍能保证数据的一致性和逻辑的正确性…...
Swagger和OpenApi的前世今生
Swagger与OpenAPI的关系演进是API标准化进程中的重要篇章,二者共同塑造了现代RESTful API的开发范式。 本期就扒一扒其技术演进的关键节点与核心逻辑: 🔄 一、起源与初创期:Swagger的诞生(2010-2014) 核心…...
.Net Framework 4/C# 关键字(非常用,持续更新...)
一、is 关键字 is 关键字用于检查对象是否于给定类型兼容,如果兼容将返回 true,如果不兼容则返回 false,在进行类型转换前,可以先使用 is 关键字判断对象是否与指定类型兼容,如果兼容才进行转换,这样的转换是安全的。 例如有:首先创建一个字符串对象,然后将字符串对象隐…...
DeepSeek 技术赋能无人农场协同作业:用 AI 重构农田管理 “神经网”
目录 一、引言二、DeepSeek 技术大揭秘2.1 核心架构解析2.2 关键技术剖析 三、智能农业无人农场协同作业现状3.1 发展现状概述3.2 协同作业模式介绍 四、DeepSeek 的 “农场奇妙游”4.1 数据处理与分析4.2 作物生长监测与预测4.3 病虫害防治4.4 农机协同作业调度 五、实际案例大…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
