国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

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

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

袁三男,王紹徐

(上海電力學(xué)院 計(jì)算機(jī)與信息工程學(xué)院,上海 200090)

1 引言

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

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

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

2 TS與PS流分析

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

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

圖1 TS包同步頭搜索算法

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

分析TS包時(shí)[2]必須找出其復(fù)用關(guān)系,先找PAT表,標(biāo)準(zhǔn)規(guī)定PID=0的包構(gòu)成PAT表[3]。按照MPEG-2標(biāo)準(zhǔn)定義[3],PAT表中包含了每個(gè)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……由此可以得出各個(gè)節(jié)目號和對應(yīng)的PID為:00-10(此為NIT表),65—81,66—82,67—83,68—84,69—85,6a—86(為 6個(gè)節(jié)目,對應(yīng)節(jié)目號和相應(yīng)的PID)。

得到PMT的PID后,可以按照標(biāo)準(zhǔn)的定義分析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ī)定了每個(gè)節(jié)目的流類型和對應(yīng)的PID,上述數(shù)據(jù)中02 e1 10 f0 00表示節(jié)目中有類型為2即視頻流,PID=110;04 e1 13 f0 06表示節(jié)目中有類型為4即音頻流,PID=113。因此,分析該節(jié)目的視頻和音頻時(shí),只要提取PID為110和113的TS包即可。TS包的邏輯關(guān)系如圖2所示。

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

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

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

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

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

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

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意義如上所述,在解碼端是一個(gè)很重要的參數(shù)。在TS轉(zhuǎn)PS時(shí),主要構(gòu)造SCR信息,具體算法見下文。

3 TS的轉(zhuǎn)換

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

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

圖中PTS和DTS均是以90 kHz為單位計(jì)數(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個(gè)90kHz時(shí)鐘,因此可以得出,在該頻點(diǎn)中,對于PID=0x110的TS包構(gòu)成的PES包中,每個(gè)PES包頭中的PTS均比DTS延遲3幀時(shí)間,而相鄰兩個(gè)PES相隔時(shí)間為12幀。

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

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

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

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

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

2)GoP開始數(shù)據(jù)為I幀,取出該P(yáng)ES的DTS值。

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

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

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

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

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

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

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

5 結(jié)論

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

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

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

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

[3]鐘玉琢,王琪,趙黎,等.MPEG-2運(yùn)動(dòng)圖像壓縮編碼國際標(biāo)準(zhǔn)及MPEG的新進(jìn)展[M].北京:清華大學(xué)出版社,2002。

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

猜你喜歡
視音頻碼流字節(jié)
No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
分布式碼流實(shí)時(shí)監(jiān)控與錄制系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
數(shù)字電視TS碼流協(xié)議簡要分析
視聽(2021年8期)2021-08-12 10:53:42
我國首個(gè)超高清視音頻國家重點(diǎn)實(shí)驗(yàn)室在滬啟動(dòng)建設(shè)
中國廣播(2020年1期)2020-02-20 14:29:35
No.10 “字節(jié)跳動(dòng)手機(jī)”要來了?
簡談MC7字節(jié)碼
基于內(nèi)容結(jié)構(gòu)特征的Flash電影視音頻特征的提取研究
電視臺視音頻資料數(shù)字化存儲(chǔ)
一種比較ASN.1碼流差異的方法
基于梯度的CCSDS壓縮碼流控制算法研究
邛崃市| 镇安县| 杭锦后旗| 宜城市| 临江市| 六盘水市| 准格尔旗| 宜君县| 綦江县| 宁河县| 新丰县| 罗江县| 瓮安县| 沽源县| 绥滨县| 来宾市| 甘德县| 锡林浩特市| 安仁县| 重庆市| 松滋市| 宁陵县| 孟州市| 武冈市| 临湘市| 建阳市| 库尔勒市| 日喀则市| 临桂县| 依兰县| 藁城市| 汝城县| 前郭尔| 东平县| 靖远县| 克东县| 连平县| 黔西县| 忻城县| 台江县| 噶尔县|