封装格式--4:PS格式详解

“本文转载自:[jimte_pro]的网络流媒体--PS封装格式

本文相关系列:

1.PS格式概述

  • MPEG2-PS:一种多路复用数字音视频等的封装容器。PS是Program Stream(程序流或节目流)的简称。程序流将一个或多个分组但有共同的时间基准的基本数据流(PES)合并成一个整体流。它是为可靠稳定的储存媒介如光盘而设计的。

  • ES:Elementary Stream(基本码流),是由编码器输出的原始基础码流,它只含有解码器所必需的、并与原始图象或原始音频相接近的信息。由由压缩器输出的用于传送 单路视音频信号的原始码流。ES只包含一种内容的数据流,如只含视频或只含音频等。

  • PES:Packetized Elementary Streams (分组的ES),ES形成的分组称为PES分组,是用来传递ES的一种数据结构。PES流是ES流经过PES打包器处理后形成的数据流,在这个过程中完成了将ES流分组、打包、加入包头信息等操作(对ES流的第一次打包)。PES流的基本单位是PES包。PES包由包头和payload组成。

  • PS:Program Stream(节目流),PS流由PS包组成,而一个PS包又由若干个PES包组成(到这里,ES经过了两层的封装)。PS包的包头中包含了同步信息与时钟恢复信息。一个PS包最多可包含具有同一时钟基准的16个视频PES包和32个音频PES包。

2.PS流基本封装格式

  PS用到的基本术语如下:

  • PSH:Program Stream pack Header ,是PS包的包头;

  • PS system header:Partial system header,系统头;

  • PSM:Program Stream Map,节目流映射( PSM)提供节目流中基本流的描述及其相互关系。当在传输流中承载时,此结构将不修正。当 stream_id 值为 0xBC 时, PSM 作为 PES 包存在。

  • PES Header:PES Packetized Elementary Streams,PES流的基本单位是PES包。PES包由包头和payload组成。

  • PS封装结构:

ps_1.PNG

  一般来说一个完整的PS包封装格式如下所示:

  • 视频关键帧的封装:
ps_2.png
  • 视频非关键帧的封装:
ps_3.png

3.ps格式描述

3.1 PS header格式

ps_4.PNG

(1)开始的数据:sync bytes

ps_5.PNG

(2)SCR数据

ps_6.png

(3)速率

ps_7.png

  PSH一般来说最少需要包含14个Byte,扩展长度根据stuffing lenght计算,最长为7个byte(stuffing lenght 只有3位长度),这些字段可以用于存放帧序号等参数。下图为一段码流的PS头:

ps_8.png

3.2 Partial system headerg格式

ps_9.png

(1)开始数据

ps_10.png

(2)rate_bound

ps_11.png

(3)其他数据

ps_12.png
ps_13.png

下图为一段码流的系统头:

ps_14.png

3.3 Program Stream Map

ps_15.png
ps_16.png

下图为一段PS的map:

ps_17.png

3.4 PS PES Header

ps_18.png
ps_19.png

PES头如下图所示:

ps_20.png

4.参考资料

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容