MPEG2TS中PSI相关的几个Tables

PSI,即Program Specific Information,节目专用信息,既包含了标准数据,也包含了私有数据,其作用是从一个携带多个节目的某一个TS流中正确找到特定的节目。Programs由一个或者多个基本的码流组成,并通过PID来识别。在MPEG2TS中,PSI可以分为5个tables,如下图所示。

MPEG2TS中PSI相关的几个Tables_第1张图片

TS的解码分两步进行,其一,是从PID为0的TS包里,解析出PAT表,然后从PAT表里找到各个节目源的PID,根据节目源的PID找到PMT表。一般此类节目源都由若干个ES流组成,并描述在PMT表里面,然后通过节目源的PID,就可以在PMT表里检索到各个ES的PID。其二,解码器根据PMT表里的ES流的PID,将TS流上的包进行区分,并按不同的ES流进行解码。所以,TS是经过节目复用和传输复用两层完成的,即在节目复用时,加入了PMT,在传输复用时,加入了PAT。同样在节目解复用时,可以得到PMT,在传输解复用时,可以得到PAT。

1、节目关联表PAT

每个TS都必须包含一个完整有效的PAT,该表的PID是固定的0x0000,它的主要作用是指出该传输流ID,以及该路传输流中所对应的几路节目流的MAP表和网络信息表的PID。PAT表的句法结构如下图所示。

MPEG2TS中PSI相关的几个Tables_第2张图片

2、节目映射表PMT

该表的PID是由PAT提供给出的。通过该表可以得到一路节目中包含的信息,例如,该路节目由哪些流构成和这些流的类型(视频,音频,数据),指定节目中各流对应的PID,以及该节目的PCR所对应的PID。PMT表的句法结构如下图所示。

MPEG2TS中PSI相关的几个Tables_第3张图片

(1)stream_type:PID为elementary_PID的Packet中的stream的数据类型。stream_type的定义如下所示(来自ffmpeg):

#define STREAM_TYPE_VIDEO_MPEG1     0x01
#define STREAM_TYPE_VIDEO_MPEG2     0x02
#define STREAM_TYPE_AUDIO_MPEG1     0x03
#define STREAM_TYPE_AUDIO_MPEG2     0x04
#define STREAM_TYPE_PRIVATE_SECTION 0x05
#define STREAM_TYPE_PRIVATE_DATA    0x06
#define STREAM_TYPE_AUDIO_AAC       0x0f
#define STREAM_TYPE_VIDEO_MPEG4     0x10
#define STREAM_TYPE_VIDEO_H264      0x1b
#define STREAM_TYPE_AUDIO_AC3       0x81
#define STREAM_TYPE_AUDIO_DTS       0x8a

3、条件接收表CAT

CAT提供了一个或者多个CA系统的相关性,以及他们的EMM streams和任何特殊的数据。该表的PID是固定的0x0001。CAT表的句法结构如下图所示。

MPEG2TS中PSI相关的几个Tables_第4张图片

4、网络信息表NIT

该表的PID是由PAT提供给出的。NIT的作用主要是对多路传输流的识别,NIT提供多路传输流,物理网络及网络传输的相关的一些信息,如用于调谐的频率信息以及编码方式。调制方式等参数方面的信息。

5、TS描述表TSDT

TSDT的PID为固定的0x0003。TSDT表的句法结构如下图所示。

MPEG2TS中PSI相关的几个Tables_第5张图片

你可能感兴趣的:(cat,pat,PSI,PMT,MPEG2TS)