簡介 MPEG2-TS 傳輸流 (MPEG-2 Transport Stream;又稱MPEG-TS、MTS、TS)是一種傳輸和存儲包含視頻、音頻與通信協定各種數據的標準格式,用於數位電視廣播系統,如
DVB 、
ATSC 、
ISDB 、
IPTV 等等。
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里,例如幾個不同的電視頻道或者同一個電影的多個拍攝角度。
TS分組(TS Packet)大小最大為188位元組,它是多路復用的基本單位。多個不同的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
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)
PES
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分組頭部中的固定部分和適配域(不包含適配域擴展部分)。
TS分組格式 名稱 比特 數描述 固定部分 (4位元組)
同步位元組
sync byte
8
0x47
傳輸錯誤指示位
Transport Error Indicator (TEI)
1
傳送時(調製前)值為0。接收方的解調器在無法成功解調(即使有前向糾錯機制)TS分組內容時,將該位設定為1,表示該TS分組損壞。
載荷單元開始指示位
Payload Unit Start Indicator
1
傳輸優先權
Transport Priority
1
值為1時,在相同PID的分組中具有更高的優先權。
分組ID
13
用於識別TS分組的ID。一個PID對應一種特定的PSI訊息或者一個特定的PES。
傳輸加擾控制
Transport Scrambling control (TSC)
2
值為'00'時表示載荷未加密。其餘值由具體系統定義。以
DVB 的
CSA 和
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表示適配域中有適配域擴展域
可選部分
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列出該TS內所有節目。其PID固定為0x0000。每個節目由一個16比特的欄位program_number指定。每個program_number都有一個對應的PID,用來指定該節目的PMT。PAT中不包含節目信息時,program_number為0x0000,則應從NIT(PID為0x0010)獲取節目信息。
PMT
PMT包含特定
節目 相關的信息,每一個節目有一個PMT。雖然MPEG-2協定標準允許多個PMT使用相同的PID,常見的系統中,如ATSC、SCTE中,不同的PMT有各自的PID。
PMT包含的信息有特定節目的program_number,以及該節目對應的所有ES的PID。此外還有可選的描述子用來提供整個MPEG-2系統的屬性和特定ES的屬性。
CAT
CAT用於節目的加密與解密。CAT對應PID為0x0001。
NIT
NIT提供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位元組。時間碼使得播放系統可以在允許隨機讀取的存儲介質中快速找到特定時間點的視頻內容。藉助時間碼也可以用來同步多個攝像機拍攝的內容。
藍光 以前述格式構成的流被
藍光光碟聯盟 稱為“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原本就是面向實時播放的格式,使得藍光的內容可以簡單地從流中截取任意一段,降低了視頻剪輯的處理成本。此外,這種流格式也使得存儲介質的物理損壞對內容的影響降到最小。
關聯條目 節目專用信息(PSI)
分組化基本流(PES)
單向輕量封裝(Unidirectional Lightweight Encapsulation,ULE)