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

二. 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流

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

时间: 2024-10-15 01:28:26

GB28181技术基础之2 - H264与PS封包的相关文章

49 Linux操作系统原理、虚拟化技术基础原理

04 虚拟化技术基础原理 一.配置虚拟化网络 1.编辑配置文件 #关闭NetworkManager [[email protected] ~]# service NetworkManager stop [[email protected] ~]# chkconfig NetworkManager off    [[email protected] ~]# chkconfig --list NetworkManager NetworkManager  0:关闭  1:关闭  2:关闭  3:关闭

html技术基础

1.如何动态修改下拉列表的默认选中项 两种方法,第一种嵌入java代码:原理是首先获取需要选中项,然后用java代码控制那个标签内需要添加selected,其中Wish是放在request中的一个对象,仅此而已 <select name="wish.visible"> <%int visible=((Wish)request.getAttribute("wish")).getVisible(); %> <option value=&qu

加密和解密技术基础与OpenSSL

加密和解密技术基础与OpenSSL 加密和解密技术基础(01) 1.了解Linux  service  and  securityOpenSSL:为网络通信提供安全及数据完整性的一种安全协议 2.一般都是C/S通信,此种通信客户端有什么特性?服务端有什么特性呢?(1)两台主机上的通信方式?主机通信实际是进程间通信.通信方式:socket (套接字)ip:port          客户端cip:port<-->服务器端 scip:port(2)如何让客户知道自己的主机和端口呢?把某些众所周知的

《C#语言和数据库技术基础》单词必备

<C#语言和数据库技术基础> 第一章1..NET Framework   框架2.sharp            尖锐3.application      应用程序4.developer        开发者5.network          网络6.build            建造,建筑7.console          控制台8.debug            调试9.namespace        命名空间10.project         项目11.solution 

微信公众号开发【技术基础】(三):百度应用引擎BAE的使用与应用部署

百度应用引擎(BAE)是百度推出的网络应用开发平台,开发者使用BAE不需要进行服务器的配置.维护等繁琐的工作,也不需要进行域名的申请.备案等工作,而只需要上传自己的WEB应用即可在公网上访问.使用及部署应用的步骤如下: 1.注册百度账号,并在百度云官网注册.审核成为开发者,还需要进行身份证实名认证才能申请BAE,实名认证审核大概需要2.3个工作日(以上步骤略,见官网介绍). 百度云首页:https://cloud.baidu.com/ 2.注册.审核通过之后,登录https://cloud.ba

JNI技术基础(2)——从零开始编写JNI代码

书接上文: <JNI技术基础(1)——从零开始编写JNI代码> 2.编译源程序HelloWorld.java并生成HelloWorld.class 3.生成头文件HelloWorld.h 在Linux控制台输入命令:javah –jni HelloWorld 生成HelloWorld.h头文件 //HelloWorld.h /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header

微信公众号开发技术基础(二):外网映射工具ngrok的简介和使用

本文结构:(一)用法(二)示例(三)qydev ngrok的下载链接及相关网站 微信公众号开发的时候,微信服务器是需要访问我们的一个公网服务器地址的,但我们又是在本地调试自己的程序的,那怎样让微信服务器能访问到我们本地的服务器呢?那就需要用外网映射工具,将本地IP映射成公网IP,这样就能在公网上访问本地服务了,这里使用ngrok.ngrok原版程序的服务器是在国外的,访问速度极慢或者干脆访问不了,所以这里提供一个服务器搭建在国内的基于ngrok的一个软件:qydev,百度网盘下载链接见文章结尾.

软件开发技术基础复习要点

软件开发技术基础复习要点 1.生存周期: 指一个软件从提出开发要求开始,经过需求分析.设计.制造.调试.使用.维护,直到软件产品被淘汰为止的整个过程. 2.简述软件工程的基本原理: 用分阶段的生命周期计划严格管理: 坚持进行阶段评审: 实行严格的产品控制: 采纳现代程序设计技术: 结果应该能清楚地审查: 开发小组应小而精: 承认不断改进软件工程实践的必要性. 3.简述产生软件危机的原因和解决办法: 原因:开发软件所需的高成本与软件产品的低质量之间存在尖锐的矛盾,致使软件开发陷入循环之中,即研制软

加密解密技术基础、PKI及创建私有CA

加密解密技术基础.PKI及创建私有CA 一.背景 随着互联网的快速发展,整个互联网中涌入了大量的用户,正所谓林子大了什么鸟都有,随之而来的就是数据的安全性得不到保障:因此就有了对数据的加密及解密. 二.安全的目标 1.目标: 信息加密的目的是为了确保所传输的信息具有保密性,不被其他人所劫持后篡改信息:如果被篡改后接收方也应该能知道,而且也应该确保没被劫持的信息接收方可以读取. 2.数据在网络中传输过程中要保证三个要点: (1)数据的完整性:防止数据在传输过程中遭到未授权用户的破坏或篡改. (2)