【版权申明】转载请附上出处链接
rtp包头解析
RTP固定报文字段:
字段 | 占用bit数 | 含义 |
---|---|---|
version(V) | 2 | 表示RTP 的版本号 |
padding(P) | 1 | 如果设置了填充位,则包在端处包含一个或多个附加的填充八进制,它们不是有效负载的一部分。填充的最后一个八进制包含有多少填充八进制应该被忽略,包括它本身。一些具有固定块大小的加密算法或在较低层协议数据单元中承载多个rtp分组时,可能需要填充。 |
extension(X) | 1 | 如果设置了扩展位,则固定的头必须后面紧跟着一个标头扩展,其格式在第5.3.1节中定义。 |
CSRC count (CC) | 4 | 指示CSRC 标识符的个数 |
marker (M) | 1 | 不同的有效载荷有不同的含义。对于视频,表示一帧的结束;对于音频,表示会话的开始 |
payload type (PT) | 7 | 用于说明RTP报文中有效载荷的类型,如GSM音频、JPEM图像、H264等 |
sequence number | 16 | 用于标识发送者所发送的RTP报文的序列号,每发送一个报文,序列号增1。接收者通过序列号来检测报文丢失情况,重新排序报文,恢复数据。 |
timestamp | 32 | 时戳反映了该RTP报文的第一个八位组的采样时刻。接收者使用时戳来计算延迟和延迟抖动,并进行同步控制。 |
synchronization source(SSRC) | 32 | 同步信源标识符。该标识符是随机选择的,参加同一视频会议的两个同步信源不能有相同的SSRC。 |
contributing sources(CSRC) | 32 | 特约信源标识符。每个CSRC标识符占32位,可以有0~15个。每个CSRC标识了包含在该RTP报文有效载荷中的所有特约信源。 |
- 在发送端,上层应用程序以分组形式将编码后的媒体数据传给RTP通信模块,作为RTP报文的有效载荷,RTP通信模块将根据上层应用提供的参数在有效载荷前添加RTP报头,形成RTP报文,通过Socket接口选择UDP协议发送出去。
- 在接收端,RTP通信模块通过Socket接口接收到RTP报文后,将RTP报头分离出来作相应处理,再将RTP报文的有效载荷作为数据分组传递给上层应用。
前面的12个字节是固定存在于每个rtp中,而后面的CSRC只有当混频器存在时才会被插入
- 同步信源是指产生媒体流的信源,它通过RTP报头中的一个32位数字SSRC标识符来标识,而不依赖于网络地址,接收者将根据SSRC标识符来区分不同的信源,进行RTP报文的分组。
- 特约信源是指当混合器接收到一个或多个同步信源的RTP报文后,经过混合处理产生一个新的组合RTP报文,并把混合器作为组合RTP报文的SSRC,而将原来所有的SSRC都作为CSRC传送给接收者,使接收者知道组成组合报文的各个SSRC。
考虑到在Internet这种复杂的环境中举行视频会议,RTP定义了两种中间系统:混合器(Mixer)和转换器(Translator)
在Internet上举行视频会议时,可能有少数参加者通过低速链路与使用高速网络的多数参加者相连接。为了不强制所有会议参加者都使用低带宽和低质量的数据编码,RTP允许在低带宽区域附近使用混合器作为RTP级中继器。混合器从一个或多个信源接收RTP报文,对到达的数据报文进行重新同步和重新组合,这些重组的数据流被混合成一个数据流,将数据编码转化为在低带宽上可用的类型,并通过低速链路向低带宽区域转发。为了对多个输入信源进行统一的同步,混合器在多个媒体流之间进行定时调整,产生它自己的定时同步,因此所有从混合器输出的报文都把混合器作为同步信源。为了保证接收者能够正确识别混合器处理前的原始报文发送者,混合器在RTP报头中设置了CSRC标识符队列,以标识那些产生混合报文的原始同步信源。
在Internet环境中,一些会议的参加者可能被隔离在应用级防火墙的外面,这些参加者被禁止直接使用IP组播地址进行访问,虽然他们可能是通过高速链路连接的。在这些情况下,RTP允许使用转换器作为RTP级中继器。在防火墙两端分别安装一个转换器,防火墙之外的转换器过滤所有接收到的组播报文,并通过一条安全的连接传送给防火墙之内的转换器,内部转换器将这些组播报文再转发送给内部网络中的组播组成员。
参考博文:
在使用rtp协议传输h264码流时的一些笔记:
1. 关于时间戳:
h264的时钟频率为90000hz,因此时间戳的单位为1(秒)/90000。因此当视频帧率为25fps,时间戳的间隔(或者说增量)应该为3600;如果帧率为30fps,则增量为3000。
2. 关于sps/pps的时间戳:
传输sps/pps的时间戳与关键帧的时间戳是一样的。(好像不一样可是正常的)
也可以不发送sps/pps时间戳,而在sdp文件中给定视频参数。