6.3.WebRTC中的SDP类的结构

在上节课中呢,我向你介绍了sdp协议,
在这里插入图片描述
那这节课呢,我们再来看看web rtc中。是如何存储sdp的?也就是sdp的类结构,那在此之前呢?我们先对sdp的内容啊,做一下分类。因为在上节课中呢,虽然我们介绍了它的协议,但是具体对于stp中它到底包含了哪些内容?
在这里插入图片描述

实际我们并没有做详细的介绍,对吧?那所以呢,我们今天先把这块内容给大家做一个介绍,之后呢,我们再来看看web rtc是如何存储它的。好,那这张图呢?就是对stp内容的一个分类。那从大的方面来看呢?sdp它包括了会话层和媒体层,对吧?那会话层呢?包含的信息比较少。包括了vost这些呢,

我们在上节课中都向你做了介绍,那重点呢是媒体层。那我们对媒体层呢,又做了划分,分成了四大块,第一个呢是媒体信息。第二个呢,是网络描述,第三个呢,是安全描述,最后一个是服务质量。对于媒体信息来说,最关键的是m行对吧?等于后边一堆内容,包括了传输协议。

那这些呢?我们在上节课都做过介绍,那除此之外呢?与媒体信息相关的还有很多的属性。比如说ssrc
rtp map,也就是对pilot type做进一步说明的。还有呢FM tp也就是format parameter,它是对媒体信息一些参数的进一步说明。
在这里插入图片描述

好,那对于网络描述涉及的内容就比较多了,那首先呢是c。它代表的是connection对吧?但是对于外部rtc来说呢,它不使用stp标准中的这个c行。所以对于这一行呢,

我们不必过多的了解,那除了之外呢,跟网络相关的,还有candidate group。rt cp mu x等等等,这一堆都属于与网络相关的内容好,那第三个呢?是安全描述。那我们都知道,对于外部rtc来说呢,它对安全是比较看重的,所以在传输数据的时候呢,它会对rtp包的内容进行加密。那在加密时,它使用的一些信息啊,
在这里插入图片描述

都是从安全描述这部分内容中提取出来的,比如说用户在连接的时候。他要发送ice uf rag以及ice password。对这个用户呢进行验证,是否是有效的用户?那除此之外呢,还有fingerprint进行指纹的验证,这些呢,都是与安全相关的,那后边儿呢,我们会做详细介绍。

好,最后一个是服务质量相关的,它通过一系列的rt CP feedback来对外部rtc的服务质量进行控制。那这就是y八二七csdp中媒体相关的内容,

那通过这样一个分类呢,我们就很容易知道y八二七c的sdp中。包括了哪些内容好?
在这里插入图片描述

那下面呢?我们再来看看对于web rtc的stp分类,那我们前面介绍的这些内容呢?是从它的功能上做分类的,那对于外包tc代码对stp进行分类的时候呢?是有一些区别的,那么来看一下啊,那从大的方面来说,web rtc对stp还是分为绘画描述和内容描述,这个内容描述呢,实际就是媒体描述。那对于内容描述,

它又分成了内容信息传输,信息和内容组这三项。那这就与我们刚才介绍的不太一样了,对吧?刚才我们介绍的分类呢,是从功能上分成了媒体描述。安全描述,网络描述,服务质量描述对吧?那对于外部rtc来说呢?它是按照这个内容传输和内容组这样一个分类来进行数据的组织的。那对于这些内容,具体web rtc是如何做的呢?我们来看这张图就比较清晰了,那这张图呢?
在这里插入图片描述

就是web rtc的sdp类关系图。那我们可以看到总的点呢,是在这里就是session description,它代表一个sdp,那在这个类中呢?是包括了三大项,那第一项呢?就是content information第二项呢?是transport information。那第三样呢,是content group对吧?那紧接着是content information类,那在这个类中呢,包括了content的名字。媒体的类型儿协商是否被拒绝?
在这里插入图片描述

bandle only代表的是是否共用同一个传输通道?那最后一个呢,是媒体的描述,也就是说媒体信息中它包括了哪些内容是在这里做了描述?那对于这个类来说呢,就是对应的stp中的m行,其中的audio呢,表示的就是content information中的media protocol type这个字段。那对于这个媒体中的更详细的信息呢,是记录在media content description这个类结构中。那我们来看一下这个类中包含了哪些内容?那比如说包含了rt cp mu xr TCP,reduced size protocol,rtp hydro extension。等等等,

一系列的这个字段,实际这些字段呢,是与sdp中每个媒体流的相关属性,是一一对应的。比如说在视频的这个媒体中呢,它包含了rt cp mu x这个属性,如果有这个属性,那么对应的。在media content description中呢,它的rt cp mu x这个字段就为true对吧?再比如说rtc pre size。对应的就是media content description中的rtc t reduced size这个字段,那从中呢,我们就可以看到。这个media content description就是sdp中每个媒体的主性定义,

对吧?那我们接着再往下看啊,那在这个类中呢,有一个send stream这个字段。那这个字段呢,是stream parameters victor是这个类型,那对应的呢,就是stream parameter。它里边包括了谷歌pids src。s ssc group.那这些信息呢,也是与stp中的内容一一对应的,我们来看一下啊,那它就是与媒体层中的。s slc相关属性一一对应的,

比如说s slc group就在这里呢,有对应的值。呢在这里也有对应的值,对吧?那在stream parameter这个类中呢?又包括了rids。那它呢,是rid description这个类结构。在这个类结构中,包括了rid direction payload types这些字段,那这里的payload types就代表的是。媒体层的payload type,那对于每一个payload type的解释是,通过媒体层的这个属性,rtp map来进行进一步说明的。

对吧,那这些信息呢,都会被web rtc进行解析,把它们保存到red description这个结构中。好这样呢,我们就将中的content这个结构给大家讲解清楚了,那之后呢,我们再来看看transport information。那对于transport information来说呢,它包括了content name,还有description,那description呢,又是transport description。这个类定义的,那在这个类中呢?

它包括了IC EU flag ice password ice mode,那这些信息呢?也是在媒体层定义的,那在每个媒体层下边都会有ice option si ceu frag ice password。fingerprint setup对吧?那这里的每一项呢?其实就是与transport description中的每一项相对应的,那这样呢,就可以做一个直接的翻译,如果在这个媒体层包含这一项,那其中对应的值呢?就会置位或者是取其中的值,那如果没有的话呢,这里边就是钠。OK,

这是传输层,那对于content group来说呢?它是与sdp中的a group相对应的,那么在group中呢?有bandle。就是对音频和视频做一次绑定,其中的零呢代表的是音频,一呢代表的是视频。所以在content group中的semantics就是b。那content name呢?就是零或者是一,那如果你仔细看这张图啊,其实有一个非常有意思的地儿,就是content name。那这个content name呢?

就是group中的零或者是一,那除了content group有content name之外呢中?也有content name在content information中呢?也有name,那实际上这三个name啊,是串在一起的。比如说对于一个音频来说,那它的内幕呢?是零那中的content name也是零。content group中的内幕也是零,那这样就将它们三个串在一起,所以如果我们是通过这个结构去生成一个stp信息的话。那web rtc就会根据它们的content name来一项一项的把它们码列在一起,那这样输出之后我们看到的。就是在每一个媒体层中都包含了它所对应的一些属性,

那这样在构造每个媒体信息的时候呢?在stp中,它的所有的属性信息都会列在每一个媒体层的下边儿。那通过这种方式,外部rtc就很容易进行两者的交换,也就是说。内存中的类交换成sdp文本,或者是拿到一个sdp文本,可以很容易的在内存中呢,构造出这样一个类关系图。那以上呢,就是我们这节课所要向你介绍的内容,那在这节课中呢,我们将sdp做了两种类型的分类,那第一种类型呢,

是按功能分。我们可以知道sdp中包含了媒体信息,网络信息,安全信息以及服务质量相关的信息,对吧?而对应到wtc源码来说呢,它是按组织结构对sdp进行分类的,它将sdp分成了三大类,第一个呢是content information,第二个是transport information。第三个呢,是content group,那通过这个结构的分类,它可以很容易的将一个sdp文档转换成类关系图,也可以将类关系图。

非常方便的转换成stp文档,对吧?那至于哪种分类好,你要站在不同的角度,如果从更容易理解的角度上来说。想知道sdp中包含了哪些内容,我们就应该从功能的角度去分类,那从类型的转换来说。就是从文本转换成内存,从内存转换成文本,再把rtc的这种分类呢?更有优势是吧?好,那我们本节课的重点呢?当然就是这个类关系图了,

因为我们只有掌握了这个类关系图之后,我们后边去看外边提示源码的时候。才能理解它是怎么做的,所以这张图呢,大家一定要多看一看,把它记在心里好,那我们今天的课呢,就到这里,谢谢。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/184301.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

软件设计不是CRUD(6):低耦合模块设计实战——组织机构模块(上)

组织机构功能是应用系统中常见的业务功能之一,但是不同性质、不同行业背景、不同使用场景的应用系统对组织机构功能的要求可能完全不一样。所以使用这样的功能对低耦合模块设计进行示例性的讲解是比较具有代表性的。在后续的几篇文章中,我们会首先进行示…

linux磁盘清理

目录 排查过程1、查看磁盘占用情况2. 按照占用大小进行倒排-当前目录及其子目录3.当前目录磁盘占用情况 清理命令 排查过程 1、查看磁盘占用情况 df -hdf -h 命令用于显示磁盘空间的使用情况,以人类可读的方式呈现,其中:df 是 “disk free”…

ROS2编译Python节点来发布和订阅的实践《2》

通过熟悉:ROS2对比ROS1的一些变化与优势(全新安装ROS2以及编译错误处理)《1》 我们大概了解到了ROS2的重新设计带来的巨大优势,最核心的就是去掉了roscore,这样就避免了因为节点管理器崩溃而使整个系统都崩溃的场景出现…

机器学习/sklearn 笔记:K-means,kmeans++,MiniBatchKMeans,二分Kmeans

1 K-means介绍 1.0 方法介绍 KMeans算法通过尝试将样本分成n个方差相等的组来聚类,该算法要求指定群集的数量。它适用于大量样本,并已在许多不同领域的广泛应用领域中使用。KMeans算法将一组样本分成不相交的簇,每个簇由簇中样本的平均值描…

【ChatGLM2-6B】Docker下部署及微调

【ChatGLM2-6B】小白入门及Docker下部署 一、简介1、ChatGLM2是什么2、组成部分3、相关地址 二、基于Docker安装部署1、前提2、CentOS7安装NVIDIA显卡驱动1)查看服务器版本及显卡信息2)相关依赖安装3)显卡驱动安装 2、 CentOS7安装NVIDIA-Doc…

idea 问题合集

调试按钮失效: 依次点击:Modules-web-src-Sources,重启IDEA即可(网上看到的方法,原因呢未明)

Modbus故障码速查手册(故障码含义、分析原因、详细解读)

Modbus故障码速查手册 文章目录 Modbus故障码速查手册引言故障码表故障详解0x01 IllegalFunction0x02 IllegalDataAddress0x03 IllegalDataValue0x04 SlaveDeviceFailure0x05 Acknowledge0x06 SlaveDeviceBusy0x08 MemoryParityError0x0A GatewayPathUnavailable0x0B GatewayTa…

java spring-boot 修改打包的jar包名称

修改pom文件 <finalName>lzwd</finalName><build><finalName>lzwd</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plu…

IP地址定位的误差问题及解析

随着互联网的普及&#xff0c;IP地址定位成为了数字时代中不可或缺的一部分&#xff0c;被广泛应用于各种场景&#xff0c;从位置服务到网络安全。然而&#xff0c;尽管IP地址定位提供了便利&#xff0c;但其准确性仍然受到多种因素的影响&#xff0c;存在一定的误差。本文将深…

【AI考证笔记】NO.1人工智能的基础概念

以下部分内容来自于百度智能云人才认证培训讲义&#xff0c;腾讯等也有人工智能类似的讲义&#xff0c;限时免费&#xff0c;也就是不报考&#xff0c;也能系统学习&#xff0c;课程做的都是不错的。有感兴趣的朋友&#xff0c;可以去检索学习。 本系列是学习笔记&#xff0c;…

thinkphp6生成PDF自动换行

composer安装 composer require tecnickcom/tcpdf 示例 use TCPDF;public function info($university,$performance,$grade,$major){//获取到当前域名$domain request()->domain();//实例化$pdf new TCPDF(P, mm, A4, true, UTF-8, false);// 设置文档信息$pdf->SetCr…

短视频账号矩阵系统saas化批量管理部署搭建/技术

一、短视频矩阵系统建模----技术api接口--获取用户授权 技术文档分享&#xff1a; 本系统采用MySQL数据库进行存储&#xff0c;数据库设计如下&#xff1a; 1.用户表&#xff08;user&#xff09;&#xff1a; - 用户ID&#xff08;user_id&#xff09; - 用户名&#xff08;…

AIOps探索 | 应急处置中排障的降本增效方法探索(下)

文章来源&#xff1a;公众号ID-布博士&#xff08;擎创科技资深产品专家&#xff09; 哈喽~上期内容我们分享了传统调用链系统与CMDB系统的缺陷、服务所有权模型是什么、服务所有权模型分类。这期我们来说一说如何落地服务所有权模型&#xff0c;以及好用的模型推荐&#xff0…

H5(uniapp)中使用echarts

1,安装echarts npm install echarts 2&#xff0c;具体页面 <template><view class"container notice-list"><view><view class"aa" id"main" style"width: 500px; height: 400px;"></view></v…

将form表单中的省市区的3个el-select下拉框的样式调成统一的间隔距离和长度,vue3项目iot->供应商管理

省市区是用3个el-select组成的 在表单中用el-col&#xff0c;会导致3个下拉的距离不统一&#xff0c;市和区的前面也是不需要文字label的 如何解决:用vue3的:deep()进行样式穿透&#xff0c;由于el-form-item标签都是一样的&#xff0c;为了能准确的找到市的el-form-item&…

C语言众数问题(ZZULIOJ1201:众数问题)

题目描述 给定含有n个元素的多重集合S&#xff0c;每个元素在S中出现的次数称为该元素的重数。多重集S中重数最大的元素称为众数。 例如&#xff0c;S{1&#xff0c;2&#xff0c;2&#xff0c;2&#xff0c;3&#xff0c;5}。多重集S的众数是2&#xff0c;其重数为3。 编程任务…

部署系列六基于nndeploy的深度学习 图像降噪unet部署

文章目录 1.直接在源代码demo中修改2. 如何修改呢&#xff1f; https://github.com/DeployAI/nndeploy https://nndeploy-zh.readthedocs.io/zh/latest/introduction/index.html 1.直接在源代码demo中修改 如果你想运行yolo5: onnxruntime:115ms ./install/lib/demo_nndeploy_…

【华为数通HCIP | 网络工程师】821-IGP高频题、易错题之OSPF(5)

个人名片&#xff1a; &#x1f43c;作者简介&#xff1a;一名大三在校生&#xff0c;喜欢AI编程&#x1f38b; &#x1f43b;‍❄️个人主页&#x1f947;&#xff1a;落798. &#x1f43c;个人WeChat&#xff1a;hmmwx53 &#x1f54a;️系列专栏&#xff1a;&#x1f5bc;️…

Android 提示框代码 java语言

在Android中&#xff0c;你可以使用 AlertDialog 类来创建提示框。以下是一个简单的Java代码示例&#xff0c;演示如何创建和显示一个基本的提示框&#xff1a; import android.app.AlertDialog; import android.content.Context; import android.content.DialogInterface; im…

EXIT外部中断 HAL库+cubeMX

一.cubeMX外部中断配置 1.系统内核 2.中断管理 3.选择抢占优先级和响应优先级&#xff0c;共有5个等级&#xff0c;在这里就使用库函数编写代码时最常用的2位抢占优先级2位响应优先级。 4.勾选使能选项&#xff0c;后面的两个零&#xff0c;第一个代表抢占优先级的等级&#xf…