• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

      數(shù)字電視碼流的分析轉(zhuǎn)換

      2010-03-14 09:04:58袁三男王紹徐
      電視技術(shù) 2010年12期
      關(guān)鍵詞:視音頻碼流字節(jié)

      袁三男,王紹徐

      (上海電力學院 計算機與信息工程學院,上海 200090)

      1 引言

      數(shù)字電視[1]普遍采用MPEG-2壓縮方式,MPEG-2標準中定義了兩種復合信息流,即傳送流(TransportStream,TS)和節(jié)目流(Program Stream,PS)。TS與 PS的區(qū)別在于TS的包結(jié)構(gòu)是188字節(jié)固定長度,而PS流的包結(jié)構(gòu)是可變長度的。

      PS包與TS包在結(jié)構(gòu)上的差異導致其對傳輸誤碼具有不同的抵抗能力,因而應用環(huán)境也有所不同。TS碼流由于采用了固定長度的包結(jié)構(gòu),當傳輸誤碼破壞了某一TS包的同步信息時,接收機可在固定的位置檢測后面包中的同步信息,從而恢復同步,避免了信息丟失。而PS包由于長度是變化的,一旦某一PS包的同步信息丟失,接收機無法確定下一包的同步位置,從而造成失步,導致嚴重的信息丟失。因此,在信道環(huán)境較為惡劣、傳輸誤碼較高時,一般采用TS碼流,而在信道環(huán)境較好、傳輸誤碼較低時,一般采用PS碼流。由于TS碼流具有較強的抵抗傳輸誤碼的能力,目前在數(shù)字電視傳輸中均采用了TS碼流。PS是為在存儲介質(zhì)保存視頻信息而開發(fā)的,因此當進行存儲或傳輸環(huán)境好的情況下一般均采用PS格式。

      從MPEG-2包流結(jié)構(gòu)的剖析可以看出,TS和PS是可以互相轉(zhuǎn)換的,并且在當前數(shù)字電視大發(fā)展的時刻這種轉(zhuǎn)換工作是經(jīng)常和必要的。筆者利用數(shù)字電視傳輸?shù)腡S流,針對TS流中PES(包基本流)包含整個GoP(圖像組)的情況,進行了TS到PS的轉(zhuǎn)換,按照不同的節(jié)目,將每幀圖像而不是每個GoP分別構(gòu)成一個PES,每個PES構(gòu)成一個PS,使傳輸?shù)腡S流可以構(gòu)成獨立的多個PS節(jié)目進行存儲或播放。針對該例,分析了構(gòu)建PS流時的SCR(系統(tǒng)時鐘參考),PTS(顯示時間標簽),DTS(解碼時間標簽)等,并提出了一種新的算法和實現(xiàn)方式。

      2 TS與PS流分析

      TS流采用188字節(jié)長度的包為單位進行傳輸,目前流量一般為40 Mbit/s左右,數(shù)字電視采用MPEG-2編碼,每套標清節(jié)目的流量一般為4~5 Mbit/s,因此數(shù)字電視的每個頻點即每個TS流可復用8套節(jié)目,實際復用6套節(jié)目的比較多,如這里分析和轉(zhuǎn)換的TS流為上海地區(qū)730頻點的TS,它復用了6套,經(jīng)分析得知,其6套節(jié)目分別是中央 1,2,5,6,3,4 套, 對應的節(jié)目標識號 PID 分別為 110(113),120(123),130(133),140(143),150(153),160(163),其中前一個為視頻PID,括號中為音頻PID,數(shù)字均用16進制。為了得到這些PID,需對TS流進行分析。下面介紹分析流程。

      TS流格式為:TS頭(4字節(jié))和TS數(shù)據(jù)(184字節(jié))。TS頭為:同步(1字節(jié))為 47,傳輸錯誤指示(1位),負載開始指示(1 位),傳輸優(yōu)先級(1 位),PID(13 位),加密控制(2位),調(diào)整字段控制(2位),相同 PID TS 包計數(shù)(4位),共4字節(jié)。因此分析轉(zhuǎn)換TS時首先必須找到同步頭,然后按照不同的PID針對每個TS包進行不同的處理。搜索同步頭的算法如圖1所示。

      圖1 TS包同步頭搜索算法

      圖1中分析TS包時首先需要進行TS的同步搜索,分成兩個狀態(tài),即同步和同步丟失。當檢測到連續(xù)5個同步字節(jié)時認為進入同步狀態(tài),在同步狀態(tài)下連續(xù)未檢測到3個同步字節(jié)認為同步丟失,進行TS包分析時必須處于同步狀態(tài)下。圖中處理188字節(jié)模塊即是TS包的分析處理模塊。

      分析TS包時[2]必須找出其復用關(guān)系,先找PAT表,標準規(guī)定PID=0的包構(gòu)成PAT表[3]。按照MPEG-2標準定義[3],PAT表中包含了每個PMT表的節(jié)目號及PID,針對本文分析的TS流,其PAT數(shù)據(jù)為47 40 00(PID為0)13 00 00 b0 25 00 01 df00 00(后面開始為節(jié)目號和PID)00 00 e0 10 00 65 e0 81 00 66 e0 82 00 67 e0 83 00 68 e0 84 00 69 e0 85 00 6a e0 86 a2 00 41 f4……由此可以得出各個節(jié)目號和對應的PID為:00-10(此為NIT表),65—81,66—82,67—83,68—84,69—85,6a—86(為 6個節(jié)目,對應節(jié)目號和相應的PID)。

      得到PMT的PID后,可以按照標準的定義分析PMT表。以65號節(jié)目按PID=81為例,提取數(shù)據(jù)為:47 40 81(PID=81)12 00 02 b0 1d 00 65 c5 00 00 ff fe f0 00 02 e1 10 f0 00 04 e1 13 f0 06 0a 04 63 68 69 00 c8 a0 2a 90,PMT表中規(guī)定了每個節(jié)目的流類型和對應的PID,上述數(shù)據(jù)中02 e1 10 f0 00表示節(jié)目中有類型為2即視頻流,PID=110;04 e1 13 f0 06表示節(jié)目中有類型為4即音頻流,PID=113。因此,分析該節(jié)目的視頻和音頻時,只要提取PID為110和113的TS包即可。TS包的邏輯關(guān)系如圖2所示。

      圖2 TS包邏輯關(guān)系

      按照PID可分別從TS包中提取出各個節(jié)目的視音頻。視音頻按照PES組成,因此通過重新打包可以恢復PES。對于TS轉(zhuǎn)PS,就是將恢復的PES重新按照PS的結(jié)構(gòu)進行再打包,PS重要的參數(shù)為SCR,PTS,DTS等,其他參數(shù)在此不作討論。

      PTS和DTS位于PES層,主要用于視音頻的同步。編碼產(chǎn)生的視音頻分別構(gòu)成基本碼流ES,它是不分段的連續(xù)碼流,而PES是將ES分割成段并加上相應的頭信息,在傳輸時將PES包再分段打成有固定長度188字節(jié)的TS流或可變長度的PS流。在TS流中TS包頭加入了節(jié)目時鐘參考PCR,解碼器在解碼時,首先利用PCR重建和編碼器同步的27 MHz系統(tǒng)時鐘,恢復系統(tǒng)時鐘后,再利用PES流中的DTS和PTS進行音頻與視頻間的同步。在節(jié)目流PS包頭中同樣加入系統(tǒng)時鐘參考SCR,它的作用與PCR相似,SCR也可以理解為解碼器應該開始從磁盤讀取數(shù)據(jù)的時間。PTS和DTS均為33位長,其單位是以27 MHz時鐘的300分頻即90 kHz得到,而PCR和SCR以27 MHz為單位,分兩個部分,base為90 kHz為單位,ext以27MHz為單位。

      對于音頻而言DTS和PTS是一致的,對視頻而言,如果編碼時沒有B幀,即沒有后向預測,則是一致的,但有B幀時需作調(diào)整,因為I幀內(nèi)部編碼,P幀前向預測,只使用了前面幀的信息,而B幀雙向預測,既使用了前面的IP幀信息,又使用了后面的IP幀信息,因此在解碼時必須先解出后面的IP幀,再解當前的B幀,但顯示時該B幀要比后面的IP幀提前,具體如圖3所示。

      圖3中表示了各幀圖像的時間相互關(guān)系,以B14為例,為了實現(xiàn)更有效的編碼方法,采用雙向預測運動補償即B圖編碼,用前一幀I13和后面的幀P16作為參考圖(雙向預測的圖如B15不作為別的預測參考圖),因此解碼時需先解I13,然后解P16,然后B14,而顯示時按照I13B14B15P16的規(guī)律。以1個I幀和若干個BP幀為單位構(gòu)成一個GoP,顯然編碼開始時的第一個GoP比其他GoP少了2個B幀。因為截取流的時候不一定正好從頭開始,所以分析時從任意中間位置開始(可以搜索使得從I幀開始)。

      對于完整的PES結(jié)構(gòu),以視音頻為例,為:包開始碼3字節(jié)(000001),流 ID 1 字節(jié),PES 長度 2 字節(jié),頭標識 3字節(jié),若有PTS則5字節(jié)PTS,若有DTS則5字節(jié)DTS……后部為其他的標識及數(shù)據(jù)。對TS轉(zhuǎn)PS,需要修改的主要是PTS及DTS,以及增加的PS頭信息,其余可以完全復制。

      PS的結(jié)構(gòu)為:包開始碼4字節(jié)(000001BA),SCR 6字節(jié),程序流速率3字節(jié),填充數(shù)據(jù),若有系統(tǒng)頭部信息,則系統(tǒng)頭開始碼4字節(jié)(000001BB),系統(tǒng)信息,PES包數(shù)據(jù)。SCR意義如上所述,在解碼端是一個很重要的參數(shù)。在TS轉(zhuǎn)PS時,主要構(gòu)造SCR信息,具體算法見下文。

      3 TS的轉(zhuǎn)換

      TS流可以進行復用解復用[4]。為了實現(xiàn)TS到PS的轉(zhuǎn)換,先從TS得到各個節(jié)目的PES,按照PES數(shù)據(jù)和相關(guān)算法得出新的PES的PTS和DTS,再構(gòu)成PS。PTS和DTS之間的相互關(guān)系分析如圖4所示。

      圖4 上海730 MHz頻點中央電視臺CCTV-1的DVB_C PES頭信息

      圖中PTS和DTS均是以90 kHz為單位計數(shù)??梢缘?出 如 下 關(guān) 系 :PTS1-DTS1=10 800=3×3 600,PTS2-DTS2=10 800=3×3 600,PTS2-PTS1=43 200=12×3 600,PTS3-DTS3=10 800=3×3 600,PTS3-PTS2=43 200=12×3 600,PTS4-DTS4=10 800=3×3 600,PTS4-PTS3=43 200=12×3 600。在PAL制式中每幀間隔為40ms,即3 600個90kHz時鐘,因此可以得出,在該頻點中,對于PID=0x110的TS包構(gòu)成的PES包中,每個PES包頭中的PTS均比DTS延遲3幀時間,而相鄰兩個PES相隔時間為12幀。

      圖5 PID=0x110的PES中原始TS包數(shù)據(jù)頭信息

      進一步分析PID=0x110的PES包中ES結(jié)構(gòu),如圖5所示。

      由圖可以得出,在該流中的幀結(jié)構(gòu)為IBB PBB PBB PBB,一個GoP為12個幀。整個12幀圖像構(gòu)成一個PES。

      將該TS流轉(zhuǎn)成PS流時,一幀圖像構(gòu)成一個PES包,一個PES構(gòu)成一個PS包。為此,將原TS流中的PES的頭部直接拷貝成為PS流中的PES的頭部,該PES為GoP中的第一幀即I幀,其后的各B和P幀分別加上PES頭及PS頭組成PS包,PES的長度按照直接拷貝的數(shù)據(jù)量得到,PES的PTS和DTS,按如下算法計算:

      1)程序開始時,取出TS流中新開始的一個PES,此即GoP,含有整個12幀的數(shù)據(jù),將其按照幀開始標志劃分為12個PES。

      2)GoP開始數(shù)據(jù)為I幀,取出該PES的DTS值。

      3) 對于I,B,P幀新購建的PES的 DTS和PTS,分別按照式(1)計算

      按此算法得出的IBP的DTS和PTS與圖3是一致的。

      進一步分析可知,式(1)中的 PTSI,P的系數(shù) 3是由IBBPBB的格式引起的,即IP中間加了2個雙向預測的B幀圖像。而IBBPBB是最常用的一種方式。

      對于構(gòu)成PS包,令SCR_base=DTS-3 600,SCR_ext=0,由此即可構(gòu)成PS包。

      4 軟件設(shè)計與實現(xiàn)

      按照上述原理及算法,筆者針對輸入的原始TS流,分析并修正了PES的參數(shù),增加了PS頭信息,實現(xiàn)了數(shù)字電視中的TS流轉(zhuǎn)換成PS流,圖6為實現(xiàn)框圖。

      圖6 TS-PS轉(zhuǎn)換流程圖

      5 結(jié)論

      筆者從數(shù)字電視出發(fā),分析了TS和PS流結(jié)構(gòu)及一些重要參數(shù),按不同的應用將TS流轉(zhuǎn)換為PS流,轉(zhuǎn)換過程中對一些重要參數(shù)的修正和重建提出了一種算法,轉(zhuǎn)換結(jié)果經(jīng)多種解碼器播放測試完全正確。

      筆者提出的算法和程序既可在PC Visual C++6.0環(huán)境下運行,也可裁減到嵌入式系統(tǒng)中直接將收到的TS流實時轉(zhuǎn)換成多個節(jié)目的PS流,并通過網(wǎng)絡(luò)輸出存儲。

      [1]盧官明,宗昉.數(shù)字電視原理[M].北京:機械工業(yè)出版社,2005.

      [2]蘇貝,張白愚,楊莉蕓.DVB傳送流的可視化分析[J].信息工程大學學報,2004(3):13-16.

      [3]鐘玉琢,王琪,趙黎,等.MPEG-2運動圖像壓縮編碼國際標準及MPEG的新進展[M].北京:清華大學出版社,2002。

      [4]侯旭柯,肖沙里,張流強,等.MPEG-2傳輸流多路復用的軟件設(shè)計與實現(xiàn)[J].電視技術(shù),2009,33(12):11-13.

      猜你喜歡
      視音頻碼流字節(jié)
      No.8 字節(jié)跳動將推出獨立出口電商APP
      分布式碼流實時監(jiān)控與錄制系統(tǒng)的設(shè)計與實現(xiàn)
      數(shù)字電視TS碼流協(xié)議簡要分析
      視聽(2021年8期)2021-08-12 10:53:42
      我國首個超高清視音頻國家重點實驗室在滬啟動建設(shè)
      中國廣播(2020年1期)2020-02-20 14:29:35
      No.10 “字節(jié)跳動手機”要來了?
      簡談MC7字節(jié)碼
      基于內(nèi)容結(jié)構(gòu)特征的Flash電影視音頻特征的提取研究
      電視臺視音頻資料數(shù)字化存儲
      一種比較ASN.1碼流差異的方法
      基于梯度的CCSDS壓縮碼流控制算法研究
      洪雅县| 宕昌县| 闽清县| 惠安县| 扶沟县| 瓮安县| 和平区| 新竹县| 临朐县| 辽宁省| 吴旗县| 武夷山市| 南澳县| 读书| 海安县| 钦州市| 珲春市| 金秀| 景洪市| 保山市| 岑溪市| 连江县| 东辽县| 新疆| 定陶县| 七台河市| 伊宁县| 梁平县| 滕州市| 洛浦县| 新宁县| 四子王旗| 永胜县| 牡丹江市| 安陆市| 梅河口市| 永丰县| 嘉峪关市| 武穴市| 湄潭县| 昌黎县|