SDP中关于H264编码部分字段的解释,及RTP方式打包H264码流

下面我们先看下一次呼叫中SDP的部分信息:

m行属性信息,其中video代表视频,10012代表传输视频的rtp端口为10012,RTP/AVP中AVP代表音视频配置,后面的数字96 110 111 112 113表示不同视频编码类型(RTP传输视频时,RTP头中的payloadType), 视频发送方按照对方声明对应的编码类型的PT值来发送RTP;

b行属性表示带宽,m行下面的小b表示本通道发送码流的最大带宽,单位为kb,b的值有三种,CT:表示音频和视频的总带宽,一般在所有m行的之前声明;AS和TIAS都可以表示单股流的最大带宽,比如:带宽为512kb,使用AS和TIAS分别表示,b=AS:512,b=TIAS:512000,即使用TIAS表示带宽时,实际带宽值为TIAS值/1000 kb;

a属性字段较多,这里以a=rtpmap:112 H264/90000这行为例,rtpmap后面的数字112,表示本编码类型声明的rtp头中的paylaodType值,H264表示码流是H264编码,90000表示采样率为90000HZ(H264的采样率必须是90000HZ);

a=fmtp:112 profile-level-id=42001f;max-mbps=108000;max-fs=3600;max-br=20010;sar=13;packetization-mode=1

其中112同rtpmap中的值,rtpmap中和fmtp中的数字值相同,表示他们描述的是同一种编码类型,这里来介绍下fmtp中的几个关键值:

profile-level-id=42001f,其中0x42是profile-id的值,这里是H264 BP,0x1f是level-id的值,表示视频分辨率是720P;

max-mbps这个参数的值是一个整型, 指出了每一秒最大的宏块处理速度,其值的大小为max-fs*帧率

packetization-mode字段,先看相关RFC文档(https://www.rfc-editor.org/rfc/pdfrfc/rfc6184.txt.pdf)的描述如下:

如上描述,packetization-mode字段取不同的值,代表不同的打包模式。

RTP包payload的第一个字节跟H264的NLAU单元类似,如下图:

其中Nal_ref_idc取值00-11,指示NAL单元的重要性,值越大越重要;

Type五个比特

    nal_unit_type. 这个 NALU 单元的类型. 简述如下:
    0     没有定义
    1-23 NAL单元 单个 NAL 单元包.
    24    STAP-A   单一时间的组合包
    25    STAP-B   单一时间的组合包
    26    MTAP16   多个时间的组合包
    27    MTAP24   多个时间的组合包
    28    FU-A     分片的单元
    29    FU-B     分片的单元
    30-31 没有定义

单个 NAL 单元包,packetization-mode=0

      如果单个NALU的长度小于MTU大小的包,一般采用单一NAL模式。

      对于原始的H264 NALU数据一般由开始码startCode、NALU Header、NALU Payload三部分组成,其中startCode用于表示这是一个NALU单元的开始,必须是"00 00 00 01"或者"00 00 01"开头,在打RTP包时,需要将startCode去掉,NALU Header只有一个字节,NALU Payload,RTP中单一NALU组成示例如下:

Non-interleaved Mode:Type[1-23,24,28] packetization-mode=1

这里以一个I帧为例,如下图:

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值