H264编解码 分析三 SEI (编解码未懂)

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的负载

没有完全解析出来,又是不重要的部分.

猜你喜欢

转载自blog.csdn.net/engineer_james/article/details/81782824