天天看點

IP流 TS流 PS流之間的關系及差別

什麼是ts流

我們在網絡上通信都是通過發送或接受資料包來實作的。

       I P資料包有首部和資料兩部分組成的,首部的前一部分是固定長度20位元組,是所有IP資料報必須具有的。首部包括:總長度、辨別、MF、DF、片偏移。

       “TS流”和“PS流”是經過MPEG-2系統壓縮處理後的兩種複合資訊流。    據傳輸媒體的品質不同,MPEG-2中定義了兩種複合資訊流:傳送流(TS)和節目流(PS)。

         在MPEG-2系統中,資訊複合/分離的過程稱為系統複接/分接,由視訊,音頻的ES流和輔助資料複接生成的用于實時傳輸的标準資訊流(比如實時廣播的電視節目)稱為“MPEG-2傳送流”(MPEG2-TS)(TS的全稱:Transport Stream)。

         而“MPEG-2節目流”(MPEG2-PS)主要應用于存儲的具有固定時長的節目,如DVD電影(PS的全稱:Program Stream)。

         TS流與PS流的主要差別在于TS流的包結構是固定長度的,而PS流的包結構是可變長度的。PS包與TS包在結構上的這種差異,導緻了它們對傳輸誤碼具有不同的抵抗能力,因而應用的環境也有所不同。

         TS碼流由于采用了固定長度的包結構,當傳輸誤碼破壞了某一TS包的同步資訊時,接收機可在固定的位置檢測它後面包中的同步資訊,進而恢複同步,避免了資訊丢失。是以,MPEG2-TS格式的特點就是要求從視訊流的任一片段開始都是可以獨立解碼的。

         而PS包由于長度是變化的,一旦某一PS包的同步資訊丢失,接收機無法确定下一包的同步位置,就會造成失步,導緻嚴重的資訊丢失。是以,在信道環境較為惡劣,傳輸誤碼較高時,一般采用TS碼流;而在信道環境較好,傳輸誤碼較低時,一般采用PS碼流。

         由于TS碼流具有較強的抵抗傳輸誤碼的能力,是以目前在傳輸媒體(如有線電視)中進行傳輸的MPEG-2碼流基本上都采用了TS碼流的格式。IP資料包和TS流是什麼,之間有什麼關系

TS流檔案

  DVD節目中的MPEG2格式,是MPEG2-PS,全稱是Program Stream,TS的全稱則是Transport Stream。MPEG2-PS主要應用于存儲的具有固定時長的節目,如DVD電影,而MPEG-TS則主要應用于實時傳送的節目,比如實時廣播的電視節目。這兩種格式的主要差別是什麼呢?你将DVD上的VOB檔案的前面一截剪掉(或者幹脆就是資料損壞),那麼就會導緻整個檔案無法解碼,而電視節目是你任何時候打開電視機都能解碼(收看)的,是以,MPEG2-TS格式的特點就是要求從視訊流的任一片段開始都是可以獨立解碼的

        IP資料包裡可以包含TS視訊流呢?IP資料包通過UDP/IP協定後是不是可以分解出TS流?搞不清楚到底IP資料包都包括什麼内容.

        IP資料包 很正常的啊

        我們在網絡上通信都是通過發送或接受資料包來實作的。

        IP資料報有首部和資料兩部分組成的,首部的前一部分是固定長度20位元組,是所有IP資料報必須具有的。首部包括:總長度、辨別、MF、DF、片偏移。在MPEG-2系統中,資訊複合/分離的過程稱為系統複接/分接,由視訊,音頻的ES流和輔助資料複接生成的用于實際傳輸的标準資訊流稱為MPEG-2傳送流(TS:TransportStream)。

        據傳輸媒體的品質不同,MPEG-2中定義了兩種複合資訊流:傳送流(TS)和節目流(PS:ProgramStream)TS流與PS流的差別在于TS流的包結構是固定長度的,而PS流的包結構是可變長度的。TS碼流 PS包與TS包在結構上的這種差異,導緻了它們對傳輸誤碼具有不同的抵抗能力,因而應用的環境也有所不同。由于采用了固定長度的包結構,當傳輸誤碼破壞了某一TS包的同步資訊時,接收機可在固定的位置檢測它後面包中的同步資訊,進而恢複同步,避免了資訊丢失。而PS包由于長度是變化的,一旦某一PS包的同步資訊丢失,接收機無法确定下一包的同步位置, 就會造成失步,導緻嚴重的資訊丢失。是以,在信道環境較為惡劣,傳輸誤碼較高時,一般采用TS碼流;而在信道環境較好,傳輸誤碼較低時,一般采用PS碼流。 

      由于TS碼流具有較強的抵抗傳輸誤碼的能力,是以目前在傳輸媒體中進行傳輸的MPEG-2碼流基本上都采用了TS碼流的包格

      TS=Transport Stream

       ASI=Asychoronize Serial Interface二者的關系是不是這樣:TS相當于資料包的編碼方式,而ASI則是資料發送的格式和接口标準,二者通過接口進行連接配接?

       異步串行接口  ASI=Asychoronize Serial Interface  在目前的DVB-C廣播電視系統的傳輸接口中,有兩種 MPEG-2視訊傳輸接口标準:異步串行接口标準 ASI和同步并行接口SPI。SPI一共有11位有用信号,每位信号差分成兩個信号用來提高傳輸抗幹擾性,在實體連結上用DB25傳輸,是以連線多且複雜,傳輸距離短,容易出現故障。但SPI是并行11位信号,處理簡單且擴充性強,是以目前一般的MPEG-2視訊編碼器的輸出和視訊***的輸入都是标準的并行11位信号。ASI用串行傳輸,隻需一根同軸電纜線傳輸,連線簡單,傳輸距離長。根據SPI和ASI的優缺點,需要傳輸信号的SPI和ASI的互相轉換

      1 SPI信号結構

    并行傳輸系統SPI包括一位時鐘信号、8位資料信号、一位幀同步信号PSYNC和一位資料有效信号DVALID。幀同步信号對應TS包的同步位元組047H,DVALID信号用來區分TS包的長度為188個位元組或204 個位元組。當TS包長為188位元組時,DVALID信号一直為高,同時所有信号都與時鐘信号保持同步

      2 ASI接口

   ASI傳輸流可以有不同資料速率,但傳輸速率恒定,為270Mbps,是以ASI可以發送和接收不同速率的MPEG-2資料。 ASI傳輸系統為分層結構。最高層、第2層使用MPEG-2标準ISO/IEC 13818-(Systems),第0層和第1層是基于ISO/IEO CD 14165-1的FC纖維信道。FC支援多種實體傳輸媒介。

  首先将包同步的MPEG-2傳送包的8-bit碼字轉換成10-bit碼字;接着在并/串轉換時,當要求輸入一個新字、而資料源還沒有準備好時,應插入一個K28.5的同步字,以達到ASI的固定270Mbps傳輸速率。所形成的串行比特流将通過緩沖/驅動電路和耦合網絡,送到同軸電纜連接配接器上。插入同步碼字可以有三種方法:傳輸碼流的單個位元組前後不能都是同步字;傳輸碼流的單個位元組前後必須都是同步字;或者是兩者的組合。

  到達同軸電纜的接收資料,首先要經過連接配接器和耦合網絡耦合到恢複時鐘和資料的電路上,然後進行串/并變換;為了恢複位元組同步,ASI***必須先搜尋到K28.5同步字,一旦搜尋到該同步字,即為随後接收的資料标定了邊界,進而建立了***輸出位元組的正确位元組排列;最後進行10/8-bit變換,恢複出包同步的MPEG-2 TS碼流資料。但是K28.5同步字不是有效資料,是以解碼時必須删除。

       3 ASI接口實作方案

   在本方案中,MPEG-2 TS碼流由單片MPEG-2編碼器MB86390提供,它輸出符合SPI标準的并行11位信号,TS包長度為188個位元組。在SPI/ASI轉換方案中,主要選用CYPRESS公司cyb923/cyb933晶片、異步FIFO和邏輯程式設計器CPLD實作。

  cyb923主要實作碼字的8/10bit轉換、插入同步字K28.5和并/串變換。ASI的傳輸速率恒定為270MHz,而輸入MPEG-2 TS碼率是不同的,是以要用FIFO實作速率比對,需要對輸入的SPI資料、FIFO和cyb923之間的通信進行邏輯控制。綜合性能、價格和程式複雜度的考慮,本方案采用xilinx公司的CPLD邏輯程式設計器XC95108;用VHDL程式設計實作對它們的邏輯控制。ASI的解碼也是相似的過程,cyb933主要實作10/8bit轉換、去除同步字K28.5和串并變換。

      3.1 ASI編碼

   在ASI的編碼過程中,隻需将MPEG-2 TS的八位資料和一位TS碼率傳輸時鐘輸入到CPLD。因為在本方案中,TS格式為188個位元組,是以資料有效信号DVALID一直為高,CPLD忽略這個信号,隻管接收TS碼流資料,而不用關心TS碼流的同步頭。PSYNC幀同步信号也一樣忽略。CPLD将接收到的資料以TS碼率時鐘寫入FIFO。當 FIFO半滿時,CPLD接收到FIFO的半滿信号,然後CPLD給cyb923發FIFO可讀信号,cyb923以27Mbps讀取FIFO中的資料;當CPLD計數到cyb923讀取了一定數量的FIFO資料,CPLD則向cyb923發送FIFO不可讀信号,防止FIFO讀空。MPEG-2傳輸碼率的并行最大速度為27/8=3.375Mbps,而讀FIFO速率為27Mbps,是以FIFO不會有溢出。考慮到延時,本方案選用較小容量的 FIFO7202。cyb923在FIFO不可讀時,向ASI碼流中填充K28.5以維持270Mbps的固定傳輸速率。最後串行資料經過驅動就可用同軸電纜傳送出去。本方案中,同步字K28.5的插入采用傳輸碼流的單個位元組前後不能都是K28.5同步字的方式。這種方案相對其它兩種方案來說,判斷和處理都相對簡單.

       3.2 ASI解碼

   在ASI的接收端,輸入的ASI碼流經過均衡後,輸入到 cyb933晶片。它由内部的時鐘鎖相環首先鎖定ASI碼流時鐘,檢測同步字K28.5;找到後即确定了ASI比特流順序,然後進行串/并轉換。

  由此可知,檢測到K28.5,即位元組對齊是ASI解碼的重要前提,由此cyb933定義了一套檢測位元組同步的方法。考慮到傳輸誤碼等原因可能造成假K28.5,是以cyb933采用雙位元組确認方法。即連續兩個位元組都是K28.5,才确認位元組同步了,接着進入正常的單位元組解碼狀态。在解碼狀态,如果在64個解碼位元組中,CPLD計數到有16個位元組是錯誤的,則CPLD必須向cyb933發送資訊,要求cyb933重新進行位元組同步。

  位元組同步後,因為K28.5是cyb923插入的同步位元組,不能作為有效資料輸出,cyb933自動略除這些同步位元組。當cyb933檢測到有效資料時,cyb933将輸出一位目前資料有效的訓示,如果把這個信号當作FIFO的寫有效,則FIFO中的資料一定都是有效資料了。當FIFO半滿時,CPLD接收FIFO的半滿信号後,CPLD讀取FIFO中的資料,并根據讀出的位元組是否是047H來确定TS包的同步位元組;如果找到TS包同步字,将恢複對應的幀同步信号,此時CPLD計數188恢複出完整的TS包,接下來的位元組如果不是 047H,說明輸入資料有誤,CPLD将丢棄這些資料直到找到047H同步字,在此期間CPLD輸出TS空包。重新包同步後,CPLD才又開始計數輸出正确的188位元組的MPEG-2 TS包,進而恢複出SPI正确的11位信号。同樣,當FIFO資料不可讀時,CPLD也輸出TS空包,以維持輸出的MPEG-2碼率恒定。

  在SPI轉ASI的設計中,直接對SPI資料進行ASI編碼,而不考慮誤碼問題。主要考慮 SPI資料直接從MB390輸出,沒有經過遠距離傳輸,因而降低了ASI編碼邏輯控制的複雜度。在ASI解碼過程中,ASI資料經過遠距離傳輸,要考慮誤碼的因素,是以增加了位元組和包的重同步設計,以增加抗幹擾能力。本方案在實際應用中很好地實作了SPI/ASI的互相轉換。