PS封包H264载荷数据详解

在前面的文章 GB28181利用RTP协议推送264的PS封包音视频中简单介绍了PS打包H264载荷的基本流程。

两种情况再复述如下:

  • IDR NALU PS封包
    将SPS、PPS、IDR作为一个PS负载,加上PS头,整体为
    PSheader| PS system header | PS system Map | PES header | PES负载(SPS|PPS|IDR)
  • 非IDR NALU PS封包
    PSheader | PES header | PES负载(SLICE)

特别地,若果当PES负载超过最大长度(ushort,0xffff),需要进行PES分包。

相关数据格式概念:

  • ES
    基本流 (Elementary Streams)是直接从编码器出来的数据流,也成为净荷数据。ES是编码后的视频流(比如H.264),音频数据流(如AAC),和其他编码数据流的统称。
    ES是只包含一种内容的数据流(比如纯粹的视频或音频),每个ES都由若干个存取单元(AU)组成,每个视频AU或音频AU都是由头部和编码数据两部分组成,1个AU相当于编码的1幅视频图像或1个音频帧,也可以说,每个AU实际上是编码数据流的显示单元,即相当于解码的1幅视频图像或1个音频帧的取样。
  • PES
    打包的ES(Packetized Elementary Streams),是用来传递ES的一种数据结构。是ES流经过 PES打包形成的数据流,即将ES流分组、打包、加入包头信息,是对ES流的第一次打包。
    PTS - 显示时间戳(Presentation Time Stamp),用来表示显示单元出现在系统目标解码器的时间。
    DTS - 解码时间戳(Decoding Time Stamp),用来表示将存取单元全部字节从解码缓存取走的时间。
    PTS/DTS 这两个参数是解决音视频同步显示,防止解码

你可能感兴趣的:(视频监控安防)