LV06-01-PS封装-01-PS封装简介

本文主要是PS封装简介的相关笔记,若笔记中有错误或者不合适的地方,欢迎批评指正😃。

点击查看使用工具及版本
PC端开发环境 Windows Windows11
Ubuntu Ubuntu20.04.6的64位版本
VMware® Workstation 17 Pro 17.0.0 build-20800274
终端软件 MobaXterm(Professional Edition v23.0 Build 5042 (license))
Win32DiskImager Win32DiskImager v1.0
点击查看本文参考资料
点击查看相关文件下载
------

一、什么是PS?

1. PS封装是什么?

PSProgram Stream 的缩写,有时候也会见到这种名称:MPEG-2 PS(Program Stream),它好像更官方一点吧,都是一个概念。接下来就简答了解一下。

MPEG2-PS是一种多路复用数字音频,视频等的封装容器。PS是Program Stream(程序流或节目流)的简称,是主流的音视频数据封装方式之一。程序流将一个或多个分组但有共同的时间基准的基本数据流(PES)合并成一个整体流。它是为可靠稳定的储存媒介如光盘而设计的。广泛应用于 DVD 等多媒体文件的存储环节,PS主要使用在GB28181中。

PS(Program Stream)封装的标准定义在 ISO/IEC 13818-1 标准中。该标准是 MPEG-2 系统层的一部分,详细描述了 MPEG-2 PS 的结构、数据流的组织方式、同步机制、错误检测方法等。

Tips:

ISO/IEC 13818-1 标准:信息技术 — 通用编码 — 第1部分:系统(Information technology — Generic coding of moving pictures and associated audio information — Part 1: Systems)

2. 常见术语

  • PS: Program Stream,mpeg2 第一部分定义的节目流。
  • TS: Transport Stream, mpeg2 第一部分定义的传输流。
  • RTP: Real-time Transport Protocol, 实时传输协议。
  • PES: Packetized Elementary Stream, 封装元素流,PS数据的基本单位。
  • GOP: Group Of Picture, 图像组,一般指I帧及其后面依靠该I帧解码的其他帧。
  • NAL: Network Abstraction Layer, 网络适配层,H.264 定义的一个元素结构层次,包括编码数据和参数集信息等。
  • VCL: Video Coding Layer, 视频编码层,H.264 定义的一个元素结构层次,只包括编码数据。
  • IDR: Instantaneous Decoding Refresh,解码器立即重刷新。
  • IVS: Intelligence Video Surveillance,智能视频监控

3. MPEG?

MPEG(Moving Picture Experts Group)是一个由国际标准化组织(ISO)和国际电工委员会(IEC)联合成立的标准组织,专注于活动图像和声音的编码、解码、压缩和传输。MPEG 标准涵盖了从 MPEG-1 到 MPEG-7 多个版本,每个版本针对不同的应用领域和需求。

下来来了解几个主要的 MPEG 标准及其应用:MPEG-1、MPEG-2、MPEG-4、MPEG-7、H264/AVC 和 H265/HEVC 。

3.1 MPEG-1

  • 主要应用:VCD(Video Compact Disc)、MP3 音频。
  • 特点:定义了视频和音频的压缩标准,使得视频和音频可以在 CD 等存储介质上存储和播放。

3.2 MPEG-2

  • 主要应用:DVD、数字电视广播、有线电视。
  • 特点:扩展了 MPEG-1 的标准,支持更高的分辨率和更高质量的视频和音频。定义了 Program Stream (PS) 和 Transport Stream (TS) 两种容器格式。

3.3 MPEG-4

  • 主要应用:互联网视频、移动设备、流媒体。
  • 特点:专注于多媒体内容的高效压缩和传输,支持多种音频和视频编码格式,如 H.264/AVC。

3.4 MPEG-7

  • 主要应用:多媒体内容的描述和检索。
  • 特点:不是一种编码标准,而是一种多媒体内容描述接口标准,用于描述多媒体内容以支持高效检索。

3.5 MPEG-21

  • 主要应用:数字版权管理、多媒体内容的交互和分发。
  • 特点:定义了一个多媒体框架,旨在提供一个统一的框架来处理和管理多媒体内容。

3.6 H.264/AVC

  • 主要应用:高清电视、视频会议、互联网视频。
  • 特点:由 MPEG 和 ITU-T VCEG 联合开发,是一种高效的视频编码标准,广泛应用于高清视频和流媒体领域。

3.7 H.265/HEVC

  • 主要应用:超高清电视(UHD)、4K 和 8K 视频。
  • 特点:继 H.264 之后的下一代视频编码标准,提供更高的压缩效率。

二、PS封装格式简介

1. PS流格式

image-20241210213935655

一个 PS 流或者文件可以视为多个 PS GOP,每个 GOP 是以 I 帧起始的多帧集合,各 GOP 之间的信息没有相互依赖性,可以进行剪切拼接。一个 PS GOP 由一个或多个 PS 包组成,一个 PS 包内包含一个 PSH(PS Header)和若干个 PES 包,每个 PS GOP 的第一个 PS 包应当在包头 PSH 后立即跟随一个 PSM 包。PSM 包是一种特殊的 PES 包,含有对其他 PES 负载数据类型的描述。PS 包内的其他 PES 的出现顺序和内容没有特殊约束,即一个 PS 包内可以包含交错出现的视频、音频和私有流等 PES 包,各 PES 包根据 PSM 的描述进行拆分。

1.1 PSH

PSH (Program Stream pack Header)是 PS 包的包头,主要包含系统时间信息。常用的 PSH 的语法定义如下:

1.4 PES

PES, Packetised Elementray Stream, 原始流分组。Elementary Stream, 原始流,指的是视频或音频压缩编码后产生的比特数据,而视频或音频原始流分别打包生成视频PES和音频PES。一个PES分组只包含一个原始流的编码数据。

2. H264流的PS封装

(1)一个网络抽象单元(NALU)视为一个处理单元,编码器一帧编码后输出可能是多个处理单元;

(2)除B帧外的帧输出的多个单元封装时应当在第一个单元头部添加PSH;

(3)当一个NALU单元长度超过系统PES包长限制时,可以将该NALU分割成多个PES包,但每个PES包内不应当包含多于1个NALU的数据;

(4)每个帧的第一个处理单元所封装成的第一个PES包包头应当带有PTS;

(5)每个I帧封装时应当在PSH之后添加PSM;

(6)当元素流的基本特性(编码格式,帧率,分辨率,场编码等)发生变化时,变化后的第一帧封装时必须在PSH之后添加PSM;

2.1 典型的H.264 I帧 PS包

image-20241210213852521

2.2 典型的H.264 P/B帧PS包

image-20241210213903091

3. 音频元素流封装规则

(1)在音视频同步时序条件允许的情况下,连续的一个或多个音频帧可以合并,每帧视为一个处理单元;

(2)当音频帧长度不大于PES包负载或网络传输单元所能承受的最大长度时,建议将每个音频帧封装成一个单独的PES包;

(3)每次处理的第一个音频帧所形成的第一个PES包头应当带有PTS,其余音频帧所形成的第一个PES包头建议带有PTS;

(4)当系统不包含视频流时,PSH在流中出现的间隔应当小于1秒,PSM的出现间隔应当小于4秒;当音频参数(码率,采样率,声道数等)发生变化时,必须在变化后立即出现PSH和PSM。

image-20241210213912730

参考资料:

H264码流中SPS PPS详解_h264 sps pps-CSDN博客

GB/T28181数据流分析学习笔记1:PS数据格式解析_gb28181学习笔记 百度网盘-CSDN博客

海康视频录像文件打包格式解析 - 黑车司机 - 博客园

PS流包格式之PS/SYS/PSM/PES头 - 简书

PS流及其封装 - shunxiang - 博客园