RTP
协议
RTP
协议
实时传输协议
RTP
提供了实时信息的端对端传输业务
,
如交互的语音和图象
;
这些业务包括负载类型识别
,
序列编号
,
加入时间标志
,
传输监视
.
典型的应用是在
UDP
层上传输
RTP
包
,
以利用它的复用和总和检测业务
.
RTP
包括两个紧密相关的部分
:
-
实时传输协议
(RTP),
传输有实时特性的信息
;
- RTP
控制协议
(RTCP),
监视业务质量和传输对话中成员的信息
.
RTP
包头
RTP
头有以下格式
:
0 1 2 3
0 1 23 4 5 6 7 89 0 1 2 3 45 6 7 8 90 1 2 34 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X| CC |M| PT |
序列号
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
时间标志
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
同步源
(SSRC)
识别符
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
有贡献源
(CSRC)
识别符
|
| ... ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
RTP
包头格式
前
12
个字节出现在每个
RTP
包中
,
仅仅在被混合器插入时
,
才出现
CSRC
识别符列表
.
这些域有以下意义
:
版本
(V):2
比特
此域定义了
RTP
的版本
.
此协议定义的版本是
2.(
值
1
被
RTP
草案版本使用
,
值
0
用在最初
"vat"
语音工具使用的协议中
.)
填料
(P):1
比特
若填料比特被设置
,
此包包含一到多个附加在末端的填充比特
,
不是负载的一部分
.
填料的最后一个字节包含可以忽略多少个填充比特
.
填料可能用于某些具有固定长度的加密算法
,
或者在底层数据单元中传输多个
RTP
包
.
扩展
(X):1
比特
若设置扩展比特
,
固定头
(
仅
)
后面跟随一个头扩展
.
CSRC
计数
(CC):4
比特
CSRC
计数包含了跟在固定头后面
CSRC
识别符的数目
.
标志
(M):1
比特
标志的解释由具体协议规定
.
它用来允许在比特流中标记重要的事件
,
如帧范围
.
规定该标志在静音后的第一个语音包时置位
.
负载类型
(PT):7
比特
此域定义了负载的格式
,
由具体应用决定其解释
.
协议可以规定负载类型码和负载格式之间一个默认的匹配
.
其他的负载类型码可以通过非
RTP
方法动态定义
.RTP
发射机在任意给定时间发出一个单独的
RTP
负载类型
;
此域不用来复用不同的媒体流
.
序列号
:16
比特
每发送一个
RTP
数据包
,
序列号加一
,
接收机可以据此检测包损和重建包序列
.
序列号的初始值是随机的
(
不可预测
),
以使即便在源本身不加密时
(
有时包要通过翻译器
,
它会这样做
),
对加密算法泛知的普通文本攻击也会更加困难
.
时间标志
:32
比特
时间标志反映了
RTP
数据包中第一个比特的抽样瞬间
.
抽样瞬间必须由随时间单调和线形增长的时钟得到
,
以进行同步和抖动计算
.
时钟的分辨率必须满足要求的同步准确度
,
足以进行包到达抖动测量
.
时钟频率与作为负载传输的数据格式独立
,
在协议中或定义此格式的负载类型说明中静态定义
,
也可以在通过非
RTP
方法定义的负载格式中动态说明
.
若
RTP
包周期性生成
,
可以使用由抽样时钟确定的额定抽样瞬间
,
而不是读系统时钟
.
例如
,
对于固定速率语音
,
时间标志钟可以每个抽样周期加
1.
若语音设备从输入设备读取覆盖
160
个抽样周期的数据块
,
对于每个这样的数据块
,
时间标志增加
160,
无论此块被发送还是被静音压缩
.
时间标志的起始值是随机的
,
如同序列号
.
多个连续的
RTP
包可能由同样的时间标志
,
若他们在逻辑上同时产生
.
如属于同一个图象帧
.
若数据没有按照抽样的
顺序发送
,
连续的
RTP
包可以包含不单调的时间标志
,
如
MPEG
交织图象帧
.
SSRC:32
比特
SSRC
域用以识别同步源
.
标识符被随机生成
,
以使在同一个
RTP
会话期中没有任何两个同步源有相同的
SSRC
识别符
.
尽管多个源选择同一个
SSRC
识别符的概率很低
,
所有
RTP
实现工具都必须准备检测和解决冲突
.
若一个源改变本身的源传输地址
,
必须选择新的
SSRC
识别符
,
以避免被当作一个环路源
.
CSRC
列表
:0
到
15
项
,
每项
32
比特
CSRC
列表识别在此包中负载的有贡献源
.
识别符的数目在
CC
域中给定
.
若有贡献源多于
15
个
,
仅识别
15
个
.CSRC
识别符由混合器插入
,
用有贡献源的
SSRC
识别符
.
例如语音包
,
混合产生新包的所有源的
SSRC
标识符都被陈列
,
以期在接收机处正确指示交谈者
.
RTP
头扩展
RTP
提供扩展机制以允许实现个性化
:
某些新的与负载格式独立的功能要求的附加信息在
RTP
数据数据包头中传输
.
设计此方法可以使其它没有扩展的交互运行忽略此头扩展
.RTP
头扩展的格式如下图所示
.
0 1 2 3
0 1 2 34 5 6 78 9 0 1 2 3 4 56 7 8 90 1 23 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
由协议定义
|
长度
|
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
头扩展
|
| ... ... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
若
RTP
头中的扩展比特位置
1,
则一个长度可变的头扩展部分被加到
RTP
固定头之后
,.
头扩展包含
16
比特的长度域
,
指示扩展项中
32
比特字的个数
,
不包括
4
个字节扩展头
(
因此零是有效值
).RTP
固定头之后只允许有一个头扩展
.
为允许多个互操作实现独立生成不同的头扩展
,
或某种特定实现有多种不同的头扩展
,
扩展项的前
16
比特用以识别标识符或参数
.
这
16
比特的格式由具体实现的上层协议定义
.
基本的
RTP
说明并不定义任何头扩展本身
.
分享到:
相关推荐
本文正是在这样的前提下,对视频数据传输技术和网络协议进行深入研究的基础上,研究了基于RTP协议的远程视频监控系统中数据传输技术。论文首先在对各个视频压缩技术进行比较后,选择H.263视频图像压缩编码标准为本...
很好学习rtsp、rtp协议以及其状态机的PPT文档
关于RTP协议的经典教材 做通讯软件必备助手 英文版,还是原版好啊
RTP协议分析非扫描版 RTCP协议原理 RTP数据包格式 时间戳 多种流同步控制
RTP协议,中文版,方便大家熟悉RTP协议
用java实现rtp协议的客户端程序。并实现视频播放
rtp协议中文版.pdf
基于RTP协议的实时语音传输性能优化研究
RTP协议中文详尽版,易于理解、易于使用,网络开发的实用参考手册
资源包括rtp协议vc中的传输,接受,初始化的信息,总共包括四个代码
rtp协议 下载 linux windows android 内涵C源码和java源码 可以自行编译生成需要的库或者直接使用源码导入到自己的工程中
基于RTP协议的视频流媒体实时传输,是一篇很好的论文
linux+QT下基于RTP协议的实时视频传输客户端和服务端,使用JRTPLIB库,客户端能够主动的发现在线的服务器,服务器也能够知道那些客户端需要视频流。服务器加入了opencv的人脸识别
RTP协议介绍,VoIP语音使用的IP技术,承载语音,供VOIP设计参考
这是一个基于rtp协议的简单的程序,编译环境为vs2008,可以运行
使用java实现的rtp协议栈,网上下载的是源码,我编译后打包,方便大家开发使用!
一个rtp 协议打报接报的DEMO ,C 语言实现。
RTP协议分析
RTP协议在嵌入式网络摄像机中的设计及实现.pdf 讲述RTP应用结构