RTP载荷H265(实战细节)

文章详细解析了H264和H265协议在RTP载荷中的表示方式,特别关注了分片包的数据结构。RTP头在两种协议中使用方法相同,而H265的NALhead信息在RTP的payloadhdr和FUheader中体现。在封装RTP包时,需去除H265的起始码和NALhead信息。
摘要由CSDN通过智能技术生成

H264与H265协议详解
RTP载荷H264(实战细节)

RTP载荷H265(实战细节)

RTP包的结构:

        RTP头在 “RTP载荷H264(实战细节)”讲的很清楚了,不了解的可以从上面链接进入查看,H265中RTP头的使用方法和H264一样,下面直接说下RTP载荷H265的载荷结构,及与载荷H264的区别:

RTP载荷H265

        载荷和H264的载荷方式是一样的,根据帧数据的大小分为:单包,分片包,聚合包。具体的解释请参考“RTP载荷H264(实战细节)”。

        载荷H265和载荷H264的单包,聚合包都是一样的,但是分片包有所区别,下面说一下载荷H265的分片包数据结构:

       

其中payloadhdr的结构如下:


|0|1|2|3|4|5|6|7|0|1|2|3|4|5|6|7|
|F|   Type      |  LayerId   | TID |

        H265封装为RTP包的时候Type=49, F layerid TID都和H265 NAL head的F layerid TID相同,H265 NAL head结构如下具体的H264 H265协议参考上面的链接博客:

       

nal_unit_head{
    forbidden_zero_bit(1bit):    禁止位 == F
    nal_unit_type(6bit):        NALU类型
    nuh_reserved_zero_6bits(6bit): == layerid
    nuh_temporal_id_plis1(3bit): == TID
};

可以看出NAL head的结构和RTP载荷的payloadhdr是一样的,除了Type。

FU header结构如下:

|0 |1|2|3|4|5|6|7|

|S|E| FuType   |

S:第一个RTP分片包该位置1,其他置0;

E:最后一个RTP分片该位置1,其他置0;

FuType:与NAL head的6bitNALU 类型是一样的。

有此可知,H265的NAL head信息已经分别保存在了RTP的payloadhdr和 FU header中所以在封装RTP包时去除掉H265的起始码和NAL head信息:

H265数据:

00 00 00 01 0c 64 XX XX XX XX........

封装RTP包后:

RTP头 payloadhdr FU header XX XX XX XX......(去掉了起始码(00 00 00 01)和NAL head( 0c 64))

DONL字段平时的用法中可以不进行填充封装。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迷茫的蜉蝣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值