什么是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的相互轉換。
轉自:https://blog.csdn.net/fancsxx/article/details/8289240?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-4.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnPai2%7Edefault-4.control