TS傳輸流標(biāo)準(zhǔn)介紹
來源:中國數(shù)字電視論壇 編輯:數(shù)字音視工程 2009-03-04 00:00:00 加入收藏 咨詢

所在單位: | * |
姓名: | * |
手機(jī): | * |
職位: | |
郵箱: | * |
其他聯(lián)系方式: | |
咨詢內(nèi)容: | |
驗(yàn)證碼: |
|
MPEG組織于1994年推出MPEG-2壓縮標(biāo)準(zhǔn),以實(shí)現(xiàn)視/音頻服務(wù)與應(yīng)用互操作的可能性,MPEG-2標(biāo)準(zhǔn)是針對(duì)標(biāo)準(zhǔn)數(shù)字電視和高清晰度電視在各種應(yīng)用下的壓縮方案和系統(tǒng)層的詳細(xì)規(guī)定。對(duì)應(yīng)于不同的應(yīng)用,符合MPEG-2標(biāo)準(zhǔn)的碼流又分為傳送流和程序流,本文主要講解了傳送流有關(guān)的部分?jǐn)?shù)據(jù)結(jié)構(gòu),從實(shí)際應(yīng)用的傳送流碼流中截取了部分碼流做了說明,并給出了部分解析傳送流碼流的實(shí)例程序。
在MPEG-II標(biāo)準(zhǔn)中,為了將一個(gè)或更多的音頻、視頻或其他的基本數(shù)據(jù)流合成單個(gè)或多個(gè)數(shù)據(jù)流,以適應(yīng)于存儲(chǔ)和傳送,必須對(duì)其重新進(jìn)行打包編碼,在碼流中還需插入各種時(shí)間標(biāo)記、系統(tǒng)控制等信息,最后送到信道編碼與調(diào)制器。這樣可以形成兩種數(shù)據(jù)流——傳送流(TS)和程序流(PS),分別適用于不同的應(yīng)用,圖1給出了單路節(jié)目的視音頻數(shù)據(jù)流的復(fù)用框圖。
傳送流(Transport Stream)簡稱TS流,它是根據(jù)ITU-T Rec.H.222.0|ISO/IEC 13818-2 和ISO/IEC 13818-3協(xié)議而定義的一種數(shù)據(jù)流,其目的是為了在有可能發(fā)生嚴(yán)重錯(cuò)誤的情況下進(jìn)行一道或多道程序編碼數(shù)據(jù)的傳送和存儲(chǔ)。這種錯(cuò)誤表現(xiàn)為比特值錯(cuò)誤或分組丟失。傳送流由一道或多道節(jié)目組成,每道節(jié)目由一個(gè)或多個(gè)原始流和一些其他流復(fù)合在一起,包括視頻流、音頻流、節(jié)目特殊信息流(PSI)和其他數(shù)據(jù)包。其中PSI表有4種類型:節(jié)目關(guān)聯(lián)表(PAT)、節(jié)目映射表(PMT)、網(wǎng)絡(luò)信息表和條件訪問表。傳送流應(yīng)用比較廣泛,如視音頻資料的保存、電視節(jié)目的非線性編輯系統(tǒng)及其網(wǎng)絡(luò)等。在開發(fā)機(jī)頂盒以及視頻設(shè)備時(shí)有時(shí)需要對(duì)碼流的編碼知識(shí)有比較清楚地了解,這樣才能在遇到問題時(shí)做出全面的 分析。
TS流結(jié)構(gòu)分析
如圖2所示,TS包的長度是固定的,為188字節(jié)。包括同步字節(jié)(sync_byte)0x47和數(shù)據(jù)包識(shí)別號(hào)PID等。PID為13位字段,指示存儲(chǔ)于分組有效負(fù)載中數(shù)據(jù)的類型,PID值0x0000為程序關(guān)聯(lián)表保留,而0x0001為條件訪問表保留,0x1FFF為空分組保留。從PID可以判斷其后面負(fù)載的數(shù)據(jù)類型是視頻流、音頻流、PSI還是其他數(shù)據(jù)包。
PSI描述說明
在MPEG-II中定義了節(jié)目特定信息(PSI),PSI用來描述傳送流的組成結(jié)構(gòu),在MPEG-II系統(tǒng)中擔(dān)任極其重要的角色,在多路復(fù)用中尤為重要的是PAT表和PMT表。PAT表給出了一路MPEG-II碼流中有多少套節(jié)目,以及它與PMT表PID之間的對(duì)應(yīng)關(guān)系;PMT表給出了一套節(jié)目的具體組成情況與其視頻、音頻等PID對(duì)應(yīng)關(guān)系。PSI提供了使接收機(jī)能夠自動(dòng)配置的信息,用于對(duì)復(fù)用流中的不同節(jié)目流進(jìn)行解復(fù)用和解碼。PSI信息由以下幾種類型表組成:
◆ 節(jié)目關(guān)聯(lián)表(PAT Program Association Table)
PAT表用MPEG指定的PID(00)標(biāo)明,通常用PID=0表示。它的主要作用是針對(duì)復(fù)用的每一路傳輸流,提供傳輸流中包含哪些節(jié)目、節(jié)目的編號(hào)以及對(duì)應(yīng)節(jié)目的節(jié)目映射表(PMT)的位置,即PMT的TS包的包標(biāo)識(shí)符(PID)的值,同時(shí)還提供網(wǎng)絡(luò)信息表(NIT)的位置,即NIT的TS包的包標(biāo)識(shí)符(PID)的值。
◆ 條件接收表(CAT Conditional Access Table)
CAT表用MPEG指定的PID(01)標(biāo)明,通常用PID=1表示。它提供了在復(fù)用流中條件接收系統(tǒng)的有關(guān)信息,指定CA系統(tǒng)與它們相應(yīng)的授權(quán)管理信息(EMM))之間的聯(lián)系,指定EMM的PID,以及相關(guān)的參數(shù)。
◆ 節(jié)目映射表(PMT Program Map Table)
節(jié)目映射表指明該節(jié)目包含的內(nèi)容,即該節(jié)目由哪些流組成,這些流的類型(音頻、視頻、數(shù)據(jù)),以及組成該節(jié)目的流的位置,即對(duì)應(yīng)的TS包的PID值,每路節(jié)目的節(jié)目時(shí)鐘參考(PCR)字段的位置。
◆ 網(wǎng)絡(luò)信息表(NIT Nerwork Information Table)
網(wǎng)絡(luò)信息表提供關(guān)于多組傳輸流和傳輸網(wǎng)絡(luò)相關(guān)的信息,其中包含傳輸流描述符、通道頻率、衛(wèi)星發(fā)射器號(hào)碼、調(diào)制特性等信息。
◆ 傳輸流描述表(TSDT Transport Stream Description Table)
傳輸流描述表由PID為2的TS包傳送,提供傳輸流的一些主要參數(shù)。
◆ 專用段(private_section)
MPEG-2還定義了一種專用段用于傳送用戶自己定義的專用數(shù)據(jù)。
◆ 描述符(Descripter)
除了上述的表述之外,MPEG-2還定義了許多描述符,這些描述符提供關(guān)于視頻流、音頻流、語言、層次、系統(tǒng)時(shí)鐘、碼率等多方面的信息,在PSI的表中可以靈活的采用這些描述符進(jìn)一步為接收機(jī)提供更多的信息。
在解碼時(shí),接收機(jī)首先根據(jù)PID值找到PAT表,找出相應(yīng)節(jié)目的PMT表的PID,再由該P(yáng)ID找到該P(yáng)MT表,再在PMT表中找到相應(yīng)的碼流,然后開始解碼。PSI結(jié)構(gòu)和TS流的關(guān)系示例如圖3所示。
PES包格式說明
經(jīng)過視音頻壓縮來的數(shù)碼流稱為ES流,ES流經(jīng)過打包器輸出PES流。PES包是非定長的,音頻PES包不超過64K字節(jié),視頻一般一幀一個(gè)PES包。為實(shí)現(xiàn)解碼的同步,還需插入相關(guān)的標(biāo)志信息,多個(gè)打包后的數(shù)碼流再經(jīng)過復(fù)用器成為傳送流(TS流),PES包的結(jié)構(gòu)圖如圖4所示。
對(duì)截取的MPEG-II TS碼流實(shí)例分析
對(duì)截取的包含PSI信息的碼流分析
從MPEG-II TS流片源上截取的包含PSI信息的碼流如圖5所示。
搜索TS數(shù)據(jù)流從包同步字0x47開始,由于該同步頭字節(jié)并不是唯一的,數(shù)據(jù)包中可能有碼字也恰為其值。因此,要準(zhǔn)確檢測同步,必須首先找到輸入緩沖區(qū)中第一個(gè)0x47,然后將其指針向后推187個(gè)字節(jié)的位置再檢測是否為0x47,如果是,則輸出包同步信號(hào);接著每隔187字節(jié)檢測一次,如是0x47,則繼續(xù)輸出包同步信號(hào),如不是,則重新開始搜索0x47。
在上段截取的包含PSI信息的碼流中是一個(gè)TS文件中的起始數(shù)據(jù)截圖,TS流文件中的數(shù)據(jù)Ts包頭以0x47開頭,在0x47后3字節(jié)是ts包頭信息:0x40中的4表示此payload_unit_start_indicator是1,表示包含TS流分組的第一個(gè)有效字節(jié)包含point_field字段,占一個(gè)字節(jié);ID為0x00,表示此TS流包含PSI信息,在此是PAT包;0x1c中的1表示僅不含附加信息,僅含有有效載荷;C表示continuity_ counter=c。在4字節(jié)的TS包頭之后時(shí)一字節(jié)的point_field=0,然后是program_association_ section()字段的信息。Table_id=0x00,表示在此PSI內(nèi)容是program_ association_section()字段的信息內(nèi)容;0xB0表示的B是同步頭以及保留位,0是section_length的一部分;section_length=0x00d(包含0x0D的前一個(gè)0);transport_ stream_ id=0x0000;0xC1包含保留位、vision_number、current_ next_indicator ,C中的11是保留位,C中的00和低4位中的前3位是vision_number部分,最低位是current_next_indicator部分。
vision_number=0x00;current_next_indicator=1,表示所 發(fā)送的pat表當(dāng)前有效;ection_number=0x00,last_ section_number=0x0000;program_number=0x0001;0xE0中的E的高三位是保留位,E的最低位和其后的4位0以及其后的8位都是program_map_PID字段內(nèi)容,所以program_map_PID=0x032,即PMT的PID為0x32;CRC是0xbcf11595。其后的0xff為填充字節(jié)。
在第二個(gè)TS流中,在0x47后3字節(jié)是ts包頭信息:0x40中的4表示此payload_unit_start_indicator是1,表示包含TS流分組的第一個(gè)有效字節(jié)包含point_field字段,占一個(gè)字節(jié)。ID為0x32,表示此TS流包含PSI信息PID為0x032,是pat表中的PID,說明此TS流中包含PMT表的信息。point_field=0x00,(Ts頭和point_field1字節(jié)共5字節(jié))point_field后是0x02表示此處的pid為ts_program_ map_section()字段。0xB0表示的B是同步頭以及保留位,0是section_length的一部部分Section_length=0x02d,規(guī)定此字段的字節(jié)數(shù),包含CRC部分;program_number=0x0001;0xC1包含保留位、vision_number、current_next_indicator,C中的11是保留位,C中的00和低4位中的前3位是vision_number部分,最低位是current_next_indicator部分;version_number=0x0,current_next_indicator=1,section_number=0x00,last_section_number=0x00;0xE0中的E的高三位是保留位,E的最低位和其后的4位0以及其后的8位都是PCR_PID字段內(nèi)容,PCR_PID=0x020;其后的0xF0中的高4位是保留位,低4位和其后的8位都是program_info_length字段內(nèi)容,表示描述字段的字節(jié)數(shù),program_info_length=0x000;stream_type=0x03表示其后的PID為ISO/IEC 11172音頻數(shù)據(jù)的PID,其后的0xE0中的E的高三位是保留位,E的最低位和其后的4位0以及其后的8位都是element_PID字段內(nèi)容,element_PID=0x021,表示TS流中如果包含音頻部分,則此TS流的PID為0x21;其后的0xF0中的高4位是保留位,低4位和其后的8位都是ES_info_length字段內(nèi)容,表示描述字段的字節(jié)數(shù),ES_info_length=0x006,表示其后的6個(gè)字節(jié)為原始流的描述部分。6個(gè)字節(jié)之后的stream_type=0x02,表示其后的PID為ITU-T Rec. H.262 | ISO/IEC 13818-2視頻數(shù)據(jù)的PID;其后的0xE0中的E的高三位是保留位,E的最低位和其后的4位0以及其后的8位都是element_PID字段內(nèi)容,element_PID=0x20,表示TS流中如果包含視頻部分,則此TS流的PID為0x20, 其后的0xF0中的高4位是保留位,低4位和其后的8位都是ES_info_length字段內(nèi)容,表示描述字段的字節(jié)數(shù),ES_info_length=0x10,表示其后的16個(gè)字節(jié)為原始流的描述部分。其后的4字節(jié)是CRC校驗(yàn)部分,然后是填充部分。
一般MPEG-II TS碼流分析
從MPEG-II TS流片源上截取的碼流如圖6所示。
如上述截取的碼流所示:Ts包頭以0x47開頭,在0x47后3字節(jié)是TS包頭信息:ID為視頻ID,是0x20,field_point字段00,其后是PES包包頭:00 01 E0表示是視頻PES包包頭,其后的幀有關(guān)信息共5字節(jié),2字節(jié)PES包長度是27 6A,表示此PES數(shù)據(jù)包的長度是0x276a即10090字節(jié);2字節(jié)標(biāo)準(zhǔn)位信息是85 80,5字節(jié)中的最后一字節(jié)表示附加數(shù)據(jù)長度是0B,其后是正式視頻數(shù)據(jù):開始為00 00 01 00,是I、B、P幀的判別在9D,二進(jìn)制為10 011 101中的中間3位011指名幀幀是什么樣的幀,次例中為011即為B幀,當(dāng)是001時(shí)為I幀,010時(shí)為P幀。
從某種意義上來說,數(shù)字電視的發(fā)展主要取決于數(shù)字壓縮技術(shù)和數(shù)字調(diào)制解調(diào)技術(shù)的發(fā)展。目前MPEG-2標(biāo)準(zhǔn)較為成熟,雖然碼率壓縮的辦法許多,如MPEG系列(MPEG-1、MPEG-2、MPEG-4、MPEG-7)以及小波壓縮技術(shù)等。但在實(shí)用化方面MPEG-2已經(jīng)走在了前面,且遵循標(biāo)準(zhǔn)研制出的系統(tǒng)產(chǎn)品也已非常成熟,實(shí)際商業(yè)運(yùn)營和效果也非常成功。
總之,MPEG-II傳輸流在數(shù)字電視系統(tǒng)中得到了廣泛的應(yīng)用,在應(yīng)用中可以通過分析碼流來獲得傳輸流的PID、PRC等信息,用來設(shè)置解碼器等用處。
mpeg PMT 的 stream type匯總:
H.222總是在修訂,增加最新的類型. 以下來源于 H.222.0 (2006) Amendment 2
Value Description
0x00 ITU-T | ISO/IEC Reserved
0x01 ISO/IEC 11172-2 Video
0x02 ITU-T Rec. H.262 | ISO/IEC 13818-2 Video or ISO/IEC 11172-2 constrained parameter video stream
0x03 ISO/IEC 11172-3 Audio
0x04 ISO/IEC 13818-3 Audio
0x05 ITU-T Rec. H.222.0 | ISO/IEC 13818-1 private_sections
0x06 ITU-T Rec. H.222.0 | ISO/IEC 13818-1 PES packets containing private data
0x07 ISO/IEC 13522 MHEG
0x08 ITU-T Rec. H.222.0 | ISO/IEC 13818-1 Annex A DSM-CC
0x09 ITU-T Rec. H.222.1
0x0A ISO/IEC 13818-6 type A
0x0B ISO/IEC 13818-6 type B
0x0C ISO/IEC 13818-6 type C
0x0D ISO/IEC 13818-6 type D
0x0E ITU-T Rec. H.222.0 | ISO/IEC 13818-1 auxiliary
0x0F ISO/IEC 13818-7 Audio with ADTS transport syntax
0x10 ISO/IEC 14496-2 Visual
0x11 ISO/IEC 14496-3 Audio with the LATM transport syntax as defined in ISO/IEC 14496-3/Amd.1
0x12 ISO/IEC 14496-1 SL-packetized stream or FlexMux stream carried in PES packets
0x13 ISO/IEC 14496-1 SL-packetized stream or FlexMux stream carried in ISO/IEC 14496_sections
0x14 ISO/IEC 13818-6 Synchronized Download Protocol
0x15 Metadata carried in PES packets
0x16 Metadata carried in metadata_sections
0x17 Metadata carried in ISO/IEC 13818-6 Data Carousel
0x18 Metadata carried in ISO/IEC 13818-6 Object Carousel
0x19 Metadata carried in ISO/IEC 13818-6 Synchronized Download Protocol
0x1A IPMP stream (defined in ISO/IEC 13818-11, MPEG-2 IPMP)
0x1B AVC video stream as defined in ITU-T Rec. H.264 | ISO/IEC 14496-10 Video
0x1C ISO/IEC 14496-3 Audio, without using any additional transport syntax, such as DST, ALS and SLS
0x1D ISO/IEC 14496-17 Text
0x1E Auxiliary video stream as defined in ISO/IEC 23002-3
0x1F-0x7E ITU-T Rec. H.222.0 | ISO/IEC 13818-1 Reserved
0x7F IPMP stream
0x80-0xFF User Private
評(píng)論comment