一文读懂RSTP流媒体传输原理

news2024/11/16 11:45:48

什么是流?
流(Streaming):近年在Internet上出现的新概念,定义非常广泛,主要是指通过网络传输多媒体数据的技术总称。
流式传输分为两种:顺序流式传输 (Progressive Streaming)和实时流式传输 (Real time Streaming)。
实时流式传输是实时传送,特别适合现场事件。“实时”(real time)是指在一个应用中数据的交付必须与数据的产生保持精确的时间关系,这需要相应的协议支持,就产生了流媒体协议。
什么是流协议?
流协议:在两个通信系统之间传输多媒体文件的一套规则,它定义了视频文件将如何分解为小数据包以及它们在互联网上传输的顺序,RTMP ,RTSP HLS及是比较常见的流媒体协议,具体对比如下:
在这里插入图片描述

什么是RTSP?
RTSP(Real Time Streaming Protocol):实时流传输协议,是 TCP/IP 协议体系中种基于文本的应用层协议,设计用于娱乐、会议系统中控制流媒体服务器。RTSP用于在希望通讯的两端建立并控制媒体会话,客户端通过发出VCR-style命令如play、record和pause等来实时控制媒体流,因此 RTSP 又称为“因特网录像机遥控协议”。
RTSP由哥伦比亚大学, 网景和RealNetworks公司提交的IETF RFC标准.该协议定义了一对多应用程序如何有效地通过IP网络传送多媒体数据。
RTSP在体系结构上位于RTP和RTCP之上, 它使用TCP或RTP完成数据传输RTSP控制信息和媒体数据流可以交织在一起传送,但一般情况RTSP本身并不用于转送媒体流数据。媒体数据传送可通过RTP/RTCP等协议来完成。该协议用于C/S模型, 用于在客户端和服务器端建立和协商实时流会话.
RTSP体系结构
RTSP在体系结构上位于RTP和RTCP之上,它使用TCP或UDP完成数据传输如下图所示。
在这里插入图片描述
图1 RTSP体系

RTSP、RTP、RTCP三协议协作关系
RTSP协议:负责服务器与客户端之间的请求与响应
RTP协议:负责传输媒体数据
RTCP协议:在RTP传输过程中提供传输信息,如图所示:
在这里插入图片描述
图2 RTSP、RTP、RTCP协作关系

什么是RTP协议?
rtp协议:负责对流媒体数据进行封包并实现媒体流的实时传输,即它按照RPT数据包格式来封装流媒体数据,并利用与它绑定的协议进行数据包的传输。
RTP在端口号1025到65535之间选择一个未使用的偶数UDP端口号,而在同一次会话中的RTCP则使用下一个基数UDP端口号。RTP默认端口号5004,所以RTCP端口号默认为5005。
图1中RTP被划分在传输层,它建立在UDP上。同UDP协议一样,为了实现其实时传输功能,RTP也有固定的封装形式。RTP用来为端到端的实时传输提供时间信息和流同步,但并不保证服务质量,服务质量由RTCP来提供。

RTP协议封装
在这里插入图片描述

在这里插入图片描述

填充位P 需要1bit:,若p=1则在该报文的尾部填充一个或多个额外的八位组,它们不是有效载荷的一部分。填充可能用于某些具有固定长度的加密算法或者用在底层数据单元中传输多个RTP包扩展。
(X)需要1bit:置“1”表示RTP报头后紧随一个扩展报头参与源数(CSRC计数(CC) )4位,CSRC计数包括紧接在固定头后CSRC标识符个数。
标记(M)需要1个bit:其具体解释由应用文档来定义。例如,对于视频流,它表示一帧的结束,而对于音频,则表示一次谈话的开始。
有效载荷类型 需要7bit:它指示在用户数据字段中承载数据的载荷类别,记录后面资料使用哪种编码,接收端找出相应的 decoder 解码出来。
序列号 需要16bit: 每发送一个RTP数据包,序列号加一,接收机可以据此检测包损和重建包序列。序列号的初始值是随机的(不可预测),以使即便在源本身不加密时(有时包要通过翻译器,它会这样做) ,对加密算法泛知的普通文本攻击也会更加困难。
时间戳 需要32bit:时标反映RTP数据包中第一个八进制数的采样时刻,采样时刻必须从单调、线性增加的时钟导出,以允许同步与抖动计算。时标可以让receiver端知道在正确的时间将资料播放出来。只有系列号而没有时标,并不能完整按照顺序的将data播放出来,因为如果data中间有一段是没有资料的,只有系列号的话会造成错误。
SSRC 需要32bit:SSRC段标识同步源。此标识不是随机选择的,目的在于使同一RTP包连接中没有两个同步源有相同的SSRC标识。尽管多个源选择同一个标识的概率很低,所有RTP实现都必须探测并解决冲突。
CSRC列表 0到15项,每项32bit:CSRC列表表示包内的对载荷起作用的源。标识数量由CC段给出。如超出15个作用源,也仅标识15个。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2024挣大钱的机会来了!入职这一行,也能“一飞冲天”

不知不觉我们已经走过了疫情笼罩的三年。如今,已经全面放开,自12月起核酸检测也将彻底取消,对于我们每个人来说这也将是一场长期的战役。 然而在疫情的常态化下,国民经济也将逐渐恢复。对于我们普通人来说如何抓住机遇&#xff…

【渗透测试】小程序反编译

前言 在渗透测试时,除了常规的Web渗透,小程序也是我们需要重点关注的地方,微信小程序反编译后,可以借助微信小程序开发者工具进行调试,搜索敏感关键字,或许能够发现泄露的AccessKey等敏感信息及数据 工具…

模拟题解析:

攻击树方法可以被Red Team用来进行渗透测试,同时也可以被Blue Team用来研究防御机制。攻击树的优点:能够采取专家头脑风暴法,并且将这些意见融合到攻击树之中去;能够进行费效分析或者概率分析;能够建模非常复杂的攻击…

ICRA 2024: 使用Masked Visual-Tactile 对机器人操作预训练

先前的关于机器人操作的预训练工作表明,从大量人类操作数据中学习到的内容, 可以很好地泛化到新的操作任务以及操作环境当中。然而, 先前的方法主要集中在人类视觉或者自然语言方面, 忽视了触觉反馈。在本文中, 作者探索了如何使用人类的视觉和触觉数据来训练机器人操作的预训练…

【启明智显技术分享】MOEDL3芯片通用接口如CAN、I2S、I2C、SPI、UART、USB、emac的介绍和比较

启明智显MODEL3芯片提供的通用接口包括CAN、I2S、I2C、SPI、UART、USB和emac,每种接口都有其独特的功能和应用场景。 以下是这些接口的介绍和比较: CAN接口 功能: 支持CAN2.0A和CAN2.0B协议。支持11位标识符(标准格式&#xf…

RT-Thread Studio实现动态线程

1创建项目 我的板子为STM32F03ZET6 点击RT-Thread项目 2选择板子(根据自己的板子选择) 3找到主函数 4编写代码 4-1创建函数入口 // 线程入口函数 static void thread_entry(void *parameter) {rt_uint32_t count 0;while (1){// 线程执行的代码rt_k…

windows下以服务方式安装prometheus和grafana

grafana 找到confi下的defaults.ini&#xff0c;找到http_port修改端口号 # The HTTP port to use http_port 3000启动 grafana-server.exe访问localhost:8601即可 下载winsw https://github.com/winsw/winsw 新建grafanaservice.xml <service><id>grafana&…

(四十六)Vue Router组件所独有的两个钩子activate、deactivated

文章目录 activated钩子函数deactivated钩子函数demo 上一篇&#xff1a;&#xff08;四十五&#xff09;Vue Router之编程式路由导航 Vue Router提供了两个钩子函数&#xff0c;分别是activated和deactivated。 这两个钩子函数可以用于在路由组件的激活状态发生变化时执行相…

远程过程调用协议gRPC及在go环境下的使用

1. 远程过程调用协议 1.1 定义 远程过程调用(Remote Procedure Call&#xff0c;PRC是一种进程间通信技术&#xff0c;它使得程序可以像调用本地函数一样调用远程服务器上的函数。RPC 屏蔽了底层的通信细节&#xff0c;让开发者能够更专注于业务逻辑&#xff0c;而无需关心网络…

无限下拉菜单效果实现

无限下拉菜单效果实现 代码 <style>.nav_main{width: 600px;margin: 0 auto;}.nav ul{margin: 0;padding: 0;}.nav ul li{list-style: none;}.nav ul li a{text-decoration: none;color: #000;display: block;background: #ccc;margin: 10px 0px;padding: 10px;} i {bo…

react开发嵌入react-monaco-editor代码编辑器的方法

Next.js中使用react开发嵌入react-monaco-editor代码编辑器的方法&#xff08;支持语法高亮&#xff09; 安装 (base) PS D:\ai-ui> npm install react-monaco-editoradded 1 package, changed 1 package, and audited 1030 packages in 6s273 packages are looking for f…

qt for android 工程添加AndroidManifest.xml 文件

1.选择左边图形栏目中的Projects&#xff0c;在Build steps下的Build Android APK中Details 2.点击Create Templates&#xff0c;并勾选 此时在工程下面会多出一个文件夹android 3.将这个android的中所有文件加入工程中&#xff0c;编辑.pro 4.通过QT 图形化编辑设置属性&#…

深入理解计算机系统 CSAPP 家庭作业7.8

A:a main1 b main2 B:a 未知 b 未知 C:a 错误 b 错误

Qt客户案例 | 西门子医疗-满足最高要求的医疗软件和源代码检查的架构合规性

西门子医疗是全球领先的医疗技术公司之一&#xff0c;在70多个国家拥有约66&#xff0c;000位员工。除其他产品以外&#xff0c;他们还为诊断和治疗成像、实验室诊断和分子医学等领域提供产品。公司在全球各地的开发者设计、开发和维护这些产品的软件。为了让这个分布式团队持续…

基于 Spring Boot 的健康咨询系统

1 项目介绍 1.1 摘要 本项目旨在通过构建一个对用户更加友好的健康咨询平台&#xff0c;帮助用户方便、快捷地获取专业并且准确的健康咨询服务&#xff0c;同时为医疗机构提供一个高效易用的可以提供信息管理的服务平台。 项目采用了Spring Boot框架作为主要的开发平台。本系…

黑马苍穹外卖8 Spring Task+WebSocket 来单提醒和客户催单

Spring Task Spring提供的任务调度工具&#xff0c;按照约定时间自动执行代码。【以前的都是基于请求(http)响应的】 cron表达式 通过cron表达式可以定义任务触发时间。 cron表达式生成器 &#xff08;1&#xff09;导入spring-context &#xff08;2&#xff09;EnableSc…

IEEE-Trans系列!版面稀缺,现在投稿可加急处理,代表作神刊!

【SciencePub学术】今天小编给大家推荐一本计算机领域的SCI&#xff0c;隶属于IEEE出版社旗下&#xff0c;现已稳定检索49年&#xff01;影响因子4.0-5.0之间&#xff0c;JCR1区&#xff0c;中科院2区&#xff0c;质量口碑甚誉&#xff01; 有论文发表需求的学者可以后台联系张…

加速业务布局,30年老将加盟ATFX,掌舵运营新篇章

全球领先的差价合约经纪商ATFX日前宣布了一项重大人事任命&#xff0c;聘请业界资深人士约翰博格(John Bogue)为机构业务运营总监。约翰博格是一名行业老将&#xff0c;曾在差价合约界深耕三十余载。伴随其加入ATFX&#xff0c;相信他的深厚专业知识和从业经验将为ATFX机构业务…

视频云计算的未来发展趋势:智能化、个性化与云端协同助力智慧城市安防监控

随着信息技术的飞速发展&#xff0c;云计算作为一种全新的服务模式&#xff0c;正在改变我们处理数据和信息的方式。而视频云计算技术&#xff0c;作为云计算领域的一个重要分支&#xff0c;以其独特的优势&#xff0c;正在逐步渗透到我们生活的各个领域。 一、视频云计算技术…

祝贺:东兴朱雀桥成为一点点的NFC果汁供应商。

东兴朱雀桥进出口&#xff1a;品质之选&#xff0c;护航一点点奶茶的成长&#xff01; 据记者了解&#xff0c;该家公司是专注于进口越南特色NFC果汁&#xff1a;薇妮她VINUT人参果汁饮料的研发与生产&#xff0c;以其丰富的产品线和卓越品质&#xff0c;成为了行业内的佼佼者…