RTP/RTCP协议介绍

 

1流媒体协议

       当前在Internet上传输音频和视频等信息主要有两种方式:下载和流式传输。

下载情况下,用户需要先下载整个媒体文件到本地,然后才能播放媒体文件。流式传输是指传输之前首先对多媒体进行预处理(降低质量和高效压缩),然后使用缓存系统来保证数据连续正确地进行传输。使用流式传输可以边下载边观看流媒体节目,可以实现网上直播、视频会议等。

目前,支持流媒体传输的协议主要有:实时传输协议RTP、实时传输控制协议RTCP和实时流协议RTSP(Real-time Streaming Protocol) 等,此类协议在IP/TCP协议中的位置如图1所示。


图1流媒体协议在IP/TCP协议中的位置

2 RTP/RTCP协议

       RTP协议是IEIF提出的标准,对应的RFC文档为RFC3550。如图1所示,RTP 为实时应用提供端到端的数据运输,但不提供任何服务质量的保证,服务质量由RTCP来提供。从应用开发者的角度看,RTP 应当是应用层的一部分。在应用的发送端,开发者必须编写用 RTP 封装分组的程序代码,然后把 RTP 分组交给 UDP 插口接口。在接收端,RTP 分组通过 UDP 插口接口进入应用层后,还要利用开发者编写的程序代码从 RTP 分组中把应用数据块提取出来。

       RTP的工作机制为:当应用程序建立一个RTP会话时,应用程序将确定一对目的传输地址。目的传输地址由一个网络地址和一对端口组成,有两个端口:一个给RTP包,一个给RTCP包,使得RTP/RTCP数据能够正确发送。RTP数据发向偶数的UDP端口,而对应的控制信号RTCP数据发向相邻的奇数UDP端口(偶数的UDP端口+1),这样就构成一个UDP端口对。 RTP的发送过程如下,接收过程则相反。

       1) RTP协议从上层接收流媒体信息码流(如H.263),封装成RTP数据包;RTCP从上层接收控制信息,封装成RTCP控制包。

       2) RTP将RTP 数据包发往UDP端口对中偶数端口;RTCP将RTCP控制包发往UDP端口对中的奇数端口。

       RTP分组只包含RTP数据,而控制是由RTCP协议提供。RTP在1025到65535之间选择一个未使用的偶数UDP端口号,而在同一次会话中的RTCP则使用下一个奇数UDP端口号。端口号5004和5005分别用作RTP和RTCP的默认端口号。RTP分组的首部格式如图2所示,其中前12个字节是必须的。


图2RTP分组的首部格式

       RTCP 协议的主要功能是:服务质量的监视与反馈、媒体间的同步,以及多播组中成员的标识。RTCP 分组也使用 UDP 传送,但 RTCP 并不对声音或视像分组进行封装。可将多个 RTCP 分组封装在一个 UDP 用户数据报中。RTCP 分组周期性地在网上传送,它带有发送端和接收端对服务质量的统计信息报告。

       RTCP包含五种分组类型

1)结束分组 BYE 表示关闭一个数据流。

2)特定应用分组 APP 使应用程序能够定义新的分组类型。

3)接收端报告分组 RR 用来使接收端周期性地向所有的点用多播方式进行报告。

4)发送端报告分组 SR 用来使发送端周期性地向所有接收端用多播方式进行报告。

5)源点描述分组 SDES 给出会话中参加者的描述。

 

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

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

相关文章

推荐一款软件(作业)

在过去,每当我遇见不认识的英文单词时我的解决方法是:查阅英汉词典,后来在我拥有手机之后,我的解决方法是:上网百度,而现在我的解决方法是:“有道翻译官”。是的,我要介绍的这款软件便是“有道翻…

网易有道最新力作 有道词典笔3 结构拆解

2020年12月1日,有道品牌推出了一款硬件新品,名叫有道词典笔3。 网易有道于2019年8月推出可以“一扫查词”的有道词典笔2代,搭载了OCR(光学字符识别)技术的产品,大大改变了传统的学习方式,查词效…

DataGridView动态添加新行的两种方法

简单介绍如何为DataGridView控件动态添加新行的两种方 法: 方法一: int indexthis.dataGridView1.Rows.Add();this.dataGridView1.Rows[index].Cells[0].Value "1"; this.dataGridView1.Rows[index].Cells[1].Value "2"; this.dat…

使用glew和glad 新建窗口

一、添加头文件 首先&#xff0c;将头文件加到项目的.cpp文件中 1 #include <glad/glad.h> 2 #include <GLFW/glfw3.h> 注&#xff1a; 包含glad的头文件一定要在包含glfw的头文件之前使用。因为glad的头文件包含了正确的openGL头文件&#xff08;例如GL/gl.h&…

有道词典笔3新增功能扫读和点读是怎么集成的?

2020年12月1日&#xff0c;有道品牌推出了一款硬件新品&#xff0c;名叫有道词典笔3。 相对有道于2019年8月推出后来被称为“爆品”的有道词典笔2来说&#xff0c;有道3硬件最大最明显差别是屏幕变的更大了&#xff0c;同时增加了点读功能&#xff08;点读笔点读特定教材的功能…

RTP协议分析

RTP协议分析 一&#xff0e; RTP协议背景.......................................................................................................... 1 二&#xff0e; RTP协议原理及工作机制........................................................................…

mongodb 部署

安装mongodb-3.4 1&#xff09;将安装包上传至服务器 2&#xff09;对压缩文件进行解压 tar -zxvf mongodb-linux-x86_64-suse12-v3.4-latest.tar.gz 3&#xff09;把解压出来的文件修改一下名字&#xff0c;并挪到指定安装路径 sudo mv mongodb-linux-x86_64-suse12-3.4.6-22-…

如何选择一款优秀的儿童读写台灯?

如何选择一款优秀的儿童阅读台灯&#xff1f;除了品牌、外观、材质、价格等因素外&#xff0c;最关键的是技术参数。 先说结论&#xff0c;满足如下几点参数&#xff0c;当数优选&#xff1a; 1-光通量&#xff1a;500lm以上 2-显色指数&#xff1a;≥95 3-色温&#xff1a…

Python与操作系统有关的模块

Os模块Python的标准库中的os模块主要涉及普遍的操作系统功能。可以在Linux和Windows下运行&#xff0c;与平台无关。os.sep 可以取代操作系统特定的路径分割符。os.name字符串指示你正在使用的平台。比如对于Windows&#xff0c;它是’nt’&#xff0c;而对于Linux/Unix用户&am…

数据对拍代码 c++

码了一晚上才码出这个&#xff0c;有点简陋&#xff0c;待更新 注意&#xff1a;1、数据路径自己在代码中修改&#xff0c;直接重定向即可 2、要配置好环境&#xff0c;将cb安装路径里的MinGW\bin路径放到path中 3、三份代码记得先编译一遍&#xff0c;再运行这份代码 #include…

LCD显示相关知识

无论是笔记本电脑还是桌面系统&#xff0c;采用的LCD显示屏都是由不同部分组成的分层结构。位于最后面的一层是由荧光物质组成的可以发射光线的背光层。背光层发出的光线在穿过第一层偏振过滤层之后进入包含成千上万水晶液滴的液晶层。液晶层中的水晶液滴都被包含在细小的单元格…

屏幕防蓝光设计方向

屏幕防蓝光设计方向&#xff0c;会有哪些呢&#xff1f; 初步想到的如下&#xff1a; 1- 背光灯珠类型&#xff1b; 蓝光激发还是全光谱sunlike灯珠&#xff1b; 2-玻璃镀膜&#xff1b; 3-屏幕贴膜&#xff1b; 4-软件设置&#xff1b; 除了第一项外&#xff0c;其余均多…

快速幂,矩阵乘法,矩阵快速幂

快速幂利用二进制 复杂度 log级 #include <cstdio> #include <iostream> #include <string> #include <bits/stdc.h>using namespace std; typedef long long ll; typedef unsigned long long ull;int q_power(int a,int b,int c) {int r1;a%c;while (…

标准C++类std::string的内存共享和Copy-On-Write(写时拷贝)

标准C&#xff0b;&#xff0b;类std::string的内存共享&#xff0c;值得体会&#xff1a; 详见大牛&#xff1a;https://www.douban.com/group/topic/19621165/ 顾名思义&#xff0c;内存共享&#xff0c;就是两个乃至更多的对象&#xff0c;共同使用一块内存&#xff1b; 1.关…

常用类一一枚举类一一定义和调用

package test;public class EnumTest {/**枚举* */public static void main(String[] args) {// TODO Auto-generated method stubStudent stu new Student();stu.setName("李华");stu.setSex(Genders.MALE);stu.setAge(24);System.out.println(stu.getSex());}} pa…

HDbaseT 高清传输更简单——只需一根网线

HDbaseT支持最高20Gbps的传输速率&#xff0c;能更好的支持未来的3D和2K4K视频格式&#xff0c;传输采用普通的CAT5e/6网络线缆&#xff0c;连接器也采用普通的 RJ45接头&#xff0c;而传输距离达到了100米&#xff0c;除了提供视频信号传输功能外&#xff0c;还具有网络连接以…

2017年

2017年对自己来说这一年是最需要成长的一年&#xff0c;肩上的责任越来越大了。转载于:https://www.cnblogs.com/jimmy1293/p/6543533.html

解决 | 此数据库文件跟当前sql server实例不兼容 sql server2008无法连接到(local)...

最近在搞ASP.NET&#xff0c;因实验室VS版本跟PC不一样可能&#xff0c;拷回来一打开就这样子&#xff1a; 眉头一皱的我打开我的古董SQL&#xff0c;自从用了MySQL就没碰它了我的锅。。。果然。。连接的时候。。。不慌&#xff0c;(win 10)打开控制面板\系统和安全\管理工具 -…

IP大时代下,网络枪机技术发展现状

来源&#xff1a;a&s《评测&选型》 作者&#xff1a;海康威视程玮 在视频监控行业内&#xff0c;有很多里程碑式的产品&#xff0c;我们可以从这些产品中了解视频监控的发展趋势。2000年左右&#xff0c;第一台DVR面世奠定了视频监控行业从CCTV走向数字化的基础&#x…

JVM调优总结(3):垃圾回收面临的问题

如何区分垃圾 上面说到的“引用计数”法&#xff0c;通过统计控制生成对象和删除对象时的引用数来判断。垃圾回收程序收集计数为0的对象即可。但是这种方法无法解决循环引用。所以&#xff0c;后来实现的垃圾判断算法中&#xff0c;都是从程序运行的根节点出发&#xff0c;遍历…