码迷,mamicode.com
首页 > 其他好文 > 详细

GB28181技术基础之2 - H264与PS封包

时间:2018-08-16 19:38:37      阅读:581      评论:0      收藏:0      [点我收藏+]

标签:输入   编码   G.729   类型   同步   time   显示   http   mpeg   

二. PS封包

       PS 是 GB28181 规定的标准封包格式(也是存储格式),在讲 PS 之前,先介绍几种相关的 数据格式概念:

1)ES

     基本流 (Elementary Streams)是直接从编码器出来的数据流,也成为净荷数据。ES是编码后的视频流(比如H.264),音频数据流(如AAC),和其他编码数据流的统称。

     ES是只包含一种内容的数据流(比如纯粹的视频或音频),每个ES都由若干个存取单元(AU)组成,每个视频AU或音频AU都是由头部和编码数据两部分组成,1个AU相当于编码的1幅视频图像或1个音频帧,也可以说,每个AU实际上是编码数据流的显示单元,即相当于解码的1幅视频图像或1个音频帧的取样。

2)PES

     打包的ES(Packetized Elementary Streams),是用来传递ES的一种数据结构。是ES流经过 PES打包形成的数据流,即将ES流分组、打包、加入包头信息,是对ES流的第一次打包。

     PTS - 显示时间戳(Presentation Time Stamp),用来表示显示单元出现在系统目标解码器的时间。

     DTS - 解码时间戳(Decoding Time Stamp),用来表示将存取单元全部字节从解码缓存取走的时间。

     PTS/DTS 这两个参数是解决音视频同步显示,防止解码器输入缓存上溢或下溢的关键。每一个 I帧 | P帧 | B帧 的包头都有一个PTS和DTS。

3)PS

     一个PS包 由若干个 PES 包组成,PS包头包含了同步信息与时钟恢复信息。

     一个PS包 最多可包含具有同一时钟基准的16个视频PES包和32个音频PES包。

     PS包是针对 ES净荷数据 的第二次封装。

 

       PS 包中的流类型(stream type)的取值如下:

 

 MPEG-4

  视频流   

 H.264

 视频流  

 SVAC

 视频流  

 G.711

 音频流 

 G.722.1

 音频流   

 G.723.1

  音频流  

 G.729

 音频流 

 SVAC

 音频流 

0x10

0x1B

0x80

0x90

0x92

0x93

0x99

0x9B

       来看一下 PS包头:

        技术分享图片

       注意:这里面有一个 System Header,位于 PS包头之后,当且仅当第一个数据包时 该Header存在。

       在文件开头封包格式为:PS头 + System 头 + PES头 + H264流

       非文件开头格式: PS头 + PES头 + H264流 

GB28181技术基础之2 - H264与PS封包

标签:输入   编码   G.729   类型   同步   time   显示   http   mpeg   

原文地址:https://www.cnblogs.com/ostin/p/9488676.html

(0)
(1)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!