MPEG2-TS

MPEG2-TS 传输串流（MPEG-2 Transport Stream；又称MPEG-TS、MTS、TS）是一种标准数字封装格式,用来传输和储存视讯、音讯与频道、节目信息，应用于数位电视广播系统，如DVB、ATSC、ISDB、IPTV等。
MPEG2-TS定义于MPEG-2第一部份：系统（即ISO/IEC标准13818-1或ITU-T Rec. H.222.0）。
MPEG2-TS面向的传输介质是地面和卫星等可靠性较低的传输介质，这一点与面向较可靠介质如DVD等的不同。
传输协议.
1个TS（传输流）中封装了多个子TS。通常子TS是（）；分组化基本流中封装（），或者非MPEG的编码流，例如AC-3、DTS音频流，MJPEG、JPEG 2000视频流、字幕所需要的文本和图像、用于定义基本流的表、乃至电视台定义的电子节目表（EPG）等。
一些相互独立的流可以被复用在一个TS里，例如几个不同的电视频道或者同一个电影的多个拍摄角度。
每个传输流被分割为大小最大为188字节的TS封包（TS Packet），它是多路复用（multiplexing）的基本单位。多个不同的ES（基本流）的内容会分别被封装到TSP中通过同一个TS传输。由于封包（分组）尺寸较小，复用对各个ES造成的时延也较低，对传输误码的耐受性也强于那些将一帧画面封装到一整个包里的容器格式，如MPEG PS和AVI、MOV/MP4、MKV等。这对于视频会议等对实时性要求高的场景特别有意义，因为单个分组损坏不会造成很大的语音延迟。
TS通常以固定码率传输。固定码率传输时，如果上层待传输内容不足，会发送空分组以占位。蓝光光碟中使用的MPEG-2 TS也使用了固定码率。
下表为MPEG-2 TS协议的一个实际应用的例子：日本地面数字电视ISDB-T。表中列举了TS、PES、ES层次上，ISDB-T这个具体的系统使用的具体标准。
TS中的主要概念.
TS分组.
TS分组（TS packet）是TS的基本传输单位。在TS范围以外并不存在描述一个TS的属性的全局性的描述体。TS自身的全部信息仅由其自身描述，TS仅由一系列的TS分组构成。
每个TS分组以固定的起始，这个同步字节的值为0x47，它也是TS分组头的一部分。TS分组的必选头长度为4字节，其后为可选部分，为载荷或适配域。TS分组的头部固定以大端序读写。TS分组长度为188字节。
如同所有的传输协议一样，虽然TS分组本身长度为188字节，其底层传输机制可以为每个TS分组附加一些信息以便传输，例如前向纠错用的校验部分。DVB和ISDB数字电视制式的前向纠错信息有16个字节，而ATSC制式有20个字节。
TS分组格式.
TS分组包括头部和载荷两部分。头部包括固定长度部分和可选部分，可选部分中包括适配域。适配域有可选的扩展部分。
本节介绍TS分组头部中的固定部分和适配域（不包含适配域扩展部分）。
PID.
每一种PSI表和每个ES都对应一个PID值，它是将TS解复用为ES和PSI表的依据。常见的实现中，多个PES在TS中以时分复用方式存在，故而各ES的PID会轮流出现。
节目.
节目（Program）这个概念存在于TS中。每个节目在TS中对应一个节目映射表（PMT），不同的节目的PMT具有不同的PID。PMT中会指定与这个节目相关的所有ES的PID。
数字电视的一个TS中可能包含3个或更多的节目。假设每个节目包含1个视频ES，1到2个音频ES，以及一些对应的PSI、数据服务等，播放电视节目的设备并不需要解析所有节目的视频、音频流，只需要根据PID，选择相应的ES，解析并播放即可，与节目无关的PID对应的TS分组可以全部丢弃。
包含多个节目的TS称为多节目TS（MPTS），只包含1个节目的TS成为单节目TS（SPTS）。
PSI.
节目专用信息（PSI，Program Specific Information），描述特定节目相关的属性。MPEG-2标准规定了4种PSI：节目关联表（PAT，Program Association Table）、节目映射表（PMT，Program Map Table）、条件访问表（CAT，Conditional Access Table）以及网络信息表（NIT，Network Information Table）。其中MPEG-2标准规定了PAT和PMT的具体结构。
在基于MPEG-2 TS的一些系统，如地面数字电视DVB、ATSC、ISDB-T等扩展了MPEG2-TS，引入了服务信息（SI，Service Information）这一概念。SI是PSI的补充，在协议层次上与PSI相同。
PAT.
PAT (PAT: Program Association Table)列出该TS内所有节目。其PID固定为0x0000。每个节目由一个16比特的字段program_number指定。每个program_number都有一个对应的PID，用来指定该节目的PMT。PAT中不包含节目信息时，program_number为0x0000，则应从NIT（PID为0x0010）获取节目信息。
PMT.
PMT (PMT: Program Map Table)包含特定节目相关的信息，每一个节目有一个PMT。虽然MPEG-2协议标准允许多个PMT使用相同的PID，常见的系统中，如ATSC、SCTE中，不同的PMT有各自的PID。
PMT包含的信息有特定节目的program_number，以及该节目对应的所有ES的PID。此外还有可选的描述子用来提供整个MPEG-2系统的属性和特定ES的属性。
CAT.
CAT (CAT: Conditional Access Table) 用于节目的加密与解密。CAT对应PID为0x0001。
NIT.
NIT (NIT: Network Information Table 网络信息表)提供TS的相关信息，如频率、调制方式。在扫描所有频道的节目时，关键信息来自各频道的TS中的NIT。
PCR.
节目时钟参考（PCR，Program Clock Reference）使得解码后的内容可以正确地同步播放。最多每100ms，接收方会从TS分组的适配域中得到特定节目的PCR值，PCR的PID由该节目的PMT中的PCR_PID域指定。解码系统应当基于PCR生成高精度的系统校时时钟（System Timing Clock，STC），用于同步声音ES和视频ES的内容。STC是MPEG-2系统里校时的基准。例如，（Presentation timestamp，PTS）的值即是以PCR值为基准的偏移量。
PCR包括一个33比特的低精度部分（90kHz）和一个9比特的高精度部分（27MHz，取值为0-299）。PCR容许的最大抖动为+/-500ns。
空分组.
空分组（null packet）存在于某些使用MPEG2-TS的系统中，例如地面数字电视系统ATSC和DVB，用于保证固定码率。在从ES复用到TS的过程中，如果ES的数据量不足用尽TS的比特率，则复用器模块会插入空分组。空分组使用保留的PID值0x1FFF。空分组的载荷没有意义，接收者应当丢弃。
数字电视以外的应用.
数码摄像机.
MPEG-2 TS原本的设计用途是数字电视广播，不过后来用在数码摄像机、录像机、播放机上。用于非广播类用途时，其TS分组格式有所不同：在分组上增加了4个字节长的时间码（Time Code），使分组长度变为192字节。时间码使得播放系统可以在允许随机读取的存储介质中快速找到特定时间点的视频内容。借助时间码也可以用来同步多个摄像机拍摄的内容。
JVC在基于硬盘存储的产品中将这种流称为。
蓝光.
以前述格式构成的流被蓝光光碟联盟称为“BDAV MPEG-2 transport stream”（字面意思为BDAV版本的MPEG2-TS），其文件扩展名为.m2ts，俗称M2TS流。蓝光的影碟以BDAV（Blu-ray Disc Movie）格式的BDMV容器存储音频、视频以及其他内容，用于BD-R和BD-RE等格式的录制中。由于蓝光的M2TS和标准的MPEG TS格式基本相同，其设备能够以非常小的延迟转录数字电视内容。由于MPEG-2 TS原本就是面向实时播放的格式，使得蓝光的内容可以简单地从流中截取任意一段，降低了视频剪辑的处理成本。此外，这种流格式也使得存储介质的物理损坏对内容的影响降到最小。