ES流(Elementary Stream,基本流):數字電視各組成部分編碼後所造成的直接表示基本元素內容的流,包含視頻、音頻或數據的連續碼流。網絡
PES流(Paketized Elementary Stream,打包基本碼流):是將基本的碼流ES流根據須要分紅長度不等的數據包,並加上包頭就造成了打包的基本碼流PES流。ui
PS (Program Stream,節目流):將一個節目的多個組成部分按照它們之間的互相關係進行組織並加入各組成部分關係描述後的碼流。PS流是一種多路複用數字音頻、視頻等的封裝容器,它一個或多個具備共同的時間基準的PES流合併成一個總體流,主要用於節目存儲。其包長不固定,且較長,一旦失去同步信息,接收機沒法肯定下一包的同步位置,會形成失步,致使嚴重的信息丟失。PS流適用於誤碼小、信道較好的環境,如演播室、家庭環境和存儲介質中。編碼
TS流(Transport Stream,傳輸流):是將一個節目的多個組成部分按照它們之間的互相關係進行組織並加入各組成部分關係描述和節目組成信息,並進一步封裝成傳輸包後的碼流。TS流是將視頻、音頻、PSI等數據打包成傳輸包進行傳送。主要用於節目傳輸。TS的傳輸包長度固定,通常爲188字節。加密
TS流和PS流是MPEG-2標準中規定的兩種輸出碼流。TS格式中,從視頻流的任意一片段開始均可以獨立解碼,而PS格式不能夠。因爲TS流具有較強的抵抗傳輸誤碼的能力,所以目前在傳輸媒體中進行傳輸的MPEG-2碼流基本上都採用了TS流的包格式。spa
TS流的播放:播放前將TS流文件的後綴名該爲.mpg或者.mpeg,用能夠直接播放MPEG-TS流的播放器(通常的播放器均可以)打開播放便可。orm
TS流的優勢:
1、動態帶寬分配:因爲TS的傳輸包長度是固定的,所以可過PID能夠將規定的信道總頻帶在視頻、音頻和數據信息見進行實時的、靈活的分配。利用這一特性,可在廣播付費節目前實時地將解密鑰匙插入到TS流中送給廣大用戶。視頻
二、可分級性:容許一個複用的傳輸碼流與其餘視音頻基本碼流進行二次複用,生產佔用頻帶給寬的更高一級的TS流。
三、可擴展性
4、抗干擾性
五、接收機成本低廉ip
TS流的造成過程:
1、 壓縮【顯示單元】產生【進入單元】,連續的【進入單元】組成一個基本碼流。
2、 對ES(基本碼流)進行打包造成PES。
三、 在PES包中加入定時信息(PTS/DTS)。
4、 將PES包內容分配到一系列固定長度的傳輸包中。
五、 在傳輸包中加入定時信息(PCR)。
6、 在傳輸包中加入節目專用信息(PSI) 。
七、 連續輸出傳輸包造成具備恆定比特率的MPEG-TS流。ci
MPEG-2中規定TS傳輸包的長度爲188 字節。但通訊媒介會爲包添加錯誤校驗字節,從而有了不一樣於188字節的包長。例如:element
DVB 規定中,使用204字節做爲包長:一、經過調製器時,在每一個傳輸包後增長了16 字節的裏德所羅門前向糾錯碼,於是造成了204字節的數據包。調製後總存在204 字節的數據包。2、調製以前存複用器插入RS碼或虛構
的RS碼。
ATSC規定中,使用208字節做爲包長:添加20 字節的 RS(Reed-Solomon)前向糾錯碼。與DVB不一樣,ATSC規定RS碼只能出如今調製的TS流中。
全部的TS包都分爲包頭和淨荷部分。TS包中能夠填入不少東西(填入的東西都是填入到淨荷部分),有:視頻、音頻、數據(包括PSI、SI以及其它任何形式的數據)。
TS包的包頭提供關於傳輸方面的信息:同步、有無差錯、有無加擾、PCR(節目參考時鐘)等標誌。TS包的包頭長度不固定,前32比特(4個字節)固定,後面可能跟有自適應字段(適配域)。32個比特(4個字節)是最小包頭。包頭的結構固定以下:
typedef struct TS_packet_header
{
unsigned sync_byte : 8;
unsigned transport_error_indicator : 1;
unsigned payload_unit_start_indicator : 1;
unsigned transport_priority : 1;
unsigned PID : 13;
unsigned transport_scrambling_control : 2;
unsigned adaption_field_control : 2;
unsigned continuity_counter : 4;
} TS_packet_header;
sync_byte (同步字節):固定爲0100 0111 (0x47);該字節由解碼器識別,使包頭和有效負載可相互分離。
transport_error_indicator(傳輸錯誤指示):‘1’表示在相關的傳輸包中至少有一個不可糾正的錯誤位。當被置1後,在錯誤被糾正以前不能重置爲0。
payload_unit_start_indicator(開始指示):爲1時,在前4個字節以後會有一個調整字節,其的數值爲後面調整字段的長度length。所以有效載荷開始的位置應再偏移1+[length]個字節。
transport_priority(傳輸優先級):‘1’代表優先級比其餘具備相同PID 但此位沒有被置‘1’的分組高。
PID:指示存儲與分組有效負載中數據的類型。PID 值 0x0000—0x000F 保留。其中0x0000爲PAT保留;0x0001爲CAT保留;0x1fff爲分組保留,即空包。
transport_scrambling_control(加擾控制):表示TS流分組有效負載的加密模式。空包爲‘00’,若是傳輸包包頭中包括調整字段,不該被加密。
adaptation_field_control(適配域控制):表示包頭是否有調整字段或有效負載。‘00’爲ISO/IEC將來使用保留;‘01’僅含有效載荷,無調整字段;‘10’ 無有效載荷,僅含調整字段;‘11’ 調整字段後爲有效載荷,調整字段中的前一個字節表示調整字段的長度length,有效載荷開始的位置應再偏移[length]個字節。空包應爲‘10’。
continuity_counter(連續性計數器):隨着每個具備相同PID的TS流分組而增長,當它達到最大值後又回覆到0。範圍爲0~15。
適配域:
TS包中淨荷所傳輸的信息包括兩種類型:
1、視頻、音頻的PES包以及輔助數據;
二、節目專用信息PSI。
固然,TS包也能夠是空包。空包用來填充TS流,可能在從新進行多路複用時被插入或刪除。
在系統複用時,視頻、音頻的ES流需進行打包造成視頻、音頻的 PES流,輔助數據(如圖文電視信息)不須要打成PES包。PES包非定長,音頻的PES包小於等於64K,視頻的通常爲一幀一個PES包。一幀圖象的PES包一般要由許多個TS包來傳輸。MPEG-2中規定,一個PES包必須由整數個TS包來傳輸。若是承載一個PES包的最後一個TS包沒能裝滿,則用填充字節來填滿;當下一個新的PES包造成時,需用新的TS包來開始傳輸。
節目專用信息PSI(Program Specific Information)
管理各類類型的TS數據包,須要有些特殊的TS包來確立各個TS數據包之間的關係。這些特殊的TS包裏所包含的信息就是節目專用信息。在不一樣的標準中它有不一樣的名字:
• MPEG-2中稱爲PSI;
• DVB標準根據實際須要,對PSI擴展,稱爲SI信息;
• ATSC標準中爲PSIP信息
MPEG-2中,規定的對PSI信息的描述方法有如下幾種:
• 1、表Table: 節目信息的結構性的描述;
–節目關聯表Program Association Table (PAT) 0x0000
–節目映射表Program Map Tables (PMT)
–條件接收表Conditional Access Table (CAT) 0x0001
–網絡信息表Network Information Table(NIT) 0x0010
–傳送流描述表Transport Stream Description Table (TSDT)
• 2、節Section: 將表格的內容映射到TS流中;
專用段 Private_ section
• 3、描述符Descriptor:提供有關節目構成(視頻流、音頻流、語言、層次、系統時鐘和碼率等多方面)的信息;
ITU-T Rec.H.222.0|ISO /IEC 13818-1 中定義的 PSI表可被分紅一段或多段置於傳輸流分組中。一段就是一個語法結構,用來將 ITU-T Rec.H.222.0|ISO /IEC 13818-1 中定義的 PSI表映射到傳輸流分組中。
PAT表
TS流中包含一個或者多個PAT表。PAT表由PID爲0x0000的TS包傳送,其做用是爲複用的每一路傳送流提供出所包含的節目和節目編號,以及對應節目的PMT的位置即PMT的TS包的PID值,同時還提供NIT的位置,即NIT的TS包的PID的值。
table_id:固定爲0x00,標誌該表是PAT表。
section_syntax_indicator:段語法標誌位,固定爲1。
section_length:表示這個字節後面有用的字節數,包括CRC32。節目套數:(section length-9)/4
transport_stream_id:16位字段,表示該TS流的ID,區別於同一個網絡中其它多路複用流。
version_number:表示PAT的版本號。
current_next_indicator:表示發送的PAT表是當前有效仍是下一個PAT有效。
section_number:表示分段的號碼。PAT可能分爲多段傳輸,第一段爲0,之後每一個分段加1,最多可能有256個分段。
last_section_number:表示PAT最後一個分段的號碼。
Program number:節目號
network_PID:網絡信息表(NIT)的PID,節目號爲0時對應ID爲network_PID。
Program map PID:節目映射表(PMT)的PID號,節目號爲大於等於1時,對應的ID爲program_map_PID。一個PAT中能夠有多個program_map_PID。
CRC_32:32位字段,CRC32校驗碼Cyclic RedundancyCheck。
PMT表
PMT在傳送流中用於指示組成某一套節目的視頻、音頻和數據在傳送流中的位置,即對應的TS包的PID值,以及每路節目的節目時鐘參考(PCR)字段的位置。
Table id :固定爲0x02,標誌該表是PMT 表。
原始流的類型
值 |
描述 |
0x00 |
ITU-T|ISO/IEC保留 |
0x01 |
ISO/IEC 11172視頻 |
0x02 |
ITU-T Rec.H.262|ISO/IEC 13818-2視頻 |
0x03 |
ISO/IEC 11172音頻 |
0x04 |
ISO/IEC 13818-3音頻 |
0x05 |
ITU-T Rec.H.222.0|ISO/IEC 13818-1私用分段 |
0x06 |
含有私用數據的ITU-T Rec.H.222.0|ISO/IEC 13818-1分組 |
0x07 |
ISO/IEC 13522 MHEG |
0x08 |
ITU-T Rec.H.222.0|ISO/IEC 13818-1 DSM CC |
0x09 |
ITU-T Rec.H.222.0|ISO/IEC 13818-1/11172-1 |
0x10 ~ 0x7F |
ITU-T Rec.H.222.0|ISO/IEC 13818-1保留 |
0x80 ~ 0xFF |
用戶私有 |