RTP 实时运输协议

目录

1 实时运输协议 RTP

1.1 RTP 的层次 

1.2 RTP 分组的首部格式

2 实时运输控制协议 RTCP

2.1 RTCP 分组


1 实时运输协议 RTP

·实时运输协议 RTP (Real-time Transport Protocol) 为实时应用提供端到端的运输,但不提供任何服务质量的保证。

·需要发送的多媒体数据块(音频/视频)经过压缩编码处理后,先送给 RTP 封装成为 RTP 分组(也可称为 RTP 报文 )。

·RTP 分组装入运输层的 UDP 用户数据报后,再向下递交给 IP 层。

·RTP 是一个协议框架,只包含了实时应用的一些共同的功能。

·RTP 不对多媒体数据块做任何处理,而只是向应用层提供一些附加的信息,让应用层知道应当如何进行处理。

1.1 RTP 的层次 

·从应用开发者的角度看,RTP 应当是应用层的一部分。

·由于 RTP 向多媒体应用程序提供了服务(如时间戳和序号),因此也可以将 RTP 看成是在 UDP 之上的一个运输层的子层。

注意

·RTP 分组只包含 RTP 数据,控制由另一个配套使用的 RTCP 协议提供。

·RTP 在端口号 1025 到 65535 之间选择一个未使用的偶数 UDP 端口号,在同一次会话中的 RTCP 则使用下一个奇数 UDP 端口号。但端口号 5004 和 5005 则分别用作 RTP 和 RTCP 的默认端口号。

1.2 RTP 分组的首部格式

·版本:占 2 位。当前使用的是版本 2。

·填充 P:占 1 位。在某些特殊情况下需要对应用数据块加密,要求每一个数据块有确定的长度。如不满足这种长度要求,就需要进行填充。这时就把 P 位置 1,表示这个 RTP 分组的数据有若干填充字节。在数据部分的最后一个字节用来表示所填充的字节数。

·扩展 X:占 1 位。X 置 1 表示在此 RTP 首部后面还有扩展首部。扩展首部很少使用。

·参与源数:占 4 位。给出后面的参与源标识符的数目。

·标记 M:占 1 位。M 置 1 表示这个 RTP 分组具有特殊意义。例如,在传送视频流时用来表示每一帧的开始。

·有效载荷类型 (payload type):占 7 位。指出后面的 RTP 数据属于何种格式的应用。收到 RTP 分组的应用层就根据此字段指出的类型进行处理。

·序号:占 16 位。对每一个发送出的 RTP 分组,其序号加 1。在一次 RTP 会话开始时的初始序号是随机选择的。序号使接收端能够发现丢失的分组,同时也能将失序的 RTP 分组重新按序排列好。

·时间戳:占 32 位。反映了 RTP 分组中数据的第一个字节的采样时刻。在一次会话开始时时间戳的初始值是随机选择的。即使在没有信号发送时,时间戳的数值也要随时间而不断地增加。接收端使用时间戳可准确知道应当在什么时间还原哪一个数据块,从而消除时延的抖动。还可以用来使视频应用中声音和图像同步。

·同步源标识符 SSRC (Synchronous SouRCe identifier):占 32 位。是一个数,用来标志 RTP 流(stream) 的来源。SSRC 与 IP 地址无关,在新的 RTP 流开始时随机地产生。有多个 RTP 流复用到一个 UDP 用户数据报中时,SSRC 可使接收端的 UDP 能够将收到的 RTP 流送到各自的终点。

·参与源标识符 CSRC (Contributing SouRCe identifier):选项,最多可有 15 个。CSRC 是一个 32 位数,用来标志来源于不同地点的 RTP 流。在多播环境中,可以用中间的一个站(叫做混合站 mixer)把发往同一个地点的多个 RTP 流混合成一个流,在目的站再根据 CSRC 的数值把不同的 RTP 流分开。

2 实时运输控制协议 RTCP

·RTCP (RTP Control Protocol) 是与 RTP 配合使用的协议,与 RTP 协议不可分割。

·主要功能:

        1.服务质量的监视与反馈;

        2.媒体间的同步;

        3.播组中成员的标识。

2.1 RTCP 分组

·RTCP 分组使用 UDP 传送,但不对音频/视频分组进行封装。

·可将多个 RTCP 分组封装在一个 UDP 用户数据报中。

·RTCP 分组周期性地在网上传送,它带有发送端和接收端对服务质量的统计信息报告。

RTCP 使用的五种分组类型

类型

缩写表示

意义

200

SR

发送端报告

201

RR

接收端报告

202

SDES

源点描述

203

BYE

结束

204

APP

特定应用

欢迎一起学习~

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Linux系统化学习】深入理解匿名管道(pipe)和命名管道(fifo)

目录 进程间通信 进程间通信目的 进程间通信的方式 管道 System V IPC(本地通信) POSIX IPC(网络通信) 管道 什么是管道 匿名管道 匿名管道的创建 匿名管道的使用 匿名管道的四种情况 匿名管道的五种特性 命名管道 …

瑞_Redis_初识Redis(含安装教程)

文章目录 1 初识Redis1.1 认识NoSQL1.1.1 结构化与非结构化1.1.2 关联和非关联1.1.3 查询方式1.1.4 事务1.1.5 总结 1.2 认识Redis1.2.1 介绍1.2.2 特征1.2.3 优势 1.3 安装Redis ★★★1.3.1 Linux安装Redis1.3.1.1 安装Redis依赖 1.3.2 Windows安装Redis1.3.2.1 安装步骤1.3.…

抛弃chatgpt,使用微软的Cursor提升coding效率

Whats Cursor? Cursor编辑器是一个基于GPT-4的代码编辑器,它可以根据用户的自然语言指令或者正在编辑的代码上下文为用户提供代码建议,支持多种编程语言,如Python、Java、C/C#、go等。Cursor编辑器还可以帮助用户重构、理解和优化代码&…

Code Control Process

代码提交流程(Code Control Process) VSS,早前定义的版本控制,没有谁对不对,但是要根本解决冲突,特别人多的时候,50个人的时候,处理冲突时非常的麻烦的,改半天还改错了&…

vulfocus靶场搭建

vulfocus靶场搭建 什么是vulfocus搭建教程靶场配置场景靶场编排靶场优化 什么是vulfocus Vulfocus 是一个漏洞集成平台,将漏洞环境 docker 镜像,放入即可使用,开箱即用,我们可以通过搭建该靶场,简单方便地复现一些框架…

Java面试题之分布式/微服务篇

经济依旧不景气啊,如此大环境下Java还是这么卷,又是一年一次的金三银四。 兄弟们,你准备好了吗?冲冲冲!欧里给! 分布式/微服务相关面试题解 题一:CAP理论,BASE理论题二:…

企业电子招投标系统源码之电子招投标系统建设的重点和未来趋势

功能描述 1、门户管理:所有用户可在门户页面查看所有的公告信息及相关的通知信息。主要板块包含:招标公告、非招标公告、系统通知、政策法规。 2、立项管理:企业用户可对需要采购的项目进行立项申请,并提交审批,查看所…

如何使用Docker部署MongoDB并结合内网穿透实现远程访问本地数据库

文章目录 前言1. 安装Docker2. 使用Docker拉取MongoDB镜像3. 创建并启动MongoDB容器4. 本地连接测试5. 公网远程访问本地MongoDB容器5.1 内网穿透工具安装5.2 创建远程连接公网地址5.3 使用固定TCP地址远程访问 正文开始前给大家推荐个网站,前些天发现了一个巨牛的 …

SICTF Round#3 の WP

Misc 签到 SICTF{1f4ce05a-0fed-42dc-9510-6e76dff8ff53} Crypto [签到]Vigenere 附件内容: Gn taj xirly gf Fxgjuakd, oe igywnd mt tegbs mnrxxlrivywd sngearbsw wakksre. Bs kpimj gf tank, it bx gur bslenmngn th jfdetagur mt ceei yze Ugnled Lystel t…

mysql 2-22

变量 查看系统变量 修改 用户变量 赋值 定义处理程序 流程控制 IF CASE LOOP语句 WHILE循环 REPEAT leave ITERATE 游标 使用步骤 全局系统变量持久化 触发器 查看触发器 优点 MYSQL8的新特性 移除的旧特性 窗口函数 公用表表达式 JDBC 存储引擎 MYISAM存储引擎 InnoDB存储引擎…

跟着pink老师前端入门教程(JavaScript)-day05

六、语句 (一)表达式和语句 1、表达式 表达式是可以被求值的代码,JavaScript 引擎会将其计算出一个结果。 2、语句 语句是一段可以执行的代码。 比如: prompt() 可以弹出一个输入框,还有 if语句 for 循环语句等…

npm run serve启动报错npm ERR! Missing script: “serve“

启动项目的时候用npm run serve发现报了以下的错误 解决方法: 1.一般情况下,这个问题是因为package.json文件里面确实没有 这里没有可能因为你的脚手架版本比较低,如果不想换,可以用 这里面有的 npm run dev去启动也是可以的 n…

ubuntu20.04安装实时内核补丁PREEMPT_RT

参考: Ubuntu 18.04安装 RT-PREEMPT 实时内核及补丁【过程记录】_ubuntu18.04 preempt rt linux 5.6.19-CSDN博客 https://github.com/UniversalRobots/Universal_Robots_ROS_Driver/blob/master/ur_robot_driver/doc/real_time.md当前内核:5.15.0-94-ge…

前端基础自学整理|DOM树

DOM,文档对象模型(Document Object Model),简单的说,DOM是一种理念,一种思想,一个与系统平台和编程语言无关的接口,一种方法, 使 Web开发人员可以访问HTML元素!不是具体方…

LLM之RAG实战(二十七)| 如何评估RAG系统

有没有想过今天的一些应用程序是如何看起来几乎神奇地智能的?这种魔力很大一部分来自于一种叫做RAG和LLM的东西。把RAG(Retrieval Augmented Generation)想象成人工智能世界里聪明的书呆子,它会挖掘大量信息,准确地找到…

GitLab私有Git

GitLab私有Git 1 GitLab简介 GitLab是整个DevOps生命周期的第一个单一应用程序。只有GitLab才能启用Concurrent DevOps,从组件链的约束中解锁组织。GitLab提供无与伦比的可见性,更高的效率和全面的治理。这使得软件生命周期加快了200%&…

Flutter插件开发指南01: 通道Channel的编写与实现

Flutter插件开发指南01: 通道Channel的编写与实现 视频 https://www.bilibili.com/video/BV1ih4y1E7E3/ 前言 本文将会通过一个加法计算,来实现 Channel 的双向通讯,让大家有个一个体会。 Flutter插件 Flutter插件是Flutter应用程序与原生平台之间的桥…

转转交易猫自带客服多模板全开源完整定制版源码

源码获取方式 搜一搜:万能工具箱合集 点击资源库直接进去获取源码即可 如果没看到就是待更新,会陆续更新上 或 源码软件库 软件介绍 商品发布;请在后台商品添加成功后,再点击该商品管理,可重新编辑当前商品的所有信息…

网络安全“降本增笑”的三大帮手

在网络安全这个快速变化和危机四伏的领域中,通过使用正确的工具和方法,我们可以在工作中取得更高的效率,并降低相关成本。 雷池社区版 雷池社区版—开源Web应用防火墙。这款产品凭借强大的规则引擎,它允许用户自定义安全策略&…

【C++精简版回顾】5.字符串

1.字符串的四种初始化方式 string str "ilove"; string str1("ilove"); string str2(str1); string str3 str1; 2.针对字符串的一些函数 &#xff08;1&#xff09;字符串长度 cout<<str.length()<<endl;&#xff08;2&#xff09;查找字…