Ts流 介紹

來源:互聯網
上載者:User

在MPEG-II標準中,為了將一個或更多的音頻、視頻或其他的基本資料流合成單個或多個資料流,以適應於儲存和傳送,必須對其重新進行打包編碼,在碼流中還需插入各種時間標記、系統控制等資訊,最後送到通道編碼與調製器。這樣可以形成兩種資料流——傳送流(TS)和程式流(PS),分別適用於不同的應用,圖1給出了單路節目的視音頻資料流的複用框圖。

     傳送流(Transport Stream)簡稱TS流,它是根據ITU-T Rec.H.222.0|ISO/IEC 13818-2 和ISO/IEC 13818-3協議而定義的一種資料流,其目的是為了在有可能發生嚴重錯誤的情況下進行一道或多道程式編碼資料的傳送和儲存。這種錯誤表現為位元值錯誤或分組丟失。傳送流由一道或多道節目組成,每道節目由一個或多個原始流和一些其他流複合在一起,包括視頻流、音頻流、節目特殊資訊流(PSI)和其他資料包。其中PSI表有4種類型:節目關聯表(PAT)、節目映射表(PMT)、網路資訊表和條件訪問表。傳送流應用比較廣泛,如視音頻資料的儲存、電視節目的非線性編輯系統及其網路等。在開發機頂盒以及視頻裝置時有時需要對碼流的編碼知識有比較清楚地瞭解,這樣才能在遇到問題時做出全面的
分析。

TS流結構分析

     2所示,TS包的長度是固定的,為188位元組。包括同步位元組(sync_byte)0x47和資料包識別號PID等。PID為13位欄位,指示儲存於分組承載中資料的類型,PID值0x0000為程式關聯表保留,而0x0001為條件訪問表保留,0x1FFF為空白分組保留。從PID可以判斷其後面負載的資料類型是視頻流、音頻流、PSI還是其他資料包。

PSI描述說明

     在MPEG-II中定義了節目特定資訊(PSI),PSI用來描述傳送流的組成結構,在MPEG-II系統中擔任極其重要的角色,在多工中尤為重要的是PAT表和PMT表。PAT表給出了一路MPEG-II碼流中有多少套節目,以及它與PMT表PID之間的對應關係;PMT表給出了一套節目的具體組成情況與其視頻、音頻等PID對應關係。PSI提供了使接收機能夠自動設定的資訊,用於對複用流中的不同節目流進行解複用和解碼。PSI資訊由以下幾種類型表組成:

◆ 節目關聯表(PAT Program Association Table)

     PAT表用MPEG指定的PID(00)標明,通常用PID=0表示。它的主要作用是針對複用的每一路傳輸串流,提供傳輸串流中包含哪些節目、節目的編號以及對應節目的節目映射表(PMT)的位置,即PMT的TS包的包標識符(PID)的值,同時還提供網路資訊表(NIT)的位置,即NIT的TS包的包標識符(PID)的值。

◆ 條件接收表(CAT Conditional Access Table)

     CAT表用MPEG指定的PID(01)標明,通常用PID=1表示。它提供了在複用流中條件接收系統的有關資訊,指定CA系統與它們相應的授權管理資訊(EMM))之間的聯絡,指定EMM的PID,以及相關的參數。

◆ 節目映射表(PMT Program Map Table)

     節目映射表指明該節目包含的內容,即該節目由哪些流組成,這些流的類型(音頻、視頻、資料),以及組成該節目的流的位置,即對應的TS包的PID值,每路節目的節目時鐘參考(PCR)欄位的位置。

◆ 網路資訊表(NIT Nerwork Information Table)

     網路資訊表提供關於多組傳輸串流和傳輸網路相關的資訊,其中包含傳輸串流描述符、通道頻率、衛星發射器號碼、調製特性等資訊。

◆ 傳輸串流描述表(TSDT Transport Stream Description Table)

    傳輸串流描述表由PID為2的TS包傳送,提供傳輸串流的一些主要參數。

◆ 專用段(private_section)

     MPEG-2還定義了一種專用段用於傳送使用者自己定義的專用資料。

◆ 描述符(Descripter)

     除了上述的表述之外,MPEG-2還定義了許多描述符,這些描述符提供關於視頻流、音頻流、語言、層次、系統時鐘、碼率等多方面的資訊,在PSI的表中可以靈活的採用這些描述符進一步為接收機提供更多的資訊。

     在解碼時,接收機首先根據PID值找到PAT表,找出相應節目的PMT表的PID,再由該PID找到該PMT表,再在PMT表中找到相應的碼流,然後開始解碼。PSI結構和TS流的關係樣本3所示。

PES包格式說明

     經過視音頻壓縮來的數位流稱為ES流,ES流經過打包器輸出PES流。PES包是非定長的,音頻PES包不超過64K位元組,視頻一般一幀一個PES包。為實現解碼的同步,還需插入相關的標誌資訊,多個打包後的數位流再經過複用器成為傳送流(TS流),PES包的結構圖4所示。

對截取的MPEG-II TS碼流執行個體分析

對截取的包含PSI資訊的碼串流分析

     從MPEG-II TS流片源上截取的包含PSI資訊的碼流5所示。

     搜尋TS資料流從包同步字0x47開始,由於該同步頭位元組並不是唯一的,資料包中可能有碼字也恰為其值。因此,要準確檢測同步,必須首先找到輸入緩衝區中第一個0x47,然後將其指標向後推187個位元組的位置再檢測是否為0x47,如果是,則輸出包同步訊號;接著每隔187位元組檢測一次,如是0x47,則繼續輸出包同步訊號,如不是,則重新開始搜尋0x47。

     在上段截取的包含PSI資訊的碼流中是一個TS檔案中的起始資料,TS流檔案中的資料Ts包頭以0x47開頭,在0x47後3位元組是ts包頭資訊:0x40中的4表示此payload_unit_start_indicator是1,表示包含TS流分組的第一個有效位元組包含point_field欄位,佔一個位元組;ID為0x00,表示此TS流包含PSI資訊,在此是PAT包;0x1c中的1表示僅不含附加資訊,僅含有有效載荷;C表示continuity_ counter=c。在4位元組的TS包頭之後時一位元組的point_field=0,然後是program_association_
section()欄位的資訊。Table_id=0x00,表示在此PSI內容是program_ association_section()欄位的資訊內容;0xB0表示的B是同步頭以及保留位,0是section_length的一部分;section_length=0x00d(包含0x0D的前一個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,表示所 發送的pat表當前有效;ection_number=0x00,last_ section_number=0x0000;program_number=0x0001;0xE0中的E的高三位是保留位,E的最低位和其後的4位0以及其後的8位都是program_map_PID欄位內容,所以program_map_PID=0x032,即PMT的PID為0x32;CRC是0xbcf11595。其後的0xff為填充位元組。

     在第二個TS流中,在0x47後3位元組是ts包頭資訊:0x40中的4表示此payload_unit_start_indicator是1,表示包含TS流分組的第一個有效位元組包含point_field欄位,佔一個位元組。ID為0x32,表示此TS流包含PSI資訊PID為0x032,是pat表中的PID,說明此TS流中包含PMT表的資訊。point_field=0x00,(Ts頭和point_field1位元組共5位元組)point_field後是0x02表示此處的pid為ts_program_
map_section()欄位。0xB0表示的B是同步頭以及保留位,0是section_length的一部部分Section_length=0x02d,規定此欄位的位元組數,包含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欄位內容,PCR_PID=0x020;其後的0xF0中的高4位是保留位,低4位和其後的8位都是program_info_length欄位內容,表示描述欄位的位元組數,program_info_length=0x000;stream_type=0x03表示其後的PID為ISO/IEC
11172音頻資料的PID,其後的0xE0中的E的高三位是保留位,E的最低位和其後的4位0以及其後的8位都是element_PID欄位內容,element_PID=0x021,表示TS流中如果包含音頻部分,則此TS流的PID為0x21;其後的0xF0中的高4位是保留位,低4位和其後的8位都是ES_info_length欄位內容,表示描述欄位的位元組數,ES_info_length=0x006,表示其後的6個位元組為原始流的描述部分。6個位元組之後的stream_type=0x02,表示其後的PID為ITU-T Rec.
H.262 | ISO/IEC 13818-2視頻資料的PID;其後的0xE0中的E的高三位是保留位,E的最低位和其後的4位0以及其後的8位都是element_PID欄位內容,element_PID=0x20,表示TS流中如果包含視頻部分,則此TS流的PID為0x20, 其後的0xF0中的高4位是保留位,低4位和其後的8位都是ES_info_length欄位內容,表示描述欄位的位元組數,ES_info_length=0x10,表示其後的16個位元組為原始流的描述部分。其後的4位元組是CRC校正部分,然後是填充部分。

一般MPEG-II TS碼串流分析

     從MPEG-II TS流片源上截取的碼流6所示。

     如上述截取的碼流所示:Ts包頭以0x47開頭,在0x47後3位元組是TS包頭資訊:ID為視頻ID,是0x20,field_point欄位00,其後是PES包包頭:00 01 E0表示是視頻PES包包頭,其後的幀有關資訊共5位元組,2位元組PES包長度是27 6A,表示此PES資料包的長度是0x276a即10090位元組;2位元組標準位資訊是85 80,5位元組中的最後一位元組表示附加資料長度是0B,其後是正式視頻資料:開始為00 00 01 00,是I、B、P幀的判別在9D,二進位為10
011 101中的中間3位011指名幀幀是什麼樣的幀,次例中為011即為B幀,當是001時為I幀,010時為P幀。

     從某種意義上來說,數字電視的發展主要取決於數字壓縮技術和數字調製解調技術的發展。目前MPEG-2標準較為成熟,雖然碼率壓縮的辦法許多,如MPEG系列(MPEG-1、MPEG-2、MPEG-4、MPEG-7)以及小波壓縮技術等。但在實用化方面MPEG-2已經走在了前面,且遵循標準研製出的系統產品也已非常成熟,實際商業運營和效果也非常成功。

     總之,MPEG-II傳輸串流在數字電視系統中得到了廣泛的應用,在應用中可以通過分析碼流來獲得傳輸串流的PID、PRC等資訊,用來設定解碼器等用處。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.