RTP介绍

一、简介

Real-time Transport Protocol(实时传输协议)  具体参考rfc3350介绍 

可负载H264、H265、G711A、AAC、PS、私有流等各种数据。

二、格式

RTP 固定头部格式如下

  

 

version   (V):  2bits RTP协议版本号 目前协议版本为2

padding (P):  1bit  填充位  设置成1,表示尾部有填充数据。最后一个字节表示 填充数据长度

extension (X): 1bit  扩展位,设置成1,表示固定头部后面有扩展头

CSRC count (CC): 4bits CSRC个数, 每个CSRC占4字节

marker (M): 1bit  不同的有效载荷有不同的含义,对于视频,标记一帧的结束;对于音频,标记会话的开始。

payload type (PT): 7bits 负载类型  可参考rfc35511 目前视频主要用96后表示

sequence number: 16bits 包序号 用于标识发送者所发送的RTP报文的序列号,每发送一个报文,序列号增1。接收者通过序列号来检测报文丢失情况,重新排序报文,恢复数据。

timestamp: 32bits 时间戳 同一帧数据时间戳相同

SSRC: 32bits 同步信源标识符 

CSRC list: 32bits  0-15个, 每个占32bits 由CC决定个数

RTP 扩展头部格式如下

 

第3~4字节表示扩展数据长度,后面跟扩展数据。

三、负载数据

RTP负载H264

参考rfc6184 rtp负载h264

packetization-mode(打包模式)  该字段在sdp中体现。其中RTSP是在 DESCRIBE响应中携带。

0或不存在  Single NAL unit mode 单一nalu单元模式

1-Non-interleaved mode 非交织模式 目前最常见

2-Interleaved mode  交织模式 

目前RTP库支持0和1模式

Nal Unit 如下

F : 1bit 禁止位

NRI: 2bits  nal_ref_idc nal 用于指示该 nalu 的重要性

Type: 5bits  nal_unit_type

不同打包模式支持的打包方式如下:

Single NAL unit mode 支持NAL unit

Non-interleaved mode 支持NAL unit、STAP-A、FU-A(最常见)

Single NAL unit Packet(单一打包)

当一帧数据小于MTU时候,可采用该方式打包, 去掉起始头(000001) 

FU-A分片模式

当一帧长度过长时候,可选择FU-A分片模式打包, RTP负载格式如下

 

H264 Nalu头和RTP FU indicator FU header关系如下

FU-A头部由2个字节组成, FU indicator和FU header各占一个字节

FU indicator如下

 

type=28 

FU header如下

S: 1bit   分片开始描述符  1-表示开始 0-不是开始

E: 1bit  分片结束描述符  1-表示结束 0-不是结束

R: 1bit  保留位

Type:  5bits  NAL Unit type  对应H264中的nalu type。

RTP负载H265

参考rfc7798 rtp负载h265 

NAL Unit Header如下

F: 1bit 禁止位
Tyep: 6bits nal unit type

LayerId:  6bits  表示NAL所在的Access unit所属的层,该字段是为了HEVC的继续扩展设置。也就是目前都是0

TID:  3bits 指定nal单元加1的时间标识符。时间id的值等于tid-1,tid的值为0是非法的,

Single NAL unit Packet(单一打包)

PayloadHer: 负载头  从H265 NAL unit复制过来  Type值为1~47

DONL(Decoding Order Number): 解码序列号

Fragmentation Units(分片包)

H265 Nalu头和RTP FU indicator FU header关系如下

PayloadHer 中Type=49

FU header如下

    S : 1bit 分片开始描述符  1-表示开始 0-不是开始

    E:  1bit 分片结束描述符  1-表示结束 0-不是结束

    FuType: 6bits 表示Nal Unit的类型 和h265中的nal_unit_type取值相同

RTP负载通用数据

包括负载G711A, G711U, PS等数据 可直接负载

RTP负载AAC

参考rfc3640rtp负载aac

需剥掉adts头。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值