SEI
补充增强信息单元 :
SEI 属于 [RTP header] + 单一NAL单元模式 ,所以RTP包结构如下
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X| CC |M| PT | sequence number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| timestamp |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| synchronization source (SSRC) identifier |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| contributing source (CSRC) identifiers |
| .... |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|F|NRI| type | |
+-+-+-+-+-+-+-+-+ |
| |
| Bytes 2..n of a Single NAL unit |
| |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| :...OPTIONAL RTP padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
先看 抓到的 dump
0000 80 60 e2 1f ff 6d 85 0f c6 0a 3f ef 06 05 ff ff .`â.ÿm..Æ.?ï..ÿÿ
0010 ff 14 dc 45 e9 bd e6 d9 48 b7 96 2c d8 20 d9 23 ÿ.ÜEé½æÙH·.,Ø Ù#
0020 ee ef 78 32 36 34 20 2d 20 63 6f 72 65 20 31 34 îïx264 - core 14
0030 32 20 72 32 34 33 31 20 61 63 37 36 34 34 30 20 2 r2431 ac76440
0040 2d 20 48 2e 32 36 34 2f 4d 50 45 47 2d 34 20 41 - H.264/MPEG-4 A
0050 56 43 20 63 6f 64 65 63 20 2d 20 43 6f 70 79 6c VC codec - Copyl
0060 65 66 74 20 32 30 30 33 2d 32 30 31 34 20 2d 20 eft 2003-2014 -
0070 68 74 74 70 3a 2f 2f 77 77 77 2e 76 69 64 65 6f http://www.video
0080 6c 61 6e 2e 6f 72 67 2f 78 32 36 34 2e 68 74 6d lan.org/x264.htm
0090 6c 20 2d 20 6f 70 74 69 6f 6e 73 3a 20 63 61 62 l - options: cab
00a0 61 63 3d 31 20 72 65 66 3d 39 20 64 65 62 6c 6f ac=1 ref=9 deblo
00b0 63 6b 3d 31 3a 2d 33 3a 2d 33 20 61 6e 61 6c 79 ck=1:-3:-3 analy
00c0 73 65 3d 30 78 33 3a 30 78 31 31 33 20 6d 65 3d se=0x3:0x113 me=
00d0 68 65 78 20 73 75 62 6d 65 3d 37 20 70 73 79 3d hex subme=7 psy=
00e0 31 20 70 73 79 5f 72 64 3d 31 2e 30 30 3a 30 2e 1 psy_rd=1.00:0.
00f0 30 30 20 6d 69 78 65 64 5f 72 65 66 3d 31 20 6d 00 mixed_ref=1 m
0100 65 5f 72 61 6e 67 65 3d 31 36 20 63 68 72 6f 6d e_range=16 chrom
0110 61 5f 6d 65 3d 31 20 74 72 65 6c 6c 69 73 3d 32 a_me=1 trellis=2
0120 20 38 78 38 64 63 74 3d 31 20 63 71 6d 3d 30 20 8x8dct=1 cqm=0
0130 64 65 61 64 7a 6f 6e 65 3d 32 31 2c 31 31 20 66 deadzone=21,11 f
0140 61 73 74 5f 70 73 6b 69 70 3d 31 20 63 68 72 6f ast_pskip=1 chro
0150 6d 61 5f 71 70 5f 6f 66 66 73 65 74 3d 2d 32 20 ma_qp_offset=-2
0160 74 68 72 65 61 64 73 3d 31 32 20 6c 6f 6f 6b 61 threads=12 looka
0170 68 65 61 64 5f 74 68 72 65 61 64 73 3d 34 20 73 head_threads=4 s
0180 6c 69 63 65 64 5f 74 68 72 65 61 64 73 3d 30 20 liced_threads=0
0190 6e 72 3d 30 20 64 65 63 69 6d 61 74 65 3d 31 20 nr=0 decimate=1
01a0 69 6e 74 65 72 6c 61 63 65 64 3d 30 20 62 6c 75 interlaced=0 blu
01b0 72 61 79 5f 63 6f 6d 70 61 74 3d 30 20 63 6f 6e ray_compat=0 con
01c0 73 74 72 61 69 6e 65 64 5f 69 6e 74 72 61 3d 30 strained_intra=0
01d0 20 62 66 72 61 6d 65 73 3d 38 20 62 5f 70 79 72 bframes=8 b_pyr
01e0 61 6d 69 64 3d 32 20 62 5f 61 64 61 70 74 3d 32 amid=2 b_adapt=2
01f0 20 62 5f 62 69 61 73 3d 30 20 64 69 72 65 63 74 b_bias=0 direct
0200 3d 31 20 77 65 69 67 68 74 62 3d 31 20 6f 70 65 =1 weightb=1 ope
0210 6e 5f 67 6f 70 3d 30 20 77 65 69 67 68 74 70 3d n_gop=0 weightp=
0220 32 20 6b 65 79 69 6e 74 3d 32 34 30 20 6b 65 79 2 keyint=240 key
0230 69 6e 74 5f 6d 69 6e 3d 32 33 20 73 63 65 6e 65 int_min=23 scene
0240 63 75 74 3d 35 30 20 69 6e 74 72 61 5f 72 65 66 cut=50 intra_ref
0250 72 65 73 68 3d 30 20 72 63 5f 6c 6f 6f 6b 61 68 resh=0 rc_lookah
0260 65 61 64 3d 31 30 35 20 72 63 3d 32 70 61 73 73 ead=105 rc=2pass
0270 20 6d 62 74 72 65 65 3d 31 20 62 69 74 72 61 74 mbtree=1 bitrat
0280 65 3d 31 37 30 35 20 72 61 74 65 74 6f 6c 3d 39 e=1705 ratetol=9
0290 35 2e 30 20 71 63 6f 6d 70 3d 30 2e 35 30 20 71 5.0 qcomp=0.50 q
02a0 70 6d 69 6e 3d 30 20 71 70 6d 61 78 3d 36 39 20 pmin=0 qpmax=69
02b0 71 70 73 74 65 70 3d 35 20 63 70 6c 78 62 6c 75 qpstep=5 cplxblu
02c0 72 3d 32 30 2e 30 20 71 62 6c 75 72 3d 30 2e 35 r=20.0 qblur=0.5
02d0 20 76 62 76 5f 6d 61 78 72 61 74 65 3d 36 32 35 vbv_maxrate=625
02e0 30 30 20 76 62 76 5f 62 75 66 73 69 7a 65 3d 35 00 vbv_bufsize=5
02f0 30 30 30 30 20 6e 61 6c 5f 68 72 64 3d 6e 6f 6e 0000 nal_hrd=non
0300 65 20 66 69 6c 6c 65 72 3d 30 20 69 70 5f 72 61 e filler=0 ip_ra
0310 74 69 6f 3d 31 2e 34 30 20 61 71 3d 31 3a 30 2e tio=1.40 aq=1:0.
0320 37 30 00 80 70..
在上面12个byte是 [RTP Header] 对应的码流 和PPS \SPS一样的RTP Header
80 60 e2 1f
ff 6d 85 0f
c6 0a 3f ef
====>转化 二进制
1000 0000 0110 0000 1110 0010 0001 1111 v=2 p=0 x=0 CC=0 M=0 PT=96 SN=57887
1111 1111 0110 1101 1000 0101 0000 1111 timestamp
1100 0110 0000 1010 0011 1111 1110 1111 ssrc
对应wireshark 解析
Real-Time Transport Protocol
10.. .... = Version: RFC 1889 Version (2)
..0. .... = Padding: False
...0 .... = Extension: False
.... 0000 = Contributing source identifiers count: 0
0... .... = Marker: False
Payload type: DynamicRTP-Type-96 (96)
Sequence number: 57887
Timestamp: 4285367567
Synchronization Source identifier: 0xc60a3fef (3322560495)
NALU 码流 .根据单一NAL单元模式 判断 前1byte 是[NALU Header]
0000 06 05 ff ff ff 14 dc 45 e9 bd e6 d9 48 b7 96 2c ..ÿÿÿ.ÜEé½æÙH·.,
0010 d8 20 d9 23 ee ef 78 32 36 34 20 2d 20 63 6f 72 Ø Ù#îïx264 - cor
0020 65 20 31 34 32 20 72 32 34 33 31 20 61 63 37 36 e 142 r2431 ac76
0030 34 34 30 20 2d 20 48 2e 32 36 34 2f 4d 50 45 47 440 - H.264/MPEG
0040 2d 34 20 41 56 43 20 63 ....
===> 转化 第一个字节06
0000 0110 F=0 NRI=00 说明帧不重要 type=6 说明是SEI
wireshark 解析
NAL unit header or first byte of the payload
0... .... = F bit: No bit errors or other syntax violations
.00. .... = Nal_ref_idc (NRI): 0
...0 0110 = Type: NAL unit - Supplemental enhancement information (SEI) (6)
剩下的就看下H264 NAL Unit Payload NALU的负载
没有完全解析出来,又是不重要的部分.