RTP协议简介

news2024/11/26 11:37:00

介绍

RTP,real-time transport protocol,实时传输协议,用于传输具有实时属性的数据。RTP提供端到端的网络传输功能,适用于通过组播或单播网络服务传输实时数据(如音频、视频或仿真数据)的应用。

RTP协议层有两个子协议:RTP和RTCP。RTP负责传输音视频数据流,RTCP是RTP的控制协议,用于监控服务质量并传递正在进行的会话中参与者的信息。

RTP依赖于底层协议来提供RTP数据和RTCP控制流的传输。由于传输的数据具有实时性,通常使用UDP协议传输。RTP使用偶数作为端口号,对应的RTCP流使用下一个更高的(奇数)作为端口号。

RTP会话

一组会议的参与者之间如果要实现视频通话,需要在RTP协议层建立RTP会话。参与者通过使用不同的目标传输地址对,接收不同的会话来区分多个RTP会话,传输地址对包括一个目标IP地址加上RTP和RTCP的一对端口。

一个RTP会话中,不只有单独的RTP报文,还有RTP配合使用的单独的RTCP报文。RTP会话的显著特征是每个会话都维护一个完整的、独立的SSRC标识符,它是RTP报头里的字段:同步源标识符,它是RTP数据包的来源。

每个参与者在会议中都有一个唯一的区别与他人的SSRC。

对于多方会议而言,有两种方式实现多个参与者的会话。

一种是和网络的组播类似,所有的参与者加入同一个会话中,它们有共同的目标传输地址对:目标IP地址是组播地址,各自的RTP端口和RTCP端口相同。本质上它们加入了同一个组播,RTP使用同一个组播地址作为目的IP地址,各自的RTP端口号和RTCP端口号相同。

另一种是和网络的单播类似,所有的参与者点对点通信,创建独立的RTP会话,使用的目的IP地址是目的主机的IP,在单播情况下,一个参与者可以使用同一对端口接收会话中所有其他参与者的消息,也可以为每个参与者使用不同的一对端口。

RTP报文格式

RTP报头的格式如下:

RTP首部

前12个字节出现在每个RTP数据包中,而CSRC标识符列表只有在混合器插入时才出现。

  • version (V): 2 bits

该字段表示RTP的版本,rfc 3550规范定义RTP的版本号为2。

  • padding §: 1 bit

填充位。如果该位设置,表示RTP报文需要填充一个或多个字节,这些填充字节不属于负载的一部分。某些具有固定块大小的加密算法或在较低层协议数据单元中携带多个RTP数据包可能需要填充。

  • extension (X): 1 bit

扩展位。如果设置了扩展位,固定报头必须紧跟着一个报头扩展位。

  • CSRC count (CC): 4 bits

CSRC数量表示固定报头后面的CSRC标识符数量。

  • marker (M): 1 bit

标记位。它的目的是允许在数据包流中标记诸如帧边界之类的重要事件。它的解释由profile文件定义。

  • payload type (PT): 7 bits

该字段表示RTP payload的格式。

  • sequence number: 16 bits

每发送一个RTP数据包,序列号加1,接收方可以用它来检测数据包丢失和恢复数据包序列。序列号的初始值应该是随机的(不可预测的)。

  • timestamp: 32 bits

时间戳反映了RTP数据包中第一个字节的采样时间。采样瞬间必须来源于一个时钟,该时钟随时间单调线性递增,以允许同步和抖动计算。

  • SSRC: 32 bits

SSRC字段表示同步源。这个标识符应该随机选择,目的是在同一个RTP会话中避免两个同步源具有相同的SSRC标识符。

  • CSRC list: 0到15条,每条32 bits

CSRC列表列举出此RTP包中包含的有效负载的贡献源。CSRC列表的数量由CC字段给出。如果有超过15个贡献来源,只有15个可以被识别。CSRC标识符由混合器插入,使用贡献源的SSRC标识符。

  • RTP payload:

通过RTP传输的数据包中的数据,如音频样本或压缩视频数据。

音视频以哪种格式编码成数据流,不是由RTP协议层实现的。应用层把音视频编码成数据流后,交给RTP传输。

RTP控制协议:RTCP

RTCP (control protocol)是基于周期性地向会话的所有参与者发送控制报文的协议,采用与数据包相同的分发机制。

  1. RTCP的主要功能是接收方向发送方提供音视频质量的报告。它是RTP协议的子协议。

  2. 如果RTP源发现同步源冲突或程序发生重启,SSRC可能会更改。接收方需要持续跟踪每个参与者,RTCP为RTP源携带一个持久的传输级标识符,称为规范名称或CNAME,接收方就根据CNAME跟踪每个参与者。


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

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

相关文章

构建稳定的爬虫系统:如何选择合适的HTTP代理服务商

在构建一个稳定、高效的爬虫系统中,选择合适的HTTP代理服务商是至关重要的一步。本文将介绍如何选取可靠且性能优秀的HTTP代理服务供应商,来完成搭建一个强大而稳定的爬虫系统。 1.了解不同类型和特点 -免费公开代理服务器:提供免费但可能存在限制或不…

C++信息学奥赛1179:奖学金

#include<bits/stdc.h> using namespace std; int main(){int n;cin>>n; // 输入整数 n&#xff0c;表示数组的大小int id[n], arr[n], brr[n], crr[n]; // 创建大小为 n 的整型数组 id, arr, brr, crrfor(int i0;i<n;i) {id[i] i1; // 初始化 id 数组为 1,2,3…

使用maven创建springboot项目

创建maven快速启动项目 命令行或者idea、eclipse快捷创建也可以 pom.xml下project项目下导入springboot 父工程 <!--导入springboot 父工程--> <parent><artifactId>spring-boot-starter-parent</artifactId><groupId>org.springframework.bo…

Linux socket网络编程实战(tcp)实现双方聊天

在上节已经系统介绍了大致的流程和相关的API&#xff0c;这节就开始写代码&#xff01; 回顾上节的流程&#xff1a; 创建一个NET文件夹 来存放网络编程相关的代码&#xff1a; tcp服务端代码初步实现--上 这部分先实现服务器的连接部分的代码并进行验证 server1.c&#xff…

服务器中locked勒索病毒的原因和影响,勒索病毒解密,数据恢复

locked勒索病毒是一种流行的计算机病毒&#xff0c;它会对感染的计算机进行加密&#xff0c;并要求用户支付一定数量的赎金才能解锁。这种病毒已经存在了几年&#xff0c;对许多计算机用户造成了严重的困扰。 locked勒索病毒通常是通过电子邮件或恶意网站传播的。电子邮件中可能…

项目详细描述

目录、 一、SOC智能游戏机&#xff08;集创赛-西南赛区三等奖&#xff09; 二、AXI2AHB Bridge 三、基于FPGA智能导盲拐杖&#xff08;FPGA竞赛全国二等奖&#xff09; 三、基于FPGA的倾角监测系统 四、图像压缩核心算法 一、SOC智能游戏机&#xff08;集创赛-西南赛区三等…

vue3 页面显示中文,分页显示中文

vue3 分页默认为英文 &#xff0c;但想要中文显示 那么在App.vue中的代码为三步即可&#xff0c;引入中文&#xff0c;声明中文 &#xff0c;绑定中文&#xff1b; 1. import zhCn from element-plus/es/locale/lang/zh-cn&#xff1b; 2. let locale zhCn; 3. :locale&q…

Spring retry(一)-使用指南

一、接入 spring boot 2.7.14 spring retry 从2.0.2版本之后&#xff0c;从spring batch里剥离出来成为一个单独的工程&#xff0c;因此我们引入spring retry最新版本可以直接如下引入 <dependency><groupId>org.springframework.retry</groupId><arti…

力扣92. 局部反转链表

92. 反转链表 II 给你单链表的头指针 head 和两个整数 left 和 right &#xff0c;其中 left < right 。请你反转从位置 left 到位置 right 的链表节点&#xff0c;返回 反转后的链表 。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], left 2, right 4 输出&am…

mysql数据库备份还原-mydumper/myloader

目录 一、mydumper介绍1、 mydumper优点2、 mydumper缺点3、工作原理4、备份所生成的文件 二、 mydumper 安装1.编译安装2.直接安装 rpm 包 三、 mydumper 使用1、参数说明2、mydumper用法 四、 myloader 使用1、参数说明2、myloader用法 对比mysqldump、mysqlpump、mydumper和…

2023年9月重庆/南京/深圳CDGA/CDGP数据治理认证考试报名

据DAMA中国官方网站消息&#xff0c;2023年度第三期DAMA中国CDGA和CDGP认证考试定于2023年9月23日举行。 报名通道现已开启&#xff0c;相关事宜通知如下&#xff1a; 考试科目: 数据治理工程师(CertifiedDataGovernanceAssociate,CDGA) 数据治理专家(CertifiedDataGovernanc…

最大正方形

题目链接 最大正方形 题目描述 注意点 matrix[i][j] 为 ‘0’ 或 ‘1’ 解答思路 使用动态规划解决本题&#xff0c;任意一个格子作为正方形右下角时&#xff0c;其最大正方向面积取决于左侧&#xff0c;上方以及左上角三个格子对应的正方形边长最小值E1&#xff0c;改格子…

直播预约|哪吒汽车岳文强:OEM和Tier1如何有效对接网络安全需求

信息安全是一个防护市场。如果数字化程度低&#xff0c;数据量不够&#xff0c;对外接口少&#xff0c;攻击成本高&#xff0c;所获利益少&#xff0c;自然就没有什么攻击&#xff0c;车厂因此也不需要在防护上花费太多成本。所以此前尽管说得热闹&#xff0c;但并没有太多真实…

xml转json

XML有个坑&#xff0c;就是XML转JSON中如何把单个元素转成数组&#xff0c;导致映射到实体类时无法执行&#xff0c;问题如下 初始xml格式如下&#xff1a; <java><version>1.8</version> </java>上述转成json格式就是&#xff1a; {"java&quo…

学习记录——Efficient MOdel轻量化主干模型(iRMB、EMO)

Rethinking Mobile Block for Efficient Attention-based Models 结合 CNN 和 Transformer 的倒残差移动模块设计 ICCV-2023 实例化了一个面向移动端应用的iRMB基础模块&#xff08;Inverted Residual Mobile Block&#xff0c;倒残差移动模块&#xff09;&#xff0c;其同时具…

UI自动化面试题合集

1、什么是UI自动化测试&#xff1f; UI自动化测试是一种通过模拟用户交互并自动执行UI操作的软件测试方法。它用于验证用户界面的功能和稳定性&#xff0c;以确保在不同的操作系统、浏览器和设备上的一致性。 同时&#xff0c;在这我也准备了一份软件测试面试视频教程&#x…

怎么消除人声保留背景音乐?试试这几种简单方法

消除人声保留背景音乐可以用于许多不同的目的。例如&#xff0c;可以在视频制作中使用&#xff0c;以确保观众能够听到清晰的对话&#xff0c;而不会被其他噪音干扰。此外&#xff0c;它也可以用于音乐制作中&#xff0c;以便更好地混合和控制音频元素。教大家几种简单的提取方…

白鲸开源 DataOps 平台加速数据分析和大模型构建

作者 | 李晨 编辑 | Debra Chen 数据准备对于推动有效的自助式分析和数据科学实践至关重要。如今&#xff0c;企业大都知道基于数据的决策是成功数字化转型的关键&#xff0c;但要做出有效的决策&#xff0c;只有可信的数据才能提供帮助&#xff0c;随着数据量和数据源的多样…

【大虾送书第七期】深入浅出SSD:固态存储核心技术、原理与实战

目录 ✨写在前面 ✨内容简介 ✨作者简介 ✨名人推荐 ✨文末福利 &#x1f990;博客主页&#xff1a;大虾好吃吗的博客 &#x1f990;专栏地址&#xff1a;免费送书活动专栏地址 写在前面 近年来国家大力支持半导体行业&#xff0c;鼓励自主创新&#xff0c;中国SSD技术和产业…

Java Stream与多线程

Java Stream 1. 问题引入 学习了尚硅谷的JUC&#xff0c;周阳老师讲的商城比较价格的案例&#xff0c;自己模拟了一个多线程的demo, 多线程处理任务并且汇总结果&#xff0c;出现了疑问&#xff0c;实例代码放在下面&#xff0c;读者有兴趣的话可ctrlcv玩一玩 如下是自定义的任…