亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

幀類型的檢測方法和裝置的制作方法

文檔序號:7895988閱讀:302來源:國知局
專利名稱:幀類型的檢測方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及視頻處理技術(shù)領(lǐng)域,特別涉及幀類型的檢測方法和裝置。
背景技術(shù)
視頻編碼標(biāo)準(zhǔn)中的可解碼數(shù)據(jù)幀類型可分為幀內(nèi)編碼幀(I-Frame,Intra coded frames, I幀)、單向預(yù)測編碼幀(P-Frame,Predicted frames, P幀)、雙向預(yù)測編碼幀 (B-Frame, Bi-directional predicted frames, B 幀)。在視頻應(yīng)用中,I 幀作為可解碼的起始,一般稱為隨機(jī)接入點(diǎn),可提供隨機(jī)接入以及快速瀏覽等服務(wù)。在傳輸過程中,不同的幀類型出錯,對解碼端的主觀質(zhì)量的影響是不同的,I幀具有截?cái)嗾`差傳播的作用,因此,如果I幀出錯,則對整個視頻的解碼質(zhì)量影響極大;P幀往往會作為其他幀間編碼幀的參考幀,其作用次于I幀;由于B幀通常不做為參考幀,其丟失對視頻解碼質(zhì)量影響較小。因此, 在視頻傳輸應(yīng)用中區(qū)分?jǐn)?shù)據(jù)流的不同幀類型有非常重要的意義,比如作為視頻質(zhì)量評估的重要參數(shù),幀類型判斷的準(zhǔn)確性直接影響到評估結(jié)果的準(zhǔn)確性;可以對視頻中不同類型的幀進(jìn)行不等差保護(hù)來實(shí)現(xiàn)視頻的有效傳輸,另外為了節(jié)省傳輸資源,在帶寬不足時可以丟棄一些對主觀質(zhì)量影響不大的幀。常用的流傳輸技術(shù)主要為互聯(lián)網(wǎng)流媒體聯(lián)盟(Internet Streaming Media Alliance, ISMA)方式和活在網(wǎng)際協(xié)議上的動圖像專家組傳輸流(Moving Picture Expert Group-2 Transport Stream over Intet PetProtoco 1, MPEG-2 TS over IP)方式,這兩種協(xié)議方式在將壓縮視頻數(shù)據(jù)流進(jìn)行封裝時,都設(shè)計(jì)了能指示視頻數(shù)據(jù)類型的指示位。 ISMA方式是將壓縮視頻數(shù)據(jù)流直接采用實(shí)時傳輸協(xié)議(Real-time Transport Protocol, RTP)進(jìn)行封裝,其中 MPEG-4 Part2 遵循互聯(lián)網(wǎng)標(biāo)準(zhǔn) 3016 (Request For Comments 3016, RFC3016), H.洸4/聽覺和視覺信號編碼(Aural and Visual Code, AVC)遵循 RFC3984,以 RFC3984為例,RTP頭部包含的序列號Sequence Number)、時間戳(Timestamp)等可以用來判斷丟幀以及幫助檢測幀類型;MPEG-2 TS over IP方式也分兩種用戶數(shù)據(jù)報(bào)文協(xié)議/ IP 上的傳輸流(TS over User Datagram Protocol/IP, TS overUDP/IP)和實(shí)時傳輸協(xié)議 / UDP/IP上的傳輸流(TS over Real-time Transport Protocol/UDP/IP,TS over RTP/UDP/ IP),在視頻傳輸中比較常用的是TS over RTP/UDP/IP (后面簡稱TS over RTP),是將壓縮視頻數(shù)據(jù)流封裝為基本流,進(jìn)一步將基本流劃分為TS分組,最后對TS分組用RTP進(jìn)行封裝并傳輸。RTP是針對多媒體數(shù)據(jù)流的一種傳輸協(xié)議,負(fù)責(zé)提供端到端的實(shí)時數(shù)據(jù)傳輸,其報(bào)文主要包括四個部分RTP頭,RTP擴(kuò)展頭,凈載頭,凈載數(shù)據(jù)。RTP頭中的包含的數(shù)據(jù)主要有序列號、時間戳、標(biāo)志位等。序列號與RTP包一一對應(yīng),每發(fā)送一個包增加1,可用于檢測丟包;時間戳可表示視頻數(shù)據(jù)的采樣時間,不同的幀會有不同的時間戳,可指示視頻數(shù)據(jù)的播放順序;標(biāo)志位則用來標(biāo)識一幀的結(jié)束。這些信息是幀類型判斷的重要依據(jù)。一個TS分組有188個字節(jié),由分組首部、可變長度適配頭和凈負(fù)荷數(shù)據(jù)組成,其中分組首部的起始指示位(payload unit start indicator,PUSI)表示凈負(fù)荷數(shù)據(jù)是否包含打包的分組流(Packet Elementary Stream,PES)包頭或節(jié)目特殊信息(Program Special Information, PSI)。對于H. 264媒體格式,每個PES包頭預(yù)示著一個NAL單元的開始。TS 分組自適應(yīng)區(qū)段中的一些標(biāo)志位,如隨機(jī)接入指示(random access indicator)、基本流優(yōu)先級指示(elementary stream priority indicator),可以用來判斷傳輸內(nèi)容的重要性,對于視頻而言,隨機(jī)接入指示為1表示隨后遇到的第一個PES包中包含序列開始信息, 基本流優(yōu)先級指示為1表示該TS分組負(fù)載內(nèi)容有較多的Intra塊數(shù)據(jù)。如果通過PUSI判斷出TS分組負(fù)載部分包含PES包頭,則可以進(jìn)一步挖掘?qū)鬏斢杏玫男畔ⅰES分組由PES分組包頭及其后的分組數(shù)據(jù)組成,原始流數(shù)據(jù)(視頻、音頻等) 加載在PES包數(shù)據(jù)中。PES分組插在傳送流分組中,每個PES分組首部的第一個字節(jié)就是傳送流分組有效負(fù)載的第一個字節(jié)。即一個PES包頭必須包含在一個新的TS包中,同時PES 包數(shù)據(jù)要充滿TS傳送包的有效負(fù)荷區(qū)域,若PES包數(shù)據(jù)的結(jié)尾無法與TS包的結(jié)尾對齊,則需要在TS的自適應(yīng)區(qū)域中插入相應(yīng)數(shù)量的填充字節(jié),使得兩者的結(jié)尾對齊。PES優(yōu)先級表示PES包數(shù)據(jù)中的凈載的重要性,對于視頻,為1表示Intra數(shù)據(jù);另外PTS表示顯示時間, DTS表示解碼時間,可以用來判斷視頻載荷內(nèi)容的前后相關(guān)性,從而判斷載荷類型。TS over RTP方式中,為了保護(hù)傳輸中的視頻版權(quán)內(nèi)容,在傳輸過程中往往會采用對負(fù)載加密的方式進(jìn)行傳輸。對TS分組的加密是對分組的有效載荷部分進(jìn)行加密,一旦TS 頭部的加擾標(biāo)記置1,則其載荷被加密,此時僅可以利用相鄰PUSI之間具有相同PID的數(shù)據(jù)包的長度(同一個視頻幀的長度)來判斷出載荷數(shù)據(jù)類型。如果TS分組中PES頭未加密, 則除了可以利用上述視頻幀的長度來判斷數(shù)據(jù)幀類型外,還可以利用PTS來協(xié)助判斷幀類型。通過以上的介紹可知不同類型的數(shù)據(jù)幀其數(shù)據(jù)量有區(qū)別,I幀由于只去除了幀內(nèi)的冗余,其數(shù)據(jù)量一般比去除了幀間冗余的幀間編碼幀大,而P幀一般又比B幀的數(shù)據(jù)量大。針對這一特性,目前存在一些幀類型檢測算法在TS分組加密的情況下,利用幀的數(shù)據(jù)量來判斷幀類型;以下介紹運(yùn)用比較多的兩種方法一 通過解析TS分組,得到每個視頻幀的長度,通過長度大小信息推斷幀類型。已經(jīng)提出的方法是針對TS分組的有效載荷部分已加密的情況下,確定幀類型。該方法通過解析TS分組的Continuity Counter域判斷分組的丟失狀態(tài),通過本次執(zhí)行判斷之前的圖像組(Group Of Pictures, G0P)的結(jié)構(gòu)信息估計(jì)丟失的分組狀態(tài),并結(jié)合TS分組頭部自適應(yīng)字段的可用信息(Random Access hdicator,RAI或者Elementary Stream Priority Indicator, ESPI)來判斷視頻幀的類型。對于I幀的識別,可以用以下三種方法1、利用RAI或者ESPI識別I幀。2、在不能利用RAI或者ESPI識別時,通過緩存一個GOP的數(shù)據(jù),將當(dāng)前緩存的數(shù)據(jù)中的最大值做為I幀,GOP的長度需要預(yù)先定義,一旦GOP長度發(fā)生變化,該方法將失效。3、使用表示最大GOP長度的值作為I幀的確定周期,確定周期內(nèi)的最大數(shù)據(jù)量幀是I幀,確定周期是已檢測出的I幀周期的最大值。對于P幀,用以下三種方法1、從起始幀至緊接I幀之前的幀之間的幀中,選擇數(shù)據(jù)量大于周圍幀的每一幀確定為P幀。針對處理目標(biāo)流的GOP結(jié)構(gòu)中包括的確定幀模式,從確定周期中選擇與N種確定幀模式相對應(yīng)的連續(xù)幀作為確定目標(biāo)幀,將確定目標(biāo)幀的數(shù)據(jù)量之間的大小關(guān)系與確定幀模式進(jìn)行比較,可以基于其間的匹配來確定P幀。在GOP結(jié)構(gòu)中,使用以下模式作為確定幀模式該模式包括緊接在P幀之前的所有連續(xù)B幀和在P幀下一幀的一個B幀。此時GOP 的一些信息需要預(yù)先輸入。2、基于表現(xiàn)模式中預(yù)定位置處的多個幀的幀數(shù)據(jù)量的平均值而計(jì)算的閾值與表現(xiàn)模式中每一幀的幀數(shù)據(jù)量之間的比較結(jié)果。3、使用調(diào)整系數(shù)基于幀數(shù)據(jù)量來調(diào)整用于區(qū)分P和B幀的閾值。調(diào)整系數(shù)在給定范圍內(nèi)順序選擇的臨時調(diào)整系數(shù)來執(zhí)行與幀類型確定處理相同的處理,從而對預(yù)先給定的獲知周期中的每一幀的幀類型進(jìn)行估計(jì),計(jì)算估計(jì)結(jié)果與從未加密流中獲取的實(shí)際幀類型的錯誤確定比,獲知具有最低錯誤確定比的臨時調(diào)整系數(shù)作為真實(shí)的調(diào)整系數(shù)。對于B幀,判斷方法為1幀,P幀以外的幀確定為B幀。以上判斷幀類型的方法,對于有分組丟失的情況,基于RTP序列號和TS首部連續(xù)性指示符(CC)可以檢測分組丟失,通過GOP結(jié)構(gòu)可以模式匹配估計(jì)丟失的分組狀態(tài),從而達(dá)到一定程度的糾正。但是對于不可調(diào)整閾值的方法需要預(yù)先輸入GOP信息,而對于可調(diào)整閾值的方法則需要從未加密的碼流中獲取幀類型信息來訓(xùn)練系數(shù),需要過多的人工干預(yù)。另外,需要緩存一個GOP再進(jìn)行幀類型估計(jì),不適用于實(shí)時應(yīng)用。再次,I幀判斷只進(jìn)行一次,可調(diào)整的系數(shù)是周期,在每個周期中直接取最大值為I,只考慮到了局部特性,對于全局特性沒有考慮。二 利用閾值區(qū)分不同幀的方法可以分四步進(jìn)行1、閾值的更新區(qū)分I幀的閾值(Ithresh)sealed_max_iframe = scaled_max_iframe氺0· 995 ;其中 sealed_max_iframe 為上一個I幀大小。如果 nbytes > sealed_max_iframe,貝Ij ithresh = (scaled_max_iframe/4+av_nbytes*2)/2 ;其中 av_nbytes 為當(dāng)前 8 幀的滑動均值。區(qū)分P幀的閾值(Pthresh)scaled_max_pframe = scaled_max_pframe*0· 995 ;胃中 scaled_max_pframe ^iJl 一個P幀大小。如果 nbytes > scaled_max_pframe,則 pthresh = av_nbytes*0. 75 ;2、檢測I幀視頻每隔一段時間會有一個I巾貞,I幀比平均值大,I巾貞比P幀大。如果當(dāng)前幀數(shù)據(jù)量比Ithresh大,則認(rèn)為該幀是I幀。3、檢測P幀利用B幀比平均值小。如果當(dāng)前幀的數(shù)據(jù)量大于Pthresh,小于 Ithresh,則認(rèn)為該幀是P幀。4、其他的幀為B幀。以上第二種判斷幀類型的方法,采用衰減因子控制閾值,該因子直接影響I幀的判斷,當(dāng)后續(xù)I幀大于當(dāng)前I幀時,容易判斷出I幀;但是當(dāng)后續(xù)I幀遠(yuǎn)小于當(dāng)前I幀時,需要經(jīng)過很多幀的衰減才能重新判斷出I幀。且算法中固定為0. 995,沒有考慮GOP變化劇烈的情況,很多情況下并不適用。衰減因子越小,則I幀漏檢率越小,同時P誤判為I幀的概
8率增加;衰減因子越大,則I幀漏檢率增大(序列中I幀的大小變化劇烈時),將I幀判斷為P幀。因此檢測準(zhǔn)確率較低。另外,僅考慮使用閾值判斷B/P幀,對I/P/P/P...這種幀結(jié)構(gòu),算法會將很多P幀錯判為B幀誤判率高。

發(fā)明內(nèi)容
本發(fā)明實(shí)施例要解決的技術(shù)問題是提供一種幀類型的檢測方法和裝置,提高幀類型檢測的正確率。為解決上述技術(shù)問題,本發(fā)明所提供的幀類型的檢測方法實(shí)施例可以通過以下技術(shù)方案實(shí)現(xiàn)檢測各幀的播放時間;若當(dāng)前幀的播放時間小于已經(jīng)接收到的幀的最大播放時間,則確定所述當(dāng)前幀為雙向預(yù)測編碼幀B幀。一種幀類型的檢測方法,包括獲得接收到的幀所在碼流的編碼類型,所述編碼類型包括開環(huán)編碼和閉環(huán)編碼;若當(dāng)前幀的數(shù)據(jù)量大于第一域值則確定當(dāng)前幀為明顯的幀內(nèi)編碼幀I幀,所述第一閾值由設(shè)定連續(xù)個數(shù)的幀的平均數(shù)據(jù)量以及I幀數(shù)據(jù)量計(jì)算得到;若當(dāng)前幀的前一幀為I幀、編碼類型為閉環(huán)編碼且當(dāng)前幀為非明顯的I幀,或者, 若當(dāng)前幀的前一幀為I幀、編碼類型為開環(huán)編碼且當(dāng)前幀的數(shù)據(jù)量大于第四閾值,則確定當(dāng)前幀為單向預(yù)測編碼幀P幀;所述第四閾值為一個圖像組的P幀平均數(shù)據(jù)量以及B幀平均數(shù)據(jù)量的均值;若當(dāng)前幀非I幀也非P幀,則確定當(dāng)前幀為B幀。一種幀類型的檢測裝置,包括時間檢測單元,用于檢測各幀的播放時間;幀類型確定單元,用于若當(dāng)前幀的播放時間小于已經(jīng)接收到的幀的最大播放時間,則確定所述當(dāng)前幀為雙向預(yù)測編碼B幀。一種幀類型的檢測裝置,包括類型獲得單元,用于獲得已經(jīng)接收到的幀所在碼流的編碼類型,所述編碼類型包括開環(huán)編碼和閉環(huán)編碼;幀類型確定單元,用于若當(dāng)前幀的數(shù)據(jù)量大于第一域值則確定當(dāng)前幀為明顯的I 幀,所述第一閾值由設(shè)定連續(xù)個數(shù)的幀的平均數(shù)據(jù)量以及I幀數(shù)據(jù)量計(jì)算得到;若當(dāng)前幀的前一幀為I幀、編碼類型為閉環(huán)編碼且當(dāng)前幀為非明顯的I幀,或者, 若當(dāng)前幀的前一幀為I幀、編碼類型為開環(huán)編碼且當(dāng)前幀的數(shù)據(jù)量大于第四閾值,則確定當(dāng)前幀為P幀;所述第四閾值為一個圖像組的P幀平均數(shù)據(jù)量以及B幀平均數(shù)據(jù)量的均值;若當(dāng)前幀非I幀也非P巾貞,則確定當(dāng)前幀為B幀。本發(fā)明實(shí)施例提供的技術(shù)方案,結(jié)合不同類型幀的編碼順序以及不同類型幀的前后數(shù)據(jù)量大小關(guān)系,在不解碼凈載的情況下判斷幀類型,消除了衰減因子的影響,提高了幀類型檢測的正確率。


為了更清楚地說明本發(fā)明實(shí)施例的技術(shù)方案,下面將對實(shí)施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他
的附圖。
圖IA為本發(fā)明實(shí)施例方法流程示意圖IB為本發(fā)明實(shí)施例方法流程示意圖2a為本發(fā)明實(shí)施例分級B幀編碼結(jié)構(gòu)示意圖2b為本發(fā)明實(shí)施例編碼順序和播放順序的關(guān)系,以及編碼的層級示意圖
圖3為本發(fā)明實(shí)施例丟包幀結(jié)構(gòu)示意圖4為本發(fā)明實(shí)施例方法流程示意圖5為本發(fā)明實(shí)施例方裝置結(jié)構(gòu)示意圖6為本發(fā)明實(shí)施例方裝置結(jié)構(gòu)示意圖7為本發(fā)明實(shí)施例方裝置結(jié)構(gòu)示意圖8為本發(fā)明實(shí)施例方裝置結(jié)構(gòu)示意圖9為本發(fā)明實(shí)施例方裝置結(jié)構(gòu)示意圖10為本發(fā)明實(shí)施例檢測結(jié)果示意圖11為本發(fā)明實(shí)施例檢測結(jié)果示意圖12為本發(fā)明實(shí)施例檢測結(jié)果示意圖13為本發(fā)明實(shí)施例檢測結(jié)果示意圖14為本發(fā)明實(shí)施例檢測結(jié)果示意圖15為本發(fā)明實(shí)施例檢測結(jié)果示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。一種幀類型的檢測方法,如圖IA所示,包括IOlA 檢測各幀的播放時間;102A:若當(dāng)前幀的播放時間小于已經(jīng)接收到的幀的最大播放時間,則確定上述當(dāng)前幀為雙向預(yù)測編碼B幀;進(jìn)一步地,本發(fā)明實(shí)施例還可以依據(jù)各幀的播放順序和編碼順序確定B幀在分級編碼中所屬的層級。對于如何確定層級在后文中將作進(jìn)一步的說明?;贐幀的特性, 若確定了其所屬的層級可以在很多領(lǐng)域應(yīng)用,例如在壓縮數(shù)據(jù)幀時,可以丟棄層級高的B 幀。在B幀的層級確定后的應(yīng)用本發(fā)明實(shí)施例不予限定。上述實(shí)施例,結(jié)合不同類型幀的編碼順序以及不同類型幀的前后數(shù)據(jù)量大小關(guān)系,在不解碼凈載的情況下判斷幀類型,消除了衰減因子的影響,提高了幀類型檢測的正確率。
本發(fā)明實(shí)施例還提供了另一種幀類型的檢測方法,如圖IB所示,包括IOlB 獲得接收到的幀所在碼流的編碼類型,上述編碼類型包括開環(huán)編碼和閉環(huán)編碼;102B 若當(dāng)前幀的數(shù)據(jù)量大于第一域值則確定當(dāng)前幀為明顯的I幀,上述第一閾值由設(shè)定連續(xù)個數(shù)的幀的平均數(shù)據(jù)量以及I幀數(shù)據(jù)量計(jì)算得到;上述明顯的I幀屬于I幀,若判斷為明顯的I幀,那么判斷錯誤的幾率是很低的, 但是有可能出現(xiàn)漏判,后續(xù)其他判斷I幀的方式可能出現(xiàn)錯判I幀的情況。若當(dāng)前幀的前一幀為I幀、編碼類型為閉環(huán)編碼且當(dāng)前幀為非明顯的I幀(當(dāng)前幀此時還不清楚其幀類型,但是可以確定其是否為明顯的I幀),或者,若當(dāng)前幀的前一幀為I幀、編碼類型為開環(huán)編碼且當(dāng)前幀的數(shù)據(jù)量大于第四閾值,則確定當(dāng)前幀為P幀;上述第四閾值為一個圖像組的P幀平均數(shù)據(jù)量以及B幀平均數(shù)據(jù)量的均值;若當(dāng)前幀非I幀也非P巾貞,則確定當(dāng)前幀為B幀。需要說明的是,上述圖IB對應(yīng)的方法可以獨(dú)立應(yīng)用,也可以與圖IA的方法結(jié)合使用,若結(jié)合使用可以在圖IA中播放時間無法檢測到的情況下使用實(shí)現(xiàn)方式。上述獲得接收到的幀所在碼流的編碼類型包括統(tǒng)計(jì)明顯的I幀后一幀的類型,若為P幀的比例達(dá)到設(shè)定比例則確定編碼類型為閉環(huán)編碼,否則為開環(huán)編碼。以下實(shí)施例以圖IB的方案與圖IA的方案結(jié)合使用為例進(jìn)行說明,若圖IB方案獨(dú)立使用的時,可以不用檢查播放時間是否能夠被檢測到。進(jìn)一步地在IOlA中若播放時間無法檢測到的方法實(shí)施例,還包括若當(dāng)前幀大于第二閾值,則確定當(dāng)前幀為I幀;上述第二閾值為當(dāng)前幀之前的一個I幀的數(shù)據(jù)量、當(dāng)前幀所在圖像組中P幀的平均數(shù)據(jù)量以及設(shè)定個數(shù)連續(xù)幀的平均數(shù)據(jù)量中的最大值。進(jìn)一步地在IOlA中若播放時間無法檢測到的方法實(shí)施例,還包括若當(dāng)前幀大于第三閾值,且當(dāng)前幀與前一個I幀的間隔超過固定間隔,則確定當(dāng)前幀為I幀;上述第三閾值為當(dāng)前幀所在圖像組各幀的平均數(shù)據(jù)量、上一個I幀到當(dāng)前幀的距離與預(yù)期的固定I幀間隔的遠(yuǎn)離程度、當(dāng)前幀的前一個P幀的數(shù)據(jù)量以及當(dāng)前幀所在圖像組I幀的數(shù)據(jù)量計(jì)算得到;或者,上述第三閾值根據(jù)當(dāng)前幀所在圖像組各幀的平均數(shù)據(jù)量以及上一個I幀到當(dāng)前幀的距離與預(yù)期的固定I幀間隔的遠(yuǎn)離程度計(jì)算得到。進(jìn)一步地在IOlA中若播放時間無法檢測到的方法實(shí)施例,還包括若當(dāng)前幀的上一幀為P幀且當(dāng)前幀的數(shù)據(jù)量大于第五閾值,或者當(dāng)前圖像組存在 B幀且當(dāng)前幀的數(shù)據(jù)量大于第六閾值,則確定當(dāng)前幀為P幀;上述第五閾值為第一調(diào)節(jié)因子與當(dāng)前幀所在圖像組的P幀的平均數(shù)據(jù)量的積,上述第一調(diào)節(jié)因子大于0. 5且小于1 ;上述第六閾值為P幀平均數(shù)據(jù)量和B幀平均數(shù)據(jù)量的均值;若當(dāng)前幀的上一幀為B幀且當(dāng)前幀的數(shù)據(jù)量小于第七閾值,或者當(dāng)前圖像組存在 P幀且當(dāng)前幀的數(shù)據(jù)量小于第八閾值,則確定當(dāng)前幀為P幀;上述第七閾值為第二調(diào)節(jié)因子與當(dāng)前幀所在圖像組的B幀的平均數(shù)據(jù)量的積,上述第二調(diào)節(jié)因子大于1小于1. 5 ;上述第八閾值為P幀平均數(shù)據(jù)量與B幀平均數(shù)據(jù)量的均值。進(jìn)一步地在IOlA中若播放時間無法檢測到的方法實(shí)施例,還包括
在幀類型判斷結(jié)束后,確定I幀的固定間隔,若在固定間隔達(dá)到后仍然沒有判斷存在I幀,則將固定間隔處設(shè)定范圍內(nèi)的最大數(shù)據(jù)量的幀確定為I幀;并更新圖像組中各種類型幀的平均數(shù)據(jù)量以及I幀的間隔參數(shù)。進(jìn)一步地在IOlA中若播放時間無法檢測到的方法實(shí)施例,還包括在幀類型判斷結(jié)束后,統(tǒng)計(jì)連續(xù)的B幀,若連續(xù)的B幀數(shù)大于預(yù)測值,則將上述連續(xù)的B幀中數(shù)據(jù)量最大的幀確定為P幀;并更新圖像組中各種類型幀的平均數(shù)據(jù)量;上述預(yù)測值大于等于3小于等于7。進(jìn)一步地在IOlA中若播放時間無法檢測到的方法實(shí)施例,還包括確定已經(jīng)接收到的幀是否發(fā)生丟包,若發(fā)生丟包,則確定丟包類型;若丟包類型為幀內(nèi)丟包,則計(jì)算幀數(shù)據(jù)量時確定收到幀的數(shù)據(jù)量與丟包數(shù)據(jù)量的和為該幀的數(shù)據(jù)量;若丟包類型為幀間丟包,則確定丟包處之前的包的標(biāo)志位是否為1,若是,則將丟包的數(shù)據(jù)量計(jì)算入后一幀,否則將丟包的數(shù)據(jù)量平均分配給前后兩幀。進(jìn)一步地上述確定丟包類型包括通過統(tǒng)計(jì)已經(jīng)檢測出的幀類型預(yù)測編碼結(jié)構(gòu);若丟包類型為幀間丟包,丟包處之前的包的標(biāo)志位無法檢測,則依據(jù)預(yù)測的編碼結(jié)構(gòu)以及丟包的位置分割當(dāng)前數(shù)據(jù)長度。本發(fā)明實(shí)施例充分利用RTP或TS over RTP的包頭信息,結(jié)合視頻中不同類型幀的編碼順序以及不同類型幀的前后數(shù)據(jù)量大小關(guān)系,在不解碼視頻凈載的情況下快速實(shí)時的判斷幀類型,并且通過丟包處理、自動更新參數(shù)以及后期幀類型糾正的方法提高幀類型檢測的正確率。視頻流中會有指示視頻數(shù)據(jù)的播放時間的包頭信息,如ISMA方式中的RTP時間戳,以及TS over RTP方式中PES頭的PTS。本發(fā)明實(shí)施例將利用播放時間信息和編碼順序的相互關(guān)系,來判斷某些特殊結(jié)構(gòu)的編碼類型,如B幀。但對于TS over RTP方式,可能存在TS凈載完全加密PES頭無法解碼的情況,即PTS不可得,因此,本發(fā)明實(shí)施例還提供了不利用播放時間只利用數(shù)據(jù)量等信息來進(jìn)行幀類型判斷的方案。觀察實(shí)際應(yīng)用中的視頻碼流可以發(fā)現(xiàn),同一個GOP內(nèi)不同類型的幀一般具有較為明顯的區(qū)別,I幀數(shù)據(jù)量最大,P幀其次,B幀最小。如果能正確識別出每個GOP起始處的I 幀,則可以利用該幀的數(shù)據(jù)量判斷此GOP內(nèi)部的P幀和B幀。但由于視頻信號的非平穩(wěn)性, 不同位置處的I幀數(shù)據(jù)量差別存在著較大的差別,甚至?xí)椭癎OP中的P幀的數(shù)據(jù)量相當(dāng),給判斷I幀帶來了困難。本發(fā)明實(shí)施例設(shè)計(jì)了一套可智能調(diào)節(jié)的動態(tài)參數(shù),以提高幀類型判斷的魯棒性和準(zhǔn)確性。特別是在判斷I幀時,充分考慮了不同應(yīng)用場景中I幀的特性適當(dāng)?shù)恼{(diào)節(jié)判斷準(zhǔn)則和相關(guān)參數(shù),大大降低了 I幀的誤判率。在有損傳輸?shù)膽?yīng)用場景中,輸入的視頻流會發(fā)生丟包,根據(jù)丟包對判斷過程的影響,可以將其分為兩類一、幀內(nèi)的丟包,此時幀邊界的信息沒有丟失,可以先獲取到幀邊界,用對應(yīng)的序列號來統(tǒng)計(jì)一幀的包數(shù);二、幀邊界丟包(如RTP中標(biāo)志位為1的包,或TS over RTP中PUSI置1的包),此時可能無法判斷前后兩幀的邊界,也可能前后兩幀的數(shù)據(jù)拼接到一幀,使得幀數(shù)據(jù)量統(tǒng)計(jì)不準(zhǔn)確,影響幀類型判斷的結(jié)果。本發(fā)明實(shí)施例將就此進(jìn)行丟包檢測、幀邊界估計(jì)以及部分的幀類型估計(jì)。
在幀類型判斷的前期,由于統(tǒng)計(jì)數(shù)據(jù)不充足,會存在較多的誤判,不僅影響到已輸出的結(jié)果,更會通過改變各種參數(shù)影響到后續(xù)判斷的準(zhǔn)確性。本發(fā)明實(shí)施例在判斷幀類型流程之后增加了幀類型糾正,在數(shù)據(jù)增加后若輸出結(jié)果有明顯錯誤時進(jìn)行內(nèi)部糾正,內(nèi)部糾正雖然不能改變已經(jīng)輸出的幀類型,但可以通過調(diào)整參數(shù)的方式提高后續(xù)判斷的準(zhǔn)確性。以下將分別就本發(fā)明實(shí)施例的三個要點(diǎn)進(jìn)行詳細(xì)說明一 利用播放時間判斷B幀或/和分級B幀由于B幀采用前向以及后向的已編碼幀作為預(yù)測,其編碼順序在后向參考幀之后,使得其播放時間往往和編碼順序不一致,因此可以用播放時間信息來判定B幀。若當(dāng)前幀的播放時間小于已經(jīng)接收到的幀的最大的播放時間,則該幀肯定為B巾貞,否則為I幀或P 幀。對于分級編碼的B幀也可以利用播放時間來進(jìn)一步判斷最高層級以及每個B幀所屬的層級。以連續(xù)7個B幀的情況為例,圖加所示,是該情況下分級B幀的編碼結(jié)構(gòu)圖, 第一排字母的下標(biāo)表示每幀所屬的層級,第二排的數(shù)字為每一幀的播放序號。而實(shí)際的編碼順序?yàn)?括弧中的數(shù)字為播放序號)Ι0/Ρ0 (0),Ι0/Ρ0 (8),Bl (4),B2 (2),B3⑴,B3 (3), B2(6),B3(5),B3(7)。圖2b為編碼順序和播放順序的關(guān)系,以及編碼的層級,阿拉伯?dāng)?shù)字表示播放序號,中文數(shù)字表示編碼序號。用播放時間判斷分級的算法可分為兩步第一步判斷最高層級(此例中為幻。將第0幀的層級設(shè)為0,然后按編碼順序讀取播放時間,如果當(dāng)前一幀的播放時間小于前一幀的播放時間則當(dāng)前幀的層級為前一幀的層級加1,反之則與前一幀的一樣。直到讀到播放時間緊鄰于第0幀的幀即第1幀,此時第 1幀所對應(yīng)的層級即為最高層級。第二步根據(jù)相鄰B幀播放時間的對稱關(guān)系來判斷剩余的幀所屬的層級。第一步完成后圖.五(b)實(shí)線框中的層級都已經(jīng)確定,此時需檢測虛線框中的B幀所屬的層級。檢測方法是在已經(jīng)確定層級的幀中進(jìn)行遍歷,尋找到兩個幀使得他們播放時間的均值與當(dāng)前幀的播放時間相等,則當(dāng)前幀的層級為該兩個幀的最大層級加1。圖中的橢圓展示的即是這種對稱關(guān)系,即橢圓中上面兩幀的播放時間的均值等于最下面幀的播放時間,而最下面幀的層級剛好為以上兩幀層級的最大值加1。二、利用幀數(shù)據(jù)量來判斷幀類型由于根據(jù)播放時間只能區(qū)分出是否為B幀,本實(shí)施例提供了只利用數(shù)據(jù)量等信息來判斷I幀和P幀的方案。對于根據(jù)播放時間可判斷出B幀的情況,只需要對剩余的幀區(qū)分是否I幀或P幀;而對于無法根據(jù)播放時間判斷出B幀的情況(例如包頭信息加密的情況)則要對所有幀進(jìn)行判斷,先確定I幀和P幀,剩余的幀則判定為B幀。本實(shí)施例通過自動參數(shù)更新的方法利用幀數(shù)據(jù)量來判斷幀類型,主要分為以下幾個模塊(如圖六所示)1幀判斷模塊、P幀判斷模塊、參數(shù)更新模塊和類型糾正模塊。A:I 幀判斷一般來說視頻中的I幀可分為以下兩類固定間隔的I巾貞,即為了滿足隨機(jī)接入在壓縮過程中按照固定間隔(一定時期內(nèi)固定,一旦用戶切換頻道,該間隔可能會發(fā)生變化) 插入的I幀;自適應(yīng)插入的I幀,即是為了提高壓縮效率,在場景切換處插入的I幀。
對于固定間隔的I幀,在識別過程中可以估計(jì)該固定間隔,在超過該間隔還沒有判斷到I幀時,主動放寬判斷條件或者用局部的特征來判斷(后文對此將有詳細(xì)說明)。而對于自適應(yīng)插入的I幀,在序列空間復(fù)雜度類似的場景切換處,如果編碼為自適應(yīng)插入的I幀,由于I幀的壓縮效率差,其碼率往往會比之前的P幀大;如果編碼為P幀, 由于預(yù)測變差,其碼率也會比較大,此時該幀是比較重要的幀,較為容易的判斷為I幀(P幀和I幀數(shù)據(jù)量都比較大,容易錯誤地將P幀誤認(rèn)是I幀)。對于空間復(fù)雜度簡單的場景切換處,編碼為I幀可能會比之前的P幀還小,對于此類的I幀沒有辦法正確識別,但是其后的那些P幀或B幀也會相應(yīng)變小,通過后續(xù)的更新,可以進(jìn)行類型糾正,以提高對后續(xù)幀類型的識別率。因此,可通過以下三個步驟來判斷I幀,即分別比較當(dāng)前幀數(shù)據(jù)量和給定閾值,只要某一步中當(dāng)前幀數(shù)據(jù)量大于給定閾值就判定為I幀根據(jù)閾值1判斷明顯的I幀;根據(jù)閾值2判斷非固定間隔的I幀;根據(jù)閾值3判斷超過預(yù)期的固定間隔的I幀。B:P 幀判斷對于上一幀為I幀且當(dāng)前視頻流為閉環(huán)編碼的情況,I幀后面不會緊鄰B幀。如果該幀沒有判斷為I幀,則為P幀;對于上一幀為I幀且當(dāng)前視頻流為開環(huán)編碼的情況,如果當(dāng)前幀的數(shù)據(jù)量大于閾值4,則該幀為P幀,否則該幀為B幀;對于上一幀為P幀的情況,如果當(dāng)前幀數(shù)據(jù)量大于閾值5或者在當(dāng)前GOP存在B 幀的情況下大于閾值6,那么該幀為P幀;對于上一幀為B幀的情況,表示當(dāng)前GOP中存在B巾貞,如果當(dāng)前幀數(shù)據(jù)量小于閾值 7或者在當(dāng)前GOP已經(jīng)判斷出有P幀的情況下小于閾值8,那么該幀為P幀。C:參數(shù)更新統(tǒng)計(jì)GOP的編碼類型(開環(huán)或閉環(huán))在識別過程中,對于比較明顯的I巾貞,可以統(tǒng)計(jì)其后一幀是B幀還是P幀,若大多數(shù)I幀后面都是P幀,則可以認(rèn)為該編碼器是閉環(huán)編碼,否則認(rèn)為是開環(huán)編碼。計(jì)算預(yù)期的I幀固定間隔在判斷出I幀后,統(tǒng)計(jì)其間隔的概率分布,并通過加權(quán)平均,得到的預(yù)期的固定間隔。根據(jù)新判斷出的幀類型實(shí)時的更新上述模塊中的閾值a)閾值1 根據(jù)之前50幀的平均數(shù)據(jù)量(avJBPnbytes)以及前一個I幀的數(shù)據(jù)量(iframe_Size_G0P),按照公式(1)計(jì)算得到1 值 1 = de1ta1* i frame_s i ζ e_G0P+av_IBPnbyte s其中,deltal為調(diào)節(jié)因子,取值范圍為(0,1),根據(jù)實(shí)驗(yàn)得到的經(jīng)驗(yàn)值為0. 5。b)閾值2:根據(jù)前一個I幀的數(shù)據(jù)量(iframe_SiZe_G0P)、當(dāng)前GOP中最大的P 幀的平均數(shù)據(jù)量(max_pframes_Size_G0P)以及前50幀中I幀P幀的平均數(shù)據(jù)量(av_ IPnbytes),按照公式(2)計(jì)算得到閾值 2 = max (delta2*max_pframes_size_G0P, delta2*av_IPnbytes, delta3*iframe_size_G0P)
其中,delta2和delta3分別為調(diào)節(jié)因子,其經(jīng)驗(yàn)值為1. 5和0. 5。c)閾值3 根據(jù)當(dāng)前GOP的每幀的平均數(shù)據(jù)量(aV_frame_SiZe GOP),前一個P幀的數(shù)據(jù)量(prew_pframe_nbytes),當(dāng)前GOP的I幀的數(shù)據(jù)量(iframe_size_GOP),按照公式 ⑶計(jì)算得到;或者根據(jù)當(dāng)前GOP的P幀平均數(shù)據(jù)量(av_pframes_size GOP)按照公式(5) 計(jì)算得到閾值 3 = max(av_frame_size_GOP, ip_thresh*prew_pframe_nbytes, iframe_ size_G0P/3)公式(3)其中,ip_thresh隨著從上一個I幀到當(dāng)前幀的距離(currjjnterval)與預(yù)期的固定I幀間隔(expected_iframe_interval)的遠(yuǎn)離程度來計(jì)算的ip_thresh = max(2-(curr_i_interval-expected_iframe_interval)1,1. 5) 公式(4)Illil 3 = SThresh*av_pframes_ size_G0P+av_pframes_siζe_G0P 公式(5)其中,sThresh 根據(jù) curr_i_interval 禾口 expected—iframe_interval 來計(jì)算SThresh =max(delta4, SThresh/(delta5水curr—i—interval/expected—iframe—interval)) 公式(6)其中,delta4和delta5分別為調(diào)節(jié)因子,其經(jīng)驗(yàn)值為0. 2和2. 0。d)閾值4 為上一個GOP的P幀平均數(shù)據(jù)量(av_pframes_size_Last GOP)和B幀平均數(shù)據(jù)量(av_bframes_size_Last_GOP)的均值,如公式(7)閾值 4 = (av_pframes_ siζe_Last_G0P+av_bframes_s i ζ e_Last_G0P)/2e)閾值5 :為0· 75乘以當(dāng)前GOP中P幀平均數(shù)據(jù)量(av_pframes_size GOP),如公式⑶閾值 5 = de 1 ta6*av_pframes_siζe_G0P其中,delta6分別為調(diào)節(jié)因子,其經(jīng)驗(yàn)值為0. 75f)閾值6 為P幀平均數(shù)據(jù)量(av_pframes_size_GOP)和B幀平均數(shù)據(jù)量(max_ bframes_size_GOP)的均值,如公式(9);閾值 6 = (av_pframes_size_GOP+max_ bframes_size_GOP) /2g)閾值7 為1. 25乘以當(dāng)前GOP中B幀平均數(shù)據(jù)量(av_bframes_size_GOP),如公式(10)閾值 7 = delta7*av_bframes_size_G0P其中,delta7分別為調(diào)節(jié)因子,其經(jīng)驗(yàn)值為1. 25h)閾值8 為P幀平均數(shù)據(jù)量(aV_pframeS_SiZe_G0P)和B幀平均數(shù)據(jù)量的均值 (av_bframes_size_GOP),如公式(11)閾值 7 = (av_pframes_ siζe_G0P+av_bframes_s i ζ e_G0P)/2D :類型糾正糾正漏判的I幀經(jīng)過上述步驟后,可能存在遠(yuǎn)超過預(yù)期的固定間隔卻還沒有判斷出I幀的情況, 此時,雖然已經(jīng)輸出幀類型,但是可以利用局部的信息糾正參數(shù),使得后續(xù)的幀類型判斷更準(zhǔn)確。在接近預(yù)期的固定間隔附近取數(shù)據(jù)量最大的幀,將其幀類型改為I幀,并更新GOP中各幀類型的平均數(shù)據(jù)量和I幀間隔等參數(shù)。糾正錯判的B幀實(shí)際應(yīng)用中的視頻編碼器,在利用B幀提高編碼效率時一般會考慮到解碼延時以及解碼存儲開銷,不會編碼出超過7個的連續(xù)B幀,甚至,更為極端的是,連續(xù)B幀不會超過 3個。通過之前判斷出的幀類型統(tǒng)計(jì)得出該碼流中最大連續(xù)B幀的預(yù)測值。在將一幀確定為B幀時,需要確保此次連續(xù)的B幀數(shù)不超過預(yù)測值。如果超過該值,說明當(dāng)前連續(xù)判斷為 B幀的幀中可能有錯判,需要將這些幀中數(shù)據(jù)量最大的幀改判為P幀,并更新GOP中的各幀類型的平均數(shù)據(jù)量等信息。三、無法確定邊界和幀數(shù)據(jù)量時的幀類型檢測前兩個實(shí)例都需要在幀邊界和幀數(shù)據(jù)量已獲得的情況下進(jìn)行。在無丟包時可以通過RTP的序列號、時間戳、標(biāo)志位(ISMA方式)或RTP序列號、TS中CC、PUSI、PID(TS over RTP方式)來準(zhǔn)確的獲知幀邊界和每一幀的數(shù)據(jù)量,但在發(fā)生丟包的情況下,如果處于幀邊界的包發(fā)生丟失,則無法準(zhǔn)確判斷幀邊界的位置,可能會將幀的包數(shù)估計(jì)錯誤甚至將兩幀的數(shù)據(jù)量拼為一幀,這將對幀類型的檢測帶來極大的干擾。因此,如果有丟包則需要在幀類型判斷之前進(jìn)行丟包處理,來獲得幀邊界、幀數(shù)據(jù)量和幀類型等信息。由于ISMA方式中RTP時間戳的變化標(biāo)志著新的幀到達(dá),因此在發(fā)生丟包時,其處理過程比較簡單1)如果丟包前后時間戳無變化,代表丟失的包處于一幀內(nèi)部,只需在統(tǒng)計(jì)幀數(shù)據(jù)量時考慮丟包的數(shù)據(jù)即可;2)如果丟包前后時間戳發(fā)生變化,代表丟包發(fā)生在幀的邊界,此時如果丟包前一個包的標(biāo)志位為1,則視丟包為后一幀的數(shù)據(jù),添加到后一幀的數(shù)據(jù)量中;否則,將丟包的數(shù)據(jù)量平均分配給前后兩幀(此處假設(shè)一次突發(fā)丟包不會超過一幀的長度)。TS over RTP的情況要相對復(fù)雜,由于只能通過是否有PES頭(即PUSI為1)來判斷一幀的開始,若發(fā)生丟包,則很難判斷兩個有PES頭的包之間的數(shù)據(jù)是屬于一幀或多幀, 如圖3所示,在兩個有PES頭的包之間的數(shù)據(jù)發(fā)生了 3次丟包,但由于無法知曉丟失的包中是否也有PES頭(即代表一幀的開始),無法判斷這些數(shù)據(jù)是否屬于同一幀。本案例從兩方面分別提供了解決方法。如果PES頭可解,則可以根據(jù)其中的PTS來判斷當(dāng)前數(shù)據(jù)長度(即兩個有PES頭的包之間的數(shù)據(jù)長度)是否包含幀頭信息1)統(tǒng)計(jì)正確檢測出來的GOP的PTS的順序,將分布概率與距離目前幀的距離加權(quán)作為預(yù)期指數(shù),得到預(yù)期編碼結(jié)構(gòu);2)根據(jù)接收順序中從I幀開始的一系列幀的PTS到當(dāng)前的PTS及下一個PTS與預(yù)期的編碼結(jié)構(gòu)進(jìn)行匹配a)如果符合預(yù)期的編碼結(jié)構(gòu),則認(rèn)為該數(shù)據(jù)長度的丟包中不包含幀頭信息,即當(dāng)前數(shù)據(jù)長度為一幀,丟包發(fā)生在該幀內(nèi)部,不需要分割;b)如果不符合預(yù)期的編碼結(jié)構(gòu),說明丟包中很可能包含幀頭信息,按照預(yù)期的編碼結(jié)構(gòu)以及丟包發(fā)生的位置(連續(xù)長度,丟包長度等)分割當(dāng)前的數(shù)據(jù)長度,分配合理的幀類型和幀大小以及PTS。3)若后續(xù)發(fā)現(xiàn)了之前判斷為丟失幀頭的幀,則在校正步驟中更新之前的判斷結(jié)
16^ ο另外,可以根據(jù)丟包長度,連續(xù)長度,最大連續(xù)長度,最大丟包長度等來判斷當(dāng)前的數(shù)據(jù)長度是否為一幀以及屬于何種幀類型1)如果該數(shù)據(jù)長度和前一個I幀的長度差不多,則認(rèn)為屬于同一個I幀;如果該數(shù)據(jù)長度和P幀差不多大,且最大連續(xù)長度比50幀之內(nèi)的平均B幀的數(shù)據(jù)量大,則認(rèn)為該數(shù)據(jù)長度都屬于同一個P幀;對其他情況轉(zhuǎn)到2);2)如果該數(shù)據(jù)長度和兩個P幀差不多大,則要拆分為兩個P幀,將這改數(shù)據(jù)長度分為兩段,使得每段的長度都和P幀最接近,并且要確保第二段以丟失包開頭;對其他情況轉(zhuǎn)到3);3)如果該數(shù)據(jù)長度和P幀加B幀差不多,則要拆分為P幀+B幀,將連續(xù)長度最大的包歸屬為P幀,在此基礎(chǔ)上將該數(shù)據(jù)長度分為兩段,使得每段的長度分別接近P幀和B幀, 并且要確保第二段以丟失包開頭;對其他情況轉(zhuǎn)到4);4)如果最大連續(xù)長度小于B幀且該數(shù)據(jù)長度和三個B幀差不多,則要拆分為三個 B幀,將該數(shù)據(jù)長度分為三段,使得每段的長度都接近B幀,并且要確保第二段第三段以丟失包開頭;對其他情況轉(zhuǎn)到5);5)如果最大連續(xù)長度小于B幀且該數(shù)據(jù)長度和兩個B幀差不多,則要拆分為兩個 B幀,將該數(shù)據(jù)長度的包分為兩段,使得每段的長度都接近B幀,并且要確保第二段第三段以丟失包開頭;對其他情況轉(zhuǎn)到6);6)其他情況下認(rèn)為該數(shù)據(jù)長度全部屬于一幀。本實(shí)施例結(jié)合以上各例,提供一個可選的幀類型檢測方案,具體流程如圖4所示 分為以下幾個階段利用PTS初步判斷幀類型、丟包處理、利用數(shù)據(jù)量進(jìn)一步判斷幀類型和類型糾正。401 數(shù)據(jù)輸入后,判斷包頭是否可解,是則執(zhí)行根據(jù)播放時間判斷幀類型,否則執(zhí)行丟包處理;在幀類型判斷結(jié)束后,判斷是否之前幀判斷是否有誤,有則執(zhí)行幀類型糾正, 否則可以進(jìn)入幀類型判斷的循環(huán),即進(jìn)入401,具體執(zhí)行如下根據(jù)播放時間判斷幀類型對輸入的碼流先判斷是否為TS over RTP的包,如果是則需判斷TS包的PES頭是否加密。對于RTP包或PES頭可解的TS over RTP的包,可根據(jù)播放時間信息初步判斷是否為B幀,具體實(shí)施可參考要點(diǎn)一;丟包處理檢測是否存在丟包,若無丟包直接統(tǒng)計(jì)出數(shù)據(jù)量進(jìn)入以下幀類型判斷步驟;若有丟包則需針對RTP或TS over RTP包分別進(jìn)行丟包處理,估計(jì)幀邊界、幀數(shù)據(jù)量或部分幀類型,具體實(shí)施可參考要點(diǎn)三;根據(jù)數(shù)據(jù)量判斷幀類型該過程實(shí)時判斷幀類型,且動態(tài)智能的調(diào)整相關(guān)參數(shù),具體實(shí)施可參考要點(diǎn)二;類型糾正在判斷過程中若發(fā)現(xiàn)之前的判斷結(jié)果有誤則會進(jìn)行糾正,該過程不影響輸出結(jié)果,但可用于更新相關(guān)參數(shù),以提高后續(xù)判斷的準(zhǔn)確性,具體實(shí)施可參考要點(diǎn)二。本發(fā)明實(shí)施例還提供了一種幀類型的檢測裝置,如圖5所示,包括時間檢測單元501,用于檢測各幀的播放時間;幀類型確定單元502,用于若當(dāng)前幀的播放時間小于已經(jīng)接收到的幀的最大播放時間,則確定上述當(dāng)前幀為雙向預(yù)測編碼B幀;CN 102547300 A進(jìn)一步地,上述圖5中還可以包括層級確定單元503,用于依據(jù)各幀的播放順序和編碼順序確定B幀在分級編碼中所屬的層級;需要說明的是,層級確定不是本發(fā)明實(shí)施例確定B幀的必要技術(shù)特征,該技術(shù)特征僅作為后續(xù)進(jìn)行需要層級信息的相關(guān)處理時才需要。本發(fā)明實(shí)施例還提供了另一種幀類型的檢測裝置,如圖6所示,包括類型獲得單元601,用于獲得已經(jīng)接收到的幀所在碼流的編碼類型,上述編碼類型包括開環(huán)編碼和閉環(huán)編碼;幀類型確定單元602,還用于若當(dāng)前幀的數(shù)據(jù)量大于第一域值則確定當(dāng)前幀為明顯的I幀,上述第一閾值由設(shè)定連續(xù)個數(shù)的幀的平均數(shù)據(jù)量以及I幀數(shù)據(jù)量計(jì)算得到;若當(dāng)前幀的前一幀為I幀、編碼類型為閉環(huán)編碼且當(dāng)前幀為非明顯的I幀,或者, 若當(dāng)前幀的前一幀為I幀、編碼類型為開環(huán)編碼且當(dāng)前幀的數(shù)據(jù)量大于第四閾值,則確定當(dāng)前幀為P幀;上述第四閾值為一個圖像組的P幀平均數(shù)據(jù)量以及B幀平均數(shù)據(jù)量的均值;若當(dāng)前幀非I幀也非P幀,則確定當(dāng)前幀為B幀。進(jìn)一步地,上述幀類型確定單元602,還用于若當(dāng)前幀大于第二閾值,則確定當(dāng)前幀為I幀;上述第二閾值為當(dāng)前幀之前的一個I幀的數(shù)據(jù)量、當(dāng)前幀所在圖像組中P幀的平均數(shù)據(jù)量以及設(shè)定個數(shù)連續(xù)幀的平均數(shù)據(jù)量中的最大值。進(jìn)一步地,上述幀類型確定單元602,還用于若當(dāng)前幀與前一個I幀的間隔超過固定間隔,且當(dāng)前幀大于第三閾值,則確定當(dāng)前幀為I幀;上述第三閾值為當(dāng)前幀所在圖像組各幀的平均數(shù)據(jù)量、當(dāng)前幀的前一個P幀的數(shù)據(jù)量以及當(dāng)前幀所在圖像組I幀的數(shù)據(jù)量、 上一個I幀到當(dāng)前幀的距離與預(yù)期的固定I幀間隔的遠(yuǎn)離程度計(jì)算得到;或者,上述第三閾值根據(jù)當(dāng)前幀所在圖像組各幀的平均數(shù)據(jù)量以及上一個I幀到當(dāng)前幀的距離與預(yù)期的固定I幀間隔的遠(yuǎn)離程度計(jì)算得到。進(jìn)一步地,上述幀類型確定單元602,還用于若當(dāng)前幀的上一幀為P幀且當(dāng)前幀的數(shù)據(jù)量大于第五閾值,或者當(dāng)前圖像組存在B幀且當(dāng)前幀的數(shù)據(jù)量大于第六閾值,則確定當(dāng)前幀為P幀;上述第五閾值為第一調(diào)節(jié)因子與當(dāng)前幀所在圖像組的P幀的平均數(shù)據(jù)量的積,上述第一調(diào)節(jié)因子大于0.5且小于1 ;上述第六閾值為P幀平均數(shù)據(jù)量和B幀平均數(shù)據(jù)量的均值;若當(dāng)前幀的上一幀為B幀且當(dāng)前幀的數(shù)據(jù)量小于第七閾值,或者當(dāng)前圖像組粗在 P幀且當(dāng)前幀的數(shù)據(jù)量小于第八閾值,則確定當(dāng)前幀為P幀;上述第七閾值為第二調(diào)節(jié)因子與當(dāng)前幀所在圖像組的B幀的平均數(shù)據(jù)量的積,上述第二調(diào)節(jié)因子大于1小于1. 5 ;上述第八閾值為P幀平均數(shù)據(jù)量與B幀平均數(shù)據(jù)量的均值。進(jìn)一步地,如圖7所示,上述裝置還包括間隔獲取單元701,用于在幀類型判斷結(jié)束后,確定I幀的固定間隔;上述幀類型確定單元602,還用于若在固定間隔達(dá)到后仍然沒有判斷存在I幀,則將固定間隔處設(shè)定范圍內(nèi)的最大數(shù)據(jù)量的幀確定為I幀;第一更新單元702,用于更新圖像組中各種類型幀的平均數(shù)據(jù)量以及I幀的間隔參數(shù)。進(jìn)一步地,如圖8所示,上述裝置還包括統(tǒng)計(jì)單元801,用于在幀類型判斷結(jié)束后,統(tǒng)計(jì)連續(xù)的B幀;
上述幀類型確定單元602,還用于若連續(xù)B幀的數(shù)量大于預(yù)測值,則將上述連續(xù)的 B幀中數(shù)據(jù)量最大的幀確定為P幀;上述預(yù)測值大于等于3小于等于7第二更新單元802,用于更新圖像組中各種類型幀的平均數(shù)據(jù)量。進(jìn)一步地,如圖9所示,上述裝置還包括丟包類型確定單元901,用于確定已經(jīng)接收到的幀是否發(fā)生丟包,若發(fā)生丟包,則確定丟包類型;數(shù)據(jù)量確定單元902,用于若丟包類型為幀內(nèi)丟包,則計(jì)算幀數(shù)據(jù)量時確定收到幀的數(shù)據(jù)量與丟包數(shù)據(jù)量的和為該幀的數(shù)據(jù)量;若丟包類型為幀間丟包,則確定丟包處之前的包的標(biāo)志位是否為1,若是,則將丟包的數(shù)據(jù)量計(jì)算入后一幀,否則將丟包的數(shù)據(jù)量平均分配給前后兩幀。需要說明的是,本實(shí)施的裝置和圖4或圖5的裝置是可以合并使用的,幀類型確定單元502與幀類型確定單元602可以使用同一個功能單元實(shí)現(xiàn)。本發(fā)明實(shí)施例充分利用RTP或TS over RTP的包頭信息,結(jié)合視頻中不同類型幀的編碼順序以及不同類型幀的前后數(shù)據(jù)量大小關(guān)系,在不解碼視頻凈載的情況下快速實(shí)時的判斷幀類型,并且通過丟包處理、自動更新參數(shù)以及后期幀類型糾正的方法提高幀類型檢測的正確率。視頻流中會有指示視頻數(shù)據(jù)的播放時間的包頭信息,如ISMA方式中的RTP時間戳,以及TS over RTP方式中PES頭的PTS。本發(fā)明實(shí)施例將利用播放時間信息和編碼順序的相互關(guān)系,來判斷某些特殊結(jié)構(gòu)的編碼類型,如B幀。但對于TS over RTP方式,可能存在TS凈載完全加密PES頭無法解碼的情況,即PTS不可得,因此,本發(fā)明實(shí)施例還提供了不利用播放時間只利用數(shù)據(jù)量等信息來進(jìn)行幀類型判斷的方案。觀察實(shí)際應(yīng)用中的視頻碼流可以發(fā)現(xiàn),同一個GOP內(nèi)不同類型的幀一般具有較為明顯的區(qū)別,I幀數(shù)據(jù)量最大,P幀其次,B幀最小。如果能正確識別出每個GOP起始處的I 幀,則可以利用該幀的數(shù)據(jù)量判斷此GOP內(nèi)部的P幀和B幀。但由于視頻信號的非平穩(wěn)性, 不同位置處的I幀數(shù)據(jù)量差別存在著較大的差別,甚至?xí)椭癎OP中的P幀的數(shù)據(jù)量相當(dāng),給判斷I幀帶來了困難。本發(fā)明實(shí)施例設(shè)計(jì)了一套可智能調(diào)節(jié)的動態(tài)參數(shù),以提高幀類型判斷的魯棒性和準(zhǔn)確性。特別是在判斷I幀時,充分考慮了不同應(yīng)用場景中I幀的特性適當(dāng)?shù)恼{(diào)節(jié)判斷準(zhǔn)則和相關(guān)參數(shù),大大降低了 I幀的誤判率。在有損傳輸?shù)膽?yīng)用場景中,輸入的視頻流會發(fā)生丟包,根據(jù)丟包對判斷過程的影響,可以將其分為兩類一、幀內(nèi)的丟包,此時幀邊界的信息沒有丟失,可以先獲取到幀邊界,用對應(yīng)的序列號來統(tǒng)計(jì)一幀的包數(shù);二、幀邊界丟包(如RTP中標(biāo)志位為1的包,或TS over RTP中PUSI置1的包),此時可能無法判斷前后兩幀的邊界,也可能前后兩幀的數(shù)據(jù)拼接到一幀,使得幀數(shù)據(jù)量統(tǒng)計(jì)不準(zhǔn)確,影響幀類型判斷的結(jié)果。本發(fā)明實(shí)施例將就此進(jìn)行丟包檢測、幀邊界估計(jì)以及部分的幀類型估計(jì)。在幀類型判斷的前期,由于統(tǒng)計(jì)數(shù)據(jù)不充足,會存在較多的誤判,不僅影響到已輸出的結(jié)果,更會通過改變各種參數(shù)影響到后續(xù)判斷的準(zhǔn)確性。本發(fā)明實(shí)施例在判斷幀類型流程之后增加了幀類型糾正,在數(shù)據(jù)增加后若輸出結(jié)果有明顯錯誤時進(jìn)行內(nèi)部糾正,內(nèi)部糾正雖然不能改變已經(jīng)輸出的幀類型,但可以通過調(diào)整參數(shù)的方式提高后續(xù)判斷的準(zhǔn)確性。
以下是幀類型判斷后的幾種應(yīng)用,可以理解的是幀類型確定后的應(yīng)用舉例不應(yīng)理解為窮舉,不對本發(fā)明實(shí)施例構(gòu)成限定。1.根據(jù)判斷出來的幀類型進(jìn)行不等保護(hù)帶寬受限時,可根據(jù)不同幀類型對視頻質(zhì)量影響的區(qū)別進(jìn)行不等保護(hù),使得視頻接收質(zhì)量達(dá)到最優(yōu)。2.用預(yù)期周期結(jié)合GOP的平均碼率可以實(shí)現(xiàn)視頻快速瀏覽對于存儲在本地的碼流用戶不想瀏覽全部的視頻,可以通過快速的預(yù)處理,提取出I幀對應(yīng)位置從而實(shí)現(xiàn)快速流覽。對于存儲在服務(wù)器的碼流,用戶不想瀏覽全部的視頻,服務(wù)器可以通過快速的預(yù)處理,提取出I幀對應(yīng)位置從而有選擇的傳輸關(guān)鍵幀信息給用戶。3.服務(wù)質(zhì)量(Quality of Service,QOS):在帶寬不足時,在中間節(jié)點(diǎn),可以根據(jù)判斷出的幀類型,智能丟棄一部分B幀或者P幀(靠近GOP結(jié)束的P幀),使得降低碼率的同時,盡可能少的影響視頻質(zhì)量。另外基于實(shí)驗(yàn),對本發(fā)明實(shí)施例的技術(shù)方案的效果進(jìn)行了測試,以下是測試結(jié)果。本節(jié)的實(shí)驗(yàn)在沒有丟包的情況下,對利用播放時間和不利用播放時間的兩種情況,分別與背景技術(shù)中的方案二進(jìn)行了對比,結(jié)果如表1所示。表1測試序列
權(quán)利要求
1.一種幀類型的檢測方法,其特征在于,包括檢測各幀的播放時間;若當(dāng)前幀的播放時間小于已經(jīng)接收到的幀的最大播放時間,則確定所述當(dāng)前幀為雙向預(yù)測編碼幀B幀。
2.根據(jù)權(quán)利要求1所述方法,其特征在于,幀類型檢測結(jié)束后,還包括依據(jù)各幀的播放順序和編碼順序確定B幀在分級編碼中所屬的層級。
3.根據(jù)權(quán)利要求1所述方法,其特征在于,若檢測播放時間失敗還包括獲得接收到的幀所在碼流的編碼類型,所述編碼類型包括開環(huán)編碼和閉環(huán)編碼;若當(dāng)前幀的數(shù)據(jù)量大于第一域值則確定當(dāng)前幀為明顯的幀內(nèi)編碼幀I幀,所述第一閾值由設(shè)定連續(xù)個數(shù)的幀的平均數(shù)據(jù)量以及I幀數(shù)據(jù)量計(jì)算得到;若當(dāng)前幀的前一幀為I幀、編碼類型為閉環(huán)編碼且當(dāng)前幀為非明顯的I幀,或者,若當(dāng)前幀的前一幀為I幀、編碼類型為開環(huán)編碼且當(dāng)前幀的數(shù)據(jù)量大于第四閾值,則確定當(dāng)前幀為單向預(yù)測編碼幀P幀;所述第四閾值為一個圖像組的P幀平均數(shù)據(jù)量以及B幀平均數(shù)據(jù)量的均值;若當(dāng)前幀非I幀也非P幀,則確定當(dāng)前幀為B幀。
4.根據(jù)權(quán)利要求3所述方法,其特征在于,所述獲得已經(jīng)接收到的幀所在碼流的編碼類型包括統(tǒng)計(jì)明顯的I幀后一幀的類型,若為P幀的比例達(dá)到設(shè)定比例則確定編碼類型為閉環(huán)編碼,否則為開環(huán)編碼。
5.根據(jù)權(quán)利要求3所述方法,其特征在于,還包括若當(dāng)前幀的數(shù)據(jù)量大于第二閾值,則確定當(dāng)前幀為I幀;所述第二閾值為當(dāng)前幀之前的一個I幀的數(shù)據(jù)量、當(dāng)前幀所在圖像組中P幀的平均數(shù)據(jù)量以及設(shè)定個數(shù)連續(xù)幀的平均數(shù)據(jù)量中的最大值。
6.根據(jù)權(quán)利要求3所述方法,其特征在于,還包括若當(dāng)前幀與前一個I幀的間隔超過固定間隔,且當(dāng)前幀的數(shù)據(jù)量大于第三閾值,則確定當(dāng)前幀為I幀;所述第三閾值根據(jù)當(dāng)前幀所在圖像組各幀的平均數(shù)據(jù)量、當(dāng)前幀的前一個P幀的數(shù)據(jù)量以及當(dāng)前幀所在圖像組I幀的數(shù)據(jù)量、上一個I幀到當(dāng)前幀的距離與預(yù)期的固定I幀間隔的遠(yuǎn)離程度計(jì)算得到;或者,所述第三閾值根據(jù)當(dāng)前幀所在圖像組各幀的平均數(shù)據(jù)量以及上一個I幀到當(dāng)前幀的距離與預(yù)期的固定I幀間隔的遠(yuǎn)離程度計(jì)算得到。
7.根據(jù)權(quán)利要求3所述方法,其特征在于,還包括若當(dāng)前幀的上一幀為P幀且當(dāng)前幀的數(shù)據(jù)量大于第五閾值,或者當(dāng)前圖像組存在B幀且當(dāng)前幀的數(shù)據(jù)量大于第六閾值,則確定當(dāng)前幀為P幀;所述第五閾值為第一調(diào)節(jié)因子與當(dāng)前幀所在圖像組的P幀的平均數(shù)據(jù)量的積,所述第一調(diào)節(jié)因子大于0. 5且小于1 ;所述第六閾值為P幀平均數(shù)據(jù)量和B幀平均數(shù)據(jù)量的均值;若當(dāng)前幀的上一幀為B幀且當(dāng)前幀的數(shù)據(jù)量小于第七閾值,或者當(dāng)前圖像組存在P幀且當(dāng)前幀的數(shù)據(jù)量小于第八閾值,則確定當(dāng)前幀為P幀;所述第七閾值為第二調(diào)節(jié)因子與當(dāng)前幀所在圖像組的B幀的平均數(shù)據(jù)量的積,所述第二調(diào)節(jié)因子大于1小于1. 5 ;所述第八閾值為P幀平均數(shù)據(jù)量與B幀平均數(shù)據(jù)量的均值。
8.根據(jù)權(quán)利要求3至7任意一項(xiàng)所述方法,其特征在于,還包括在幀類型判斷結(jié)束后,確定I幀的固定間隔,若在固定間隔達(dá)到后仍然沒有判斷存在I 幀,則將固定間隔處設(shè)定范圍內(nèi)的最大數(shù)據(jù)量的幀確定為I幀;并更新圖像組中各種類型幀的平均數(shù)據(jù)量以及I幀的間隔參數(shù)。
9.根據(jù)權(quán)利要求3至7任意一項(xiàng)所述方法,其特征在于,還包括在幀類型判斷結(jié)束后,統(tǒng)計(jì)連續(xù)的B幀,若連續(xù)B幀的數(shù)量大于預(yù)測值,則將所述連續(xù)的B幀中數(shù)據(jù)量最大的幀確定為P幀;并更新圖像組中各種類型幀的平均數(shù)據(jù)量;所述預(yù)測值大于等于3小于等于7。
10.根據(jù)權(quán)利要求3至7任意一項(xiàng)所述方法,其特征在于,還包括確定已經(jīng)接收到的幀是否發(fā)生丟包,若發(fā)生丟包,則確定丟包類型;若丟包類型為幀內(nèi)丟包,則計(jì)算幀數(shù)據(jù)量時確定收到幀的數(shù)據(jù)量與丟包數(shù)據(jù)量的和為該幀的數(shù)據(jù)量;若丟包類型為幀間丟包,則確定丟包處之前的包的標(biāo)志位是否為1,若是,則將丟包的數(shù)據(jù)量計(jì)算入后一幀,否則將丟包的數(shù)據(jù)量平均分配給前后兩幀。
11.一種幀類型的檢測方法,其特征在于,包括獲得接收到的幀所在碼流的編碼類型,所述編碼類型包括開環(huán)編碼和閉環(huán)編碼;若當(dāng)前幀的數(shù)據(jù)量大于第一域值則確定當(dāng)前幀為明顯的幀內(nèi)編碼幀I幀,所述第一閾值由設(shè)定連續(xù)個數(shù)的幀的平均數(shù)據(jù)量以及I幀數(shù)據(jù)量計(jì)算得到;若當(dāng)前幀的前一幀為I幀、編碼類型為閉環(huán)編碼且當(dāng)前幀為非明顯的I幀,或者,若當(dāng)前幀的前一幀為I幀、編碼類型為開環(huán)編碼且當(dāng)前幀的數(shù)據(jù)量大于第四閾值,則確定當(dāng)前幀為單向預(yù)測編碼幀P幀;所述第四閾值為一個圖像組的P幀平均數(shù)據(jù)量以及B幀平均數(shù)據(jù)量的均值;若當(dāng)前幀非I幀也非P幀,則確定當(dāng)前幀為B幀。
12.根據(jù)權(quán)利要求11所述方法,其特征在于,所述獲得已經(jīng)接收到的幀所在碼流的編碼類型包括統(tǒng)計(jì)明顯的I幀后一幀的類型,若為P幀的比例達(dá)到設(shè)定比例則確定編碼類型為閉環(huán)編碼,否則為開環(huán)編碼。
13.根據(jù)權(quán)利要求11所述方法,其特征在于,還包括若當(dāng)前幀的數(shù)據(jù)量大于第二閾值,則確定當(dāng)前幀為I幀;所述第二閾值為當(dāng)前幀之前的一個I幀的數(shù)據(jù)量、當(dāng)前幀所在圖像組中P幀的平均數(shù)據(jù)量以及設(shè)定個數(shù)連續(xù)幀的平均數(shù)據(jù)量中的最大值。
14.根據(jù)權(quán)利要求11所述方法,其特征在于,還包括若當(dāng)前幀與前一個I幀的間隔超過固定間隔,且當(dāng)前幀的數(shù)據(jù)量大于第三閾值,則確定當(dāng)前幀為I幀;所述第三閾值根據(jù)當(dāng)前幀所在圖像組各幀的平均數(shù)據(jù)量、當(dāng)前幀的前一個P幀的數(shù)據(jù)量以及當(dāng)前幀所在圖像組I幀的數(shù)據(jù)量、上一個I幀到當(dāng)前幀的距離與預(yù)期的固定I幀間隔的遠(yuǎn)離程度計(jì)算得到;或者,所述第三閾值根據(jù)當(dāng)前幀所在圖像組各幀的平均數(shù)據(jù)量以及上一個I幀到當(dāng)前幀的距離與預(yù)期的固定I幀間隔的遠(yuǎn)離程度計(jì)算得到。
15.根據(jù)權(quán)利要求11所述方法,其特征在于,還包括若當(dāng)前幀的上一幀為P幀且當(dāng)前幀的數(shù)據(jù)量大于第五閾值,或者當(dāng)前圖像組存在B幀且當(dāng)前幀的數(shù)據(jù)量大于第六閾值,則確定當(dāng)前幀為P幀;所述第五閾值為第一調(diào)節(jié)因子與當(dāng)前幀所在圖像組的P幀的平均數(shù)據(jù)量的積,所述第一調(diào)節(jié)因子大于0. 5且小于1 ;所述第六閾值為P幀平均數(shù)據(jù)量和B幀平均數(shù)據(jù)量的均值;若當(dāng)前幀的上一幀為B幀且當(dāng)前幀的數(shù)據(jù)量小于第七閾值,或者當(dāng)前圖像組存在P幀且當(dāng)前幀的數(shù)據(jù)量小于第八閾值,則確定當(dāng)前幀為P幀;所述第七閾值為第二調(diào)節(jié)因子與當(dāng)前幀所在圖像組的B幀的平均數(shù)據(jù)量的積,所述第二調(diào)節(jié)因子大于1小于1. 5 ;所述第八閾值為P幀平均數(shù)據(jù)量與B幀平均數(shù)據(jù)量的均值。
16.根據(jù)權(quán)利要求11至15任意一項(xiàng)所述方法,其特征在于,還包括在幀類型判斷結(jié)束后,確定I幀的固定間隔,若在固定間隔達(dá)到后仍然沒有判斷存在I 幀,則將固定間隔處設(shè)定范圍內(nèi)的最大數(shù)據(jù)量的幀確定為I幀;并更新圖像組中各種類型幀的平均數(shù)據(jù)量以及I幀的間隔參數(shù)。
17.根據(jù)權(quán)利要求11至15任意一項(xiàng)所述方法,其特征在于,還包括在幀類型判斷結(jié)束后,統(tǒng)計(jì)連續(xù)的B幀,若連續(xù)B幀的數(shù)量大于預(yù)測值,則將所述連續(xù)的B幀中數(shù)據(jù)量最大的幀確定為P幀;并更新圖像組中各種類型幀的平均數(shù)據(jù)量;所述預(yù)測值大于等于3小于等于7。
18.根據(jù)權(quán)利要求11至15任意一項(xiàng)所述方法,其特征在于,還包括確定已經(jīng)接收到的幀是否發(fā)生丟包,若發(fā)生丟包,則確定丟包類型;若丟包類型為幀內(nèi)丟包,則計(jì)算幀數(shù)據(jù)量時確定收到幀的數(shù)據(jù)量與丟包數(shù)據(jù)量的和為該幀的數(shù)據(jù)量;若丟包類型為幀間丟包,則確定丟包處之前的包的標(biāo)志位是否為1,若是,則將丟包的數(shù)據(jù)量計(jì)算入后一幀,否則將丟包的數(shù)據(jù)量平均分配給前后兩幀。
19.根據(jù)權(quán)利要求18所述方法,其特征在于,還包括通過統(tǒng)計(jì)已經(jīng)檢測出的幀類型預(yù)測編碼結(jié)構(gòu);若丟包類型為幀間丟包,丟包處之前的包的標(biāo)志位無法檢測,則依據(jù)預(yù)測的編碼結(jié)構(gòu)以及丟包的位置分割當(dāng)前數(shù)據(jù)長度。
20.一種幀類型的檢測裝置,其特征在于,包括時間檢測單元,用于檢測各幀的播放時間;幀類型確定單元,用于若當(dāng)前幀的播放時間小于已經(jīng)接收到的幀的最大播放時間,則確定所述當(dāng)前幀為雙向預(yù)測編碼B幀。
21.根據(jù)權(quán)利要求20所述裝置,其特征在于,還包括層級確定單元,用于依據(jù)各幀的播放順序和編碼順序確定B幀在分級編碼中所屬的層級。
22.一種幀類型的檢測裝置,其特征在于,包括類型獲得單元,用于獲得已經(jīng)接收到的幀所在碼流的編碼類型,所述編碼類型包括開環(huán)編碼和閉環(huán)編碼;幀類型確定單元,用于若當(dāng)前幀的數(shù)據(jù)量大于第一域值則確定當(dāng)前幀為明顯的I幀, 所述第一閾值由設(shè)定連續(xù)個數(shù)的幀的平均數(shù)據(jù)量以及I幀數(shù)據(jù)量計(jì)算得到;若當(dāng)前幀的前一幀為I幀、編碼類型為閉環(huán)編碼且當(dāng)前幀為非明顯的I幀,或者,若當(dāng)前幀的前一幀為I幀、編碼類型為開環(huán)編碼且當(dāng)前幀的數(shù)據(jù)量大于第四閾值,則確定當(dāng)前幀為P幀;所述第四閾值為一個圖像組的P幀平均數(shù)據(jù)量以及B幀平均數(shù)據(jù)量的均值;若當(dāng)前幀非I幀也非P幀,則確定當(dāng)前幀為B幀。
23.根據(jù)權(quán)利要求22所述裝置,其特征在于,所述幀類型確定單元,還用于若當(dāng)前幀的數(shù)據(jù)量大于第二閾值,則確定當(dāng)前幀為I幀; 所述第二閾值為當(dāng)前幀之前的一個I幀的數(shù)據(jù)量、當(dāng)前幀所在圖像組中P幀的平均數(shù)據(jù)量以及設(shè)定個數(shù)連續(xù)幀的平均數(shù)據(jù)量中的最大值。
24.根據(jù)權(quán)利要求22所述裝置,其特征在于,所述幀類型確定單元,還用于若當(dāng)前幀與前一個I幀的間隔超過固定間隔,且當(dāng)前幀的數(shù)據(jù)量大于第三閾值,則確定當(dāng)前幀為I幀;所述第三閾值為當(dāng)前幀所在圖像組各幀的平均數(shù)據(jù)量、當(dāng)前幀的前一個P幀的數(shù)據(jù)量以及當(dāng)前幀所在圖像組I幀的數(shù)據(jù)量、上一個I 幀到當(dāng)前幀的距離與預(yù)期的固定I幀間隔的遠(yuǎn)離程度計(jì)算得到;或者,所述第三閾值根據(jù)當(dāng)前幀所在圖像組各幀的平均數(shù)據(jù)量以及上一個I幀到當(dāng)前幀的距離與預(yù)期的固定I幀間隔的遠(yuǎn)離程度計(jì)算得到。
25.根據(jù)權(quán)利要求22所述裝置,其特征在于,所述幀類型確定單元,還用于若當(dāng)前幀的上一幀為P幀且當(dāng)前幀的數(shù)據(jù)量大于第五閾值,或者當(dāng)前圖像組存在B幀且當(dāng)前幀的數(shù)據(jù)量大于第六閾值,則確定當(dāng)前幀為P幀;所述第五閾值為第一調(diào)節(jié)因子與當(dāng)前幀所在圖像組的P幀的平均數(shù)據(jù)量的積,所述第一調(diào)節(jié)因子大于0. 5且小于1 ;所述第六閾值為P幀平均數(shù)據(jù)量和B幀平均數(shù)據(jù)量的均值;若當(dāng)前幀的上一幀為B幀且當(dāng)前幀的數(shù)據(jù)量小于第七閾值,或者當(dāng)前圖像組粗在P幀且當(dāng)前幀的數(shù)據(jù)量小于第八閾值,則確定當(dāng)前幀為P幀;所述第七閾值為第二調(diào)節(jié)因子與當(dāng)前幀所在圖像組的B幀的平均數(shù)據(jù)量的積,所述第二調(diào)節(jié)因子大于1小于1. 5 ;所述第八閾值為P幀平均數(shù)據(jù)量與B幀平均數(shù)據(jù)量的均值。
26.根據(jù)權(quán)利要求22至25任意一項(xiàng)所述裝置,其特征在于,還包括間隔獲取單元,用于在幀類型判斷結(jié)束后,確定I幀的固定間隔;所述幀類型確定單元,還用于若在固定間隔達(dá)到后仍然沒有判斷存在I幀,則將固定間隔處設(shè)定范圍內(nèi)的最大數(shù)據(jù)量的幀確定為I幀;第一更新單元,用于更新圖像組中各種類型幀的平均數(shù)據(jù)量以及I幀的間隔參數(shù)。
27.根據(jù)權(quán)利要求22至25任意一項(xiàng)所述裝置,其特征在于,還包括統(tǒng)計(jì)單元,用于在幀類型判斷結(jié)束后,統(tǒng)計(jì)連續(xù)的B幀;所述幀類型確定單元,還用于若連續(xù)B幀的數(shù)量大于預(yù)測值,則將所述連續(xù)的B幀中數(shù)據(jù)量最大的幀確定為P幀;所述預(yù)測值大于等于3小于等于7 ;第二更新單元,用于更新圖像組中各種類型幀的平均數(shù)據(jù)量。
28.根據(jù)權(quán)利要求22至25任意一項(xiàng)所述裝置,其特征在于,還包括丟包類型確定單元,用于確定已經(jīng)接收到的幀是否發(fā)生丟包,若發(fā)生丟包,則確定丟包類型;數(shù)據(jù)量確定單元,用于若丟包類型為幀內(nèi)丟包,則計(jì)算幀數(shù)據(jù)量時確定收到幀的數(shù)據(jù)量與丟包數(shù)據(jù)量的和為該幀的數(shù)據(jù)量;若丟包類型為幀間丟包,則確定丟包處之前的包的標(biāo)志位是否為1,若是,則將丟包的數(shù)據(jù)量計(jì)算入后一幀,否則將丟包的數(shù)據(jù)量平均分配給前后兩幀。
全文摘要
本發(fā)明實(shí)施例公開了一種幀類型的檢測方法和裝置,其中方法包括檢測各幀的播放時間;若當(dāng)前幀的播放時間小于已經(jīng)接收到的幀的最大播放時間,則確定所述當(dāng)前幀為雙向預(yù)測編碼幀B幀。本發(fā)明實(shí)施例提供的技術(shù)方案,結(jié)合不同類型幀的編碼順序以及不同類型幀的前后數(shù)據(jù)量大小關(guān)系,在不解碼凈載的情況下判斷幀類型,消除了衰減因子的影響,提高了幀類型檢測的正確率。
文檔編號H04N7/64GK102547300SQ20101059432
公開日2012年7月4日 申請日期2010年12月17日 優(yōu)先權(quán)日2010年12月17日
發(fā)明者張冬, 李厚強(qiáng), 沈秋, 謝清鵬 申請人:中國科學(xué)技術(shù)大學(xué), 華為技術(shù)有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1