H264编解码 分析五 非参考帧

NON IDR 非参考帧

NON IDR 属于 [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 e0 e2 21 ff 6e 08 e5 c6 0a 3f ef 41 9a 12 5b   .àâ!ÿn.åÆ.?ïA..[
0010   10 ec e7 fe a7 84 00 00 03 00 00 03 00 00 03 00   .ìçþ§...........
0020   00 03 00 00 03 00 00 03 00 00 03 00 00 03 00 30   ...............0
0030   20                                                                                         

在上面12个byte是 [RTP Header] 对应的码流 和SPS 一样的RTP Header

80 e0 e2 21 
ff 6e 08 e5 
c6 0a 3f ef
====>转化 二进制
1000 0000 1110 0000 1110 0010 0010 0001 v=2 p=0 x=0 CC=0 M=1 PT=96 SN=57889 
1111 1111 0110 1110 0000 1000 1110 0101 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
    1... .... = Marker: True
    Payload type: DynamicRTP-Type-96 (96)
    Sequence number: 57889
    Timestamp: 4285401317
    Synchronization Source identifier: 0xc60a3fef (3322560495)

NALU 码流 .根据单一NAL单元模式 判断 前1byte 是[NALU Header]

0000   41 9a 12 5b 10 ec e7 fe a7 84 00 00 03 00 00 03   A..[.ìçþ§.......
0010   00 00 03 00 00 03 00 00 03 00 00 03 00 00 03 00   ................
0020   00 03 00 30 20                                    ...0 

===> 转化 第一个字节 41
0100 0001  F=0 NRI=10 特别重要 type=1 说明是 NON-IDR 

wireshark 解析

NAL unit header or first byte of the payload
    0... .... = F bit: No bit errors or other syntax violations
    .10. .... = Nal_ref_idc (NRI): 2
    ...0 0001 = Type: NAL unit - Coded slice of a non-IDR picture (1)

剩下的就看下H264 NAL Unit Payload NALU的负载

0000   9a 12 5b 10 ec e7 fe a7 84 00 00 03 00 00 03 00   ..[.ìçþ§........
0010   00 03 00 00 03 00 00 03 00 00 03 00 00 03 00 00   ................
0020   03 00 30 20                                       ..0 

wireshark 是解析不出H264 码流的

能理解多少,记多少,为后面学习编码和解码打基础

猜你喜欢

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