RTP承载H264视频报文解析

  在做网络通信协议解析的时候,经常会涉及到音视频多媒体,相关的协议栈有SIP/SDP/RTP,SDP主要是媒体协商,比如音视频的格式、承载的协议端口号等参数,RTP是实时传输协议,承载音视频的具体内容,本文主要就是针对RTP承载H264视频进行简单的分析和说明(不是专业搞音视频编解码的)

    其实对于RTP承载H264视频的具体格式,网上也有好多相关的资料,官方文档可参考RFC6184,里面有详细的说明

    H264协议也有官方的标准文档,里面有对NALU的详细解释(常见的有SPS、PPS、IDR帧、P帧)

    我主要介绍这几种模式的解析:单一模式、组合模式(STAP-A)、分片模式(FU-A)

单一模式是最简单的,每个RTP包里面承载的就是一个独立的NALU,第一个字节是NALU Header,比如0x67表示的就是SPS,0x68表示的是PPS,0x65表示的则是IDR帧 ,RTP的负载可以直接提取出来,因为这就是一个独立的NALU,可以在前面添加起始码(0x00000001),这样就可以存储为h264视频文件格式

组合模式就是RTP报文里面承载的是多个NALU,解析的时候需要依次解析每个NALU,因为前面会有固定两个字节的长度表示,这样循环解析就会算出NALU的个数,内容提取也就不会有问题了

分片模式是指一个NALU的内容比较多,一个RTP报文不能完全存储,所以需要分成好几个片段;解析的时候可以根据前面的两个字节头进行判断,具体标志位是第二个字节的高两位的bit位,起始片和结束片都有对应的指示,这样我们就知道整个NALU总共有几个片段,然后将这些片段的负载提取进行合并就生成最终的NALU

我写的这些东西,可能对于刚接触RTP/H264的朋友理解起来有点难度,但是我觉得基础的东西还是自己掌握学习的好,我说的这部分是针对RTP里面承载H264的几种报文格式,有这方面的需求的朋友可以参考一下,当然也可以跟我讨论。

对于NALU里面承载的具体内容,H264协议标准里面有对应的解析说明,用的什么编码方式、具体格式都有定义的(有需求的可以先了解下指数哥伦布编码),后面有时间再写点解码相关的内容吧,现在比较懒,不想继续写了 ^_^

 

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值