SDP中H264 RTP Payload各项参数含义

仅个人理解,如有错误之处,还请指正。

SDP中H264的参数很多,仅介绍总结实际产品中常用到的几个。下面是实际使用中常见的H264参数:

a=fmtp:108 profile-level-id=420014;packetization-mode=1;max-mbps=108000;max-fs=3600;max-fps=3000;max-br=1500;max-dpb=891;level-asymmetry-allowed=1

1.profile-level-id:

profile-level-id是16进制表示的3个字节的整数,按顺序分成3个字节,每个字节分别表示不同的含义。

  • profile_idc
  • profile-iop: 前6位分别是constraint_set0_flag, constraint_set1_flag, constraint_set2_flag, constraint_set3_flag, constraint_set4_flag, constraint_set5_flag, 最后两位为保留位
  • level_idc

接收端默认支持哪种sub-profile由profile_idc和profile-iop中的几个bit共同决定。如下表:

Profileprofile_idc (16进制)profile-iop (2进制)
CB42 (B)x1xx0000
CB4D (M)1xxx0000
CB58 (E)11xx0000
B42 (B)x0xx0000
B58 (E)10xx0000
M4D (M)0x0x0000
E5800xx0000
H6400000000
H106E00000000
H427A00000000
H44F400000000
H10I6E00010000
H42I7A00010000
H44IF400010000
C44I2C00010000

具体profile的名字含义如下:

CB: Constrained Baseline profile,
B: Baseline profile,
M: Main profile,
E: Extended profile,
H: High profile,
H10: High 10 profile,
H42: High 4:2:2 profile,
H44: High 4:4:4 Predictive profile,
H10I: High 10 Intra profile,
H42I: High 4:2:2 Intra profile,
H44I: High 4:4:4 Intra profile,
C44I: CAVLC 4:4:4 Intra profile

因此可以判断出例子中4200代表Baseline profile

level_idc表示level的数值,例子中0x14 == 20,也就是Level 2.0。如果是31,那就是Level 3.1。H264 level表格参考:https://en.wikipedia.org/wiki/Advanced_Video_Coding#Levels


2.packetization-mode:

packetization-mode表示图像数据包分拆发送的方式。

  • 0: Single NAL (Network Abstraction Layer),每帧图像数据全部放在一个NAL单元传送;
  • 1: Not Interleaved,每帧图像数据被拆放到多个NAL单元传送,这些NAL单元传送的顺序是按照解码的顺序发送;
  • 2: Interleaved,每帧图像数据被拆放到多个NAL单元传送,但是这些NAL单元传送的顺序可以不按照解码的顺序发送

实际上,只有I帧可以被拆分发送,P帧和B帧都不能被拆分发送。所以如果packetization-mode=1,则意味着I帧会被拆分发送。


3.max-mbps:

max-mbps表示每秒钟能处理的最大宏块数量。

4.max-fs:

max-fs表示接收端能够解码的一帧图像的最大尺寸,这个尺寸用这帧图像包含的宏块数来量化,即max-fs的数值。720p的max-fs典型值是3600, 1080p的max-fs典型值是8100。

5.max-fps:

max-fps表示接收端能够处理的最大帧率。如果发送端发送的帧率高于接收端设置的值,那么接受端会在解码后丢掉多余的帧。但是如果解码说可以支持1080p@30fps,其实它也是可以支持720p@60fps的。所以可以通过设置max-fps来提高处理的效率。

6.max-br:

max-br表示最大比特率,对VCL HRD参数是以1000bit为单位,对NAL HRD参数是以1200bit为单位。例子中max-br=1500,表示VCL HRD参数的最大比特率是1500 kbits/s,NAL HRD参数的最大比特率是1800 kbits/s。

7.max-dpb:

max-dpb(decoded picture buffer)表示用来存储解码后图像的buffer的最大尺寸。

8.level-asymmetry-allowed:

level-asymmetry-allowed表示是否允许两端编码的Level不一致。注意必须两端的SDP中该值都为1才生效。


max-mbps,max-fs,max-fps,max-br和max-dpb这几个数值必须大于profile-level-id所指定的值,比如说level-id是Level 3.1,那么3.1规定的最大fs是3600,那么SDP中的max-fs必须要大于3600。但是如果真的按max-fs去编码,那你的帧率就要比profile-level-id规定的帧率要低。总之就是一个参数比规定的高,那其他方面参数就要比规定的要低,以此来平衡。


参考资料:
1.https://tools.ietf.org/html/rfc6184#ref-1
2.https://tools.ietf.org/html/draft-kristensen-avt-rtp-h241param-01
3.https://en.wikipedia.org/wiki/Advanced_Video_Coding#Levels
4.https://www.jianshu.com/p/57fad483d2d1
5.https://stackoverflow.com/questions/1957427/detect-mpeg4-h264-i-frame-idr-in-rtp-stream
6.https://www.dialogic.com/webhelp/BorderNet2020/2.2.0/WebHelp/h264codec.htm#Packetization%20Mode

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值