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等的MPEG PS不同。

## 傳輸協議

1個TS（傳輸流）中封裝了多個子TS。通常子TS是分組化基本流（PES, Packetized elementary stream）；分組化基本流中封裝基本流（ES，Elementary Stream），或者非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這個具體的系統使用的具體標準。

MPEG-2 TS協議層次劃分｜ISDB-T的協議棧

ES/Table｜MPEG-2 影片（H.262）（ISO/IEC 13818-2）｜MPEG-2 AAC（ISO/IEC 13818-7）｜數據服務（獨立PES模式）（ARIB STD-B24）｜PSI/SI（ISO/IEC 13818-1、ARIB STD-B10）｜數據服務（數據與對象輪播模式）（ARIB STD-B24）

內容權利保護專用方式（加密）（ARIB STD-B25）

PES/Section｜MPEG-2 PES（ISO/IEC 13818-1、ARIB STD-B32）｜表的分節（Table Section）（ISO/IEC 13818-1、ARIB STD-B32）

TS｜MPEG-2 TS（ISO/IEC 13818-1）

## 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分組頭部中的固定部分和適配域（不包含適配域擴展部分）。

名稱｜比特數｜描述

固定部分（4位元組）｜同步字節｜sync byte｜8｜0x47

傳輸錯誤指示位｜Transport Error Indicator (TEI)｜1｜發送時（調製前）值為0。接收方的解調器在無法成功解調（即使有前向糾錯機制）TS分組內容時，將該位設置為1，表示該TS分組損壞。

載荷單元開始指示位｜Payload Unit Start Indicator｜1｜負載單元起始標示符，一個完整的數據包開始時標記為1, 表示攜帶的是PSI或Packetized Elementary Stream第一個包

傳輸優先級｜Transport Priority｜1｜值為1時，在相同PID的分組中具有更高的優先權。

分組ID｜PID｜13｜用於識別TS分組的ID。一個PID對應一種特定的PSI消息或者一個特定的PES。

傳輸加擾控制｜Transport Scrambling control (TSC)｜2｜值為'00'時表示載荷未加密。其餘值由具體系統定義。以DVB的通用擾碼演算法和ATSC的DCS為例：、'01' = 保留 (供未來使用),、'10' = 以偶數密鑰加密、'11' = 以奇數密鑰加密

適配域存在標誌｜Adaptation field exist｜2｜、'00' = 保留 (供未來使用)、'01' = 無適配域，僅有載荷、'10' = 僅有適配域、'11' = 適配域和載荷都存在

連續性計數器｜Continuity counter｜4｜取值為0x00到0x0F，循環。用於檢查同一個PID的TS分組的連續性。每當一個TS分組中包含載荷時，該計數器加1。

可選部分｜適配域｜Adaptation field｜0或更多｜當適配域存在標誌為'10'或'11'時存在

載荷｜Payload Data｜0或更多｜當適配域存在標誌為'01'或'11'時存在

#### 適配域

名稱｜位元數｜描述

固定部分（2位元組）｜適配域長度｜Adaptation Field Length｜8｜適配域的長度，單位為字節，不包含當前字節。

不連續指示位｜Discontinuity indicator｜1｜如果根據連續性計數器或PCR計算，確認當前分組處於不連續狀態，則取值為1。

隨機訪問指示位｜Random Access indicator｜1｜如果當前分組是一個PES的起始，取值為1。

ES優先級指示位｜Elementary stream priority indicator｜1｜取值為1時ES優先級更高。

PCR標識｜PCR flag｜1｜1表示適配域中有PCR域

OPCR標識｜OPCR flag｜1｜1表示適配域中有OPCR域

接續點標識｜Splicing point flag｜1｜1表示適配域中有接續倒數計數器域

傳輸私有數據標識｜Transport private data flag｜1｜1表示適配域中有私有數據域

適配域擴展標識｜Adaptation field extension flag｜1｜1表示適配域中有適配域擴展域

可選部分｜PCR｜33+6+9｜Program Clock Reference。結構為33位的低精度部分+6位的填充部分+9位的高精度部分。具體說明參見PCR一節。

原PCR｜OPCR｜33+6+9｜Original PCR。格式與PCR相同。在TS複製時使用。

接續倒數計時器｜Splice countdown｜8｜指示從當前分組起多少個分組之後接續點出現（取值可為負）。

填充字節｜可變長度

### 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在基於硬碟存儲的數字攝像機產品中將這種流稱為MOD與TOD。

### 藍光

以前述格式構成的流被藍光光碟聯盟稱為「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原本就是面向實時播放的格式，使得藍光的內容可以簡單地從流中截取任意一段，降低了影片剪輯的處理成本。此外，這種流格式也使得存儲介質的物理損壞對內容的影響降到最小。

## 關聯條目

- MPEG媒體傳輸（MPEG media transport, MMT）
- MPEG PS
- 節目專用信息（PSI）
- 分組化基本流（PES）
- 實時傳輸協議（RTP）
- 單向輕量封裝（Unidirectional Lightweight Encapsulation，ULE）

## 外部連結

- ITU-T H.222.0 | ISO/IEC 13818-1系統標準文檔
- 上述文檔的最近免費公開版本（2015年1月）
- 解釋TS分組、PES、幾種PSI結構的資料
- MPEG-4系統FAQ

## 基本資料

- 日語原文：MPEG2 傳輸串流格式、Transport Stream
- 擴展名：.ts, .tsv, .tsa
- mime：video/MP2T
- 所有者：MPEG
- 發行日期：1995年
- 類型：影片文件格式（媒體流格式）
- 作為容器：音訊、影片、數據
- 擴展為：M2TS, TOD
- 標準：ISO/IEC 13818-1, ITU-T Recommendation H.222.0