MPEG-2 系统概述

本部分概述了 MPEG-2 系统层的常规非技术概述。 MPEG-2 系统是定义音频和视频流如何在 MPEG-2 中复用的标准。

基本流

MPEG-2 多路复用以一个或多个字节流开头,称为基本流 (ES) ,其中包含视频、音频或其他数据。 例如,视频 ES 包含压缩的视频帧,以及序列标头、图片组 (GOP) 标头,以及解码器解码流所需的任何其他内容。 系统层不定义 ES 字节流的内容。

基本流分为数据包,形成 数据包化的基本流 (PES) 。 PES 数据包的长度可变。 数据包的内容称为 有效负载。 每个 PES 数据包还包括一个标头。 多路复用器为每个 PES 分配一个 1 字节流 ID;单个 PES 数据包由数据包标头中的流 ID 标识。 对于音频流,流 ID 的格式为 110xxxxx。 对于视频,流 ID 的格式为 1110yyyy

MPEG-2 标准定义了两种方法来传送数据包化的基本流: 程序流传输流

程序流

程序流专为相对无错误的环境设计,例如本地文件存储。 在程序流中,PES 数据包被复用并组织成称为 包的单元。 程序流中的所有 PES 流都同步到同一时钟。

传输流

传输流 (TS) 专为不可靠或容易出错的环境(例如网络广播)而设计。 此外,它们可以包含同步到不同时钟的多个程序。 传输流增加了第二层数据包化 - PES 流打包在传输流数据包内,每个数据包的固定大小为 188 字节。 TS 数据包还可以包含程序信息流,如以下部分所述。

每个 TS 数据包都有一个 4 字节标头,以及一个可选适应字段,其中包含其他标头信息。 多路复用器将程序 ID (PID) 分配给每个 PES 流或程序信息流。 PID 用于标识 TS 数据包,类似于流 ID 标识 PES 数据包的方式。 (如果传输流包含多个程序, 则流 ID 可能不唯一,但 PID 分配在传输流中是唯一的。)

程序特定信息

由于传输流可以携带多个程序,因此必须有一种方法将各种 PES 数据包与其所属的程序相关联。 这是使用标识程序流的表完成的。 总的来说,此数据称为程序特定信息 (PSI) 。 PSI 数据在 TS 数据包中传输,就像 PES 数据一样。 有各种类型的 PSI 数据,包括:

  • 程序关联表 (PAT) 。 PAT 始终分配给 PID 0x000。 PAT 中的每个条目都是一个 PID,用于标识该程序的 PMT 数据包, (看到下一项) 。

  • 程序映射表 (PMT) 。 每个 PMT 定义一个程序。 PMT 包含流列表;每个表项都为该流提供 PID,以及标识流类型的代码。 ISO/IEC 13818-1 定义了一些标准流类型;下表显示了缩写列表。

    stream_type 说明
    0x01 MPEG-1 视频
    0x02 MPEG-2 视频
    0x03 MPEG-1 音频
    0x04 MPEG-2 音频
    0x80 - 0xFF 用户专用

     

    基于 MPEG-2 的其他标准(如 ATSC)可能会在“用户专用”范围内定义其他流类型。 例如,ATSC 将0x81定义为 Dolby AC-3 音频。

  • 条件访问表 (CAT)

  • (NIT) 的网络标识表

DirectShow中的 MPEG-2 支持