專利名稱:幀類型的檢測(cè)方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視頻處理技術(shù)領(lǐng)域,特別涉及幀類型的檢測(cè)方法和裝置。
背景技術(shù):
視頻編碼標(biāo)準(zhǔn)中的可解碼數(shù)據(jù)幀類型可分為幀內(nèi)編碼幀(I-Frame,Intra coded frames, I幀)、單向預(yù)測(cè)編碼幀(P-Frame,Predicted frames, P幀)、雙向預(yù)測(cè)編碼幀 (B-Frame, Bi-directional predicted frames, B 幀)。在視頻應(yīng)用中,I 幀作為可解碼的起始,一般稱為隨機(jī)接入點(diǎn),可提供隨機(jī)接入以及快速瀏覽等服務(wù)。在傳輸過(guò)程中,不同的幀類型出錯(cuò),對(duì)解碼端的主觀質(zhì)量的影響是不同的,I幀具有截?cái)嗾`差傳播的作用,因此,如果I幀出錯(cuò),則對(duì)整個(gè)視頻的解碼質(zhì)量影響極大;P幀往往會(huì)作為其他幀間編碼幀的參考幀,其作用次于I幀;由于B幀通常不做為參考幀,其丟失對(duì)視頻解碼質(zhì)量影響較小。因此, 在視頻傳輸應(yīng)用中區(qū)分?jǐn)?shù)據(jù)流的不同幀類型有非常重要的意義,比如作為視頻質(zhì)量評(píng)估的重要參數(shù),幀類型判斷的準(zhǔn)確性直接影響到評(píng)估結(jié)果的準(zhǔn)確性;可以對(duì)視頻中不同類型的幀進(jìn)行不等差保護(hù)來(lái)實(shí)現(xiàn)視頻的有效傳輸,另外為了節(jié)省傳輸資源,在帶寬不足時(shí)可以丟棄一些對(duì)主觀質(zhì)量影響不大的幀。常用的流傳輸技術(shù)主要為互聯(lián)網(wǎng)流媒體聯(lián)盟(Internet Streaming Media Alliance, ISMA)方式和活在網(wǎng)際協(xié)議上的動(dòng)圖像專家組傳輸流(Moving Picture Expert Group-2 Transport Stream over Intet PetProtoco 1, MPEG-2 TS over IP)方式,這兩種協(xié)議方式在將壓縮視頻數(shù)據(jù)流進(jìn)行封裝時(shí),都設(shè)計(jì)了能指示視頻數(shù)據(jù)類型的指示位。 ISMA方式是將壓縮視頻數(shù)據(jù)流直接采用實(shí)時(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/聽覺(jué)和視覺(jué)信號(hào)編碼(Aural and Visual Code, AVC)遵循 RFC3984,以 RFC3984為例,RTP頭部包含的序列號(hào)Sequence Number)、時(shí)間戳(Timestamp)等可以用來(lái)判斷丟幀以及幫助檢測(cè)幀類型;MPEG-2 TS over IP方式也分兩種用戶數(shù)據(jù)報(bào)文協(xié)議/ IP 上的傳輸流(TS over User Datagram Protocol/IP, TS overUDP/IP)和實(shí)時(shí)傳輸協(xié)議 / UDP/IP上的傳輸流(TS over Real-time Transport Protocol/UDP/IP,TS over RTP/UDP/ IP),在視頻傳輸中比較常用的是TS over RTP/UDP/IP (后面簡(jiǎn)稱TS over RTP),是將壓縮視頻數(shù)據(jù)流封裝為基本流,進(jìn)一步將基本流劃分為TS分組,最后對(duì)TS分組用RTP進(jìn)行封裝并傳輸。RTP是針對(duì)多媒體數(shù)據(jù)流的一種傳輸協(xié)議,負(fù)責(zé)提供端到端的實(shí)時(shí)數(shù)據(jù)傳輸,其報(bào)文主要包括四個(gè)部分RTP頭,RTP擴(kuò)展頭,凈載頭,凈載數(shù)據(jù)。RTP頭中的包含的數(shù)據(jù)主要有序列號(hào)、時(shí)間戳、標(biāo)志位等。序列號(hào)與RTP包一一對(duì)應(yīng),每發(fā)送一個(gè)包增加1,可用于檢測(cè)丟包;時(shí)間戳可表示視頻數(shù)據(jù)的采樣時(shí)間,不同的幀會(huì)有不同的時(shí)間戳,可指示視頻數(shù)據(jù)的播放順序;標(biāo)志位則用來(lái)標(biāo)識(shí)一幀的結(jié)束。這些信息是幀類型判斷的重要依據(jù)。一個(gè)TS分組有188個(gè)字節(jié),由分組首部、可變長(zhǎng)度適配頭和凈負(fù)荷數(shù)據(jù)組成,其中分組首部的起始指示位(payload unit start indicator,PUSI)表示凈負(fù)荷數(shù)據(jù)是否包含打包的分組流(Packet Elementary Stream,PES)包頭或節(jié)目特殊信息(Program Special Information, PSI)。對(duì)于H. 264媒體格式,每個(gè)PES包頭預(yù)示著一個(gè)NAL單元的開始。TS 分組自適應(yīng)區(qū)段中的一些標(biāo)志位,如隨機(jī)接入指示(random access indicator)、基本流優(yōu)先級(jí)指示(elementary stream priority indicator),可以用來(lái)判斷傳輸內(nèi)容的重要性,對(duì)于視頻而言,隨機(jī)接入指示為1表示隨后遇到的第一個(gè)PES包中包含序列開始信息, 基本流優(yōu)先級(jí)指示為1表示該TS分組負(fù)載內(nèi)容有較多的Intra塊數(shù)據(jù)。如果通過(guò)PUSI判斷出TS分組負(fù)載部分包含PES包頭,則可以進(jìn)一步挖掘?qū)鬏斢杏玫男畔?。PES分組由PES分組包頭及其后的分組數(shù)據(jù)組成,原始流數(shù)據(jù)(視頻、音頻等) 加載在PES包數(shù)據(jù)中。PES分組插在傳送流分組中,每個(gè)PES分組首部的第一個(gè)字節(jié)就是傳送流分組有效負(fù)載的第一個(gè)字節(jié)。即一個(gè)PES包頭必須包含在一個(gè)新的TS包中,同時(shí)PES 包數(shù)據(jù)要充滿TS傳送包的有效負(fù)荷區(qū)域,若PES包數(shù)據(jù)的結(jié)尾無(wú)法與TS包的結(jié)尾對(duì)齊,則需要在TS的自適應(yīng)區(qū)域中插入相應(yīng)數(shù)量的填充字節(jié),使得兩者的結(jié)尾對(duì)齊。PES優(yōu)先級(jí)表示PES包數(shù)據(jù)中的凈載的重要性,對(duì)于視頻,為1表示Intra數(shù)據(jù);另外PTS表示顯示時(shí)間, DTS表示解碼時(shí)間,可以用來(lái)判斷視頻載荷內(nèi)容的前后相關(guān)性,從而判斷載荷類型。TS over RTP方式中,為了保護(hù)傳輸中的視頻版權(quán)內(nèi)容,在傳輸過(guò)程中往往會(huì)采用對(duì)負(fù)載加密的方式進(jìn)行傳輸。對(duì)TS分組的加密是對(duì)分組的有效載荷部分進(jìn)行加密,一旦TS 頭部的加擾標(biāo)記置1,則其載荷被加密,此時(shí)僅可以利用相鄰PUSI之間具有相同PID的數(shù)據(jù)包的長(zhǎng)度(同一個(gè)視頻幀的長(zhǎng)度)來(lái)判斷出載荷數(shù)據(jù)類型。如果TS分組中PES頭未加密, 則除了可以利用上述視頻幀的長(zhǎng)度來(lái)判斷數(shù)據(jù)幀類型外,還可以利用PTS來(lái)協(xié)助判斷幀類型。通過(guò)以上的介紹可知不同類型的數(shù)據(jù)幀其數(shù)據(jù)量有區(qū)別,I幀由于只去除了幀內(nèi)的冗余,其數(shù)據(jù)量一般比去除了幀間冗余的幀間編碼幀大,而P幀一般又比B幀的數(shù)據(jù)量大。針對(duì)這一特性,目前存在一些幀類型檢測(cè)算法在TS分組加密的情況下,利用幀的數(shù)據(jù)量來(lái)判斷幀類型;以下介紹運(yùn)用比較多的兩種方法一 通過(guò)解析TS分組,得到每個(gè)視頻幀的長(zhǎng)度,通過(guò)長(zhǎng)度大小信息推斷幀類型。已經(jīng)提出的方法是針對(duì)TS分組的有效載荷部分已加密的情況下,確定幀類型。該方法通過(guò)解析TS分組的Continuity Counter域判斷分組的丟失狀態(tài),通過(guò)本次執(zhí)行判斷之前的圖像組(Group Of Pictures, G0P)的結(jié)構(gòu)信息估計(jì)丟失的分組狀態(tài),并結(jié)合TS分組頭部自適應(yīng)字段的可用信息(Random Access hdicator,RAI或者Elementary Stream Priority Indicator, ESPI)來(lái)判斷視頻幀的類型。對(duì)于I幀的識(shí)別,可以用以下三種方法1、利用RAI或者ESPI識(shí)別I幀。2、在不能利用RAI或者ESPI識(shí)別時(shí),通過(guò)緩存一個(gè)GOP的數(shù)據(jù),將當(dāng)前緩存的數(shù)據(jù)中的最大值做為I幀,GOP的長(zhǎng)度需要預(yù)先定義,一旦GOP長(zhǎng)度發(fā)生變化,該方法將失效。3、使用表示最大GOP長(zhǎng)度的值作為I幀的確定周期,確定周期內(nèi)的最大數(shù)據(jù)量幀是I幀,確定周期是已檢測(cè)出的I幀周期的最大值。對(duì)于P幀,用以下三種方法1、從起始幀至緊接I幀之前的幀之間的幀中,選擇數(shù)據(jù)量大于周圍幀的每一幀確定為P幀。針對(duì)處理目標(biāo)流的GOP結(jié)構(gòu)中包括的確定幀模式,從確定周期中選擇與N種確定幀模式相對(duì)應(yīng)的連續(xù)幀作為確定目標(biāo)幀,將確定目標(biāo)幀的數(shù)據(jù)量之間的大小關(guān)系與確定幀模式進(jìn)行比較,可以基于其間的匹配來(lái)確定P幀。在GOP結(jié)構(gòu)中,使用以下模式作為確定幀模式該模式包括緊接在P幀之前的所有連續(xù)B幀和在P幀下一幀的一個(gè)B幀。此時(shí)GOP 的一些信息需要預(yù)先輸入。2、基于表現(xiàn)模式中預(yù)定位置處的多個(gè)幀的幀數(shù)據(jù)量的平均值而計(jì)算的閾值與表現(xiàn)模式中每一幀的幀數(shù)據(jù)量之間的比較結(jié)果。3、使用調(diào)整系數(shù)基于幀數(shù)據(jù)量來(lái)調(diào)整用于區(qū)分P和B幀的閾值。調(diào)整系數(shù)在給定范圍內(nèi)順序選擇的臨時(shí)調(diào)整系數(shù)來(lái)執(zhí)行與幀類型確定處理相同的處理,從而對(duì)預(yù)先給定的獲知周期中的每一幀的幀類型進(jìn)行估計(jì),計(jì)算估計(jì)結(jié)果與從未加密流中獲取的實(shí)際幀類型的錯(cuò)誤確定比,獲知具有最低錯(cuò)誤確定比的臨時(shí)調(diào)整系數(shù)作為真實(shí)的調(diào)整系數(shù)。對(duì)于B幀,判斷方法為1幀,P幀以外的幀確定為B幀。以上判斷幀類型的方法,對(duì)于有分組丟失的情況,基于RTP序列號(hào)和TS首部連續(xù)性指示符(CC)可以檢測(cè)分組丟失,通過(guò)GOP結(jié)構(gòu)可以模式匹配估計(jì)丟失的分組狀態(tài),從而達(dá)到一定程度的糾正。但是對(duì)于不可調(diào)整閾值的方法需要預(yù)先輸入GOP信息,而對(duì)于可調(diào)整閾值的方法則需要從未加密的碼流中獲取幀類型信息來(lái)訓(xùn)練系數(shù),需要過(guò)多的人工干預(yù)。另外,需要緩存一個(gè)GOP再進(jìn)行幀類型估計(jì),不適用于實(shí)時(shí)應(yīng)用。再次,I幀判斷只進(jìn)行一次,可調(diào)整的系數(shù)是周期,在每個(gè)周期中直接取最大值為I,只考慮到了局部特性,對(duì)于全局特性沒(méi)有考慮。二 利用閾值區(qū)分不同幀的方法可以分四步進(jìn)行1、閾值的更新區(qū)分I幀的閾值(Ithresh)sealed_max_iframe = scaled_max_iframe氺0· 995 ;其中 sealed_max_iframe 為上一個(gè)I幀大小。如果 nbytes > sealed_max_iframe,貝Ij ithresh = (scaled_max_iframe/4+av_nbytes*2)/2 ;其中 av_nbytes 為當(dāng)前 8 幀的滑動(dòng)均值。區(qū)分P幀的閾值(Pthresh)scaled_max_pframe = scaled_max_pframe*0· 995 ;胃中 scaled_max_pframe ^iJl 一個(gè)P幀大小。如果 nbytes > scaled_max_pframe,則 pthresh = av_nbytes*0. 75 ;2、檢測(cè)I幀視頻每隔一段時(shí)間會(huì)有一個(gè)I巾貞,I幀比平均值大,I巾貞比P幀大。如果當(dāng)前幀數(shù)據(jù)量比Ithresh大,則認(rèn)為該幀是I幀。3、檢測(cè)P幀利用B幀比平均值小。如果當(dāng)前幀的數(shù)據(jù)量大于Pthresh,小于 Ithresh,則認(rèn)為該幀是P幀。4、其他的幀為B幀。以上第二種判斷幀類型的方法,采用衰減因子控制閾值,該因子直接影響I幀的判斷,當(dāng)后續(xù)I幀大于當(dāng)前I幀時(shí),容易判斷出I幀;但是當(dāng)后續(xù)I幀遠(yuǎn)小于當(dāng)前I幀時(shí),需要經(jīng)過(guò)很多幀的衰減才能重新判斷出I幀。且算法中固定為0. 995,沒(méi)有考慮GOP變化劇烈的情況,很多情況下并不適用。衰減因子越小,則I幀漏檢率越小,同時(shí)P誤判為I幀的概
8率增加;衰減因子越大,則I幀漏檢率增大(序列中I幀的大小變化劇烈時(shí)),將I幀判斷為P幀。因此檢測(cè)準(zhǔn)確率較低。另外,僅考慮使用閾值判斷B/P幀,對(duì)I/P/P/P...這種幀結(jié)構(gòu),算法會(huì)將很多P幀錯(cuò)判為B幀誤判率高。
發(fā)明內(nèi)容
本發(fā)明實(shí)施例要解決的技術(shù)問(wèn)題是提供一種幀類型的檢測(cè)方法和裝置,提高幀類型檢測(cè)的正確率。為解決上述技術(shù)問(wèn)題,本發(fā)明所提供的幀類型的檢測(cè)方法實(shí)施例可以通過(guò)以下技術(shù)方案實(shí)現(xiàn)檢測(cè)各幀的播放時(shí)間;若當(dāng)前幀的播放時(shí)間小于已經(jīng)接收到的幀的最大播放時(shí)間,則確定所述當(dāng)前幀為雙向預(yù)測(cè)編碼幀B幀。一種幀類型的檢測(cè)方法,包括獲得接收到的幀所在碼流的編碼類型,所述編碼類型包括開環(huán)編碼和閉環(huán)編碼;若當(dāng)前幀的數(shù)據(jù)量大于第一域值則確定當(dāng)前幀為明顯的幀內(nèi)編碼幀I幀,所述第一閾值由設(shè)定連續(xù)個(gè)數(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ù)測(cè)編碼幀P幀;所述第四閾值為一個(gè)圖像組的P幀平均數(shù)據(jù)量以及B幀平均數(shù)據(jù)量的均值;若當(dāng)前幀非I幀也非P幀,則確定當(dāng)前幀為B幀。一種幀類型的檢測(cè)裝置,包括時(shí)間檢測(cè)單元,用于檢測(cè)各幀的播放時(shí)間;幀類型確定單元,用于若當(dāng)前幀的播放時(shí)間小于已經(jīng)接收到的幀的最大播放時(shí)間,則確定所述當(dāng)前幀為雙向預(yù)測(cè)編碼B幀。一種幀類型的檢測(cè)裝置,包括類型獲得單元,用于獲得已經(jīng)接收到的幀所在碼流的編碼類型,所述編碼類型包括開環(huán)編碼和閉環(huán)編碼;幀類型確定單元,用于若當(dāng)前幀的數(shù)據(jù)量大于第一域值則確定當(dāng)前幀為明顯的I 幀,所述第一閾值由設(shè)定連續(xù)個(gè)數(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幀;所述第四閾值為一個(gè)圖像組的P幀平均數(shù)據(jù)量以及B幀平均數(shù)據(jù)量的均值;若當(dāng)前幀非I幀也非P巾貞,則確定當(dāng)前幀為B幀。本發(fā)明實(shí)施例提供的技術(shù)方案,結(jié)合不同類型幀的編碼順序以及不同類型幀的前后數(shù)據(jù)量大小關(guān)系,在不解碼凈載的情況下判斷幀類型,消除了衰減因子的影響,提高了幀類型檢測(cè)的正確率。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例的技術(shù)方案,下面將對(duì)實(shí)施例描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他
的附圖。
圖IA為本發(fā)明實(shí)施例方法流程示意圖IB為本發(fā)明實(shí)施例方法流程示意圖2a為本發(fā)明實(shí)施例分級(jí)B幀編碼結(jié)構(gòu)示意圖2b為本發(fā)明實(shí)施例編碼順序和播放順序的關(guān)系,以及編碼的層級(jí)示意圖
圖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í)施例檢測(cè)結(jié)果示意圖11為本發(fā)明實(shí)施例檢測(cè)結(jié)果示意圖12為本發(fā)明實(shí)施例檢測(cè)結(jié)果示意圖13為本發(fā)明實(shí)施例檢測(cè)結(jié)果示意圖14為本發(fā)明實(shí)施例檢測(cè)結(jié)果示意圖15為本發(fā)明實(shí)施例檢測(cè)結(jié)果示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒(méi)有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。一種幀類型的檢測(cè)方法,如圖IA所示,包括IOlA 檢測(cè)各幀的播放時(shí)間;102A:若當(dāng)前幀的播放時(shí)間小于已經(jīng)接收到的幀的最大播放時(shí)間,則確定上述當(dāng)前幀為雙向預(yù)測(cè)編碼B幀;進(jìn)一步地,本發(fā)明實(shí)施例還可以依據(jù)各幀的播放順序和編碼順序確定B幀在分級(jí)編碼中所屬的層級(jí)。對(duì)于如何確定層級(jí)在后文中將作進(jìn)一步的說(shuō)明?;贐幀的特性, 若確定了其所屬的層級(jí)可以在很多領(lǐng)域應(yīng)用,例如在壓縮數(shù)據(jù)幀時(shí),可以丟棄層級(jí)高的B 幀。在B幀的層級(jí)確定后的應(yīng)用本發(fā)明實(shí)施例不予限定。上述實(shí)施例,結(jié)合不同類型幀的編碼順序以及不同類型幀的前后數(shù)據(jù)量大小關(guān)系,在不解碼凈載的情況下判斷幀類型,消除了衰減因子的影響,提高了幀類型檢測(cè)的正確率。
本發(fā)明實(shí)施例還提供了另一種幀類型的檢測(cè)方法,如圖IB所示,包括IOlB 獲得接收到的幀所在碼流的編碼類型,上述編碼類型包括開環(huán)編碼和閉環(huán)編碼;102B 若當(dāng)前幀的數(shù)據(jù)量大于第一域值則確定當(dāng)前幀為明顯的I幀,上述第一閾值由設(shè)定連續(xù)個(gè)數(shù)的幀的平均數(shù)據(jù)量以及I幀數(shù)據(jù)量計(jì)算得到;上述明顯的I幀屬于I幀,若判斷為明顯的I幀,那么判斷錯(cuò)誤的幾率是很低的, 但是有可能出現(xiàn)漏判,后續(xù)其他判斷I幀的方式可能出現(xiàn)錯(cuò)判I幀的情況。若當(dāng)前幀的前一幀為I幀、編碼類型為閉環(huán)編碼且當(dāng)前幀為非明顯的I幀(當(dāng)前幀此時(shí)還不清楚其幀類型,但是可以確定其是否為明顯的I幀),或者,若當(dāng)前幀的前一幀為I幀、編碼類型為開環(huán)編碼且當(dāng)前幀的數(shù)據(jù)量大于第四閾值,則確定當(dāng)前幀為P幀;上述第四閾值為一個(gè)圖像組的P幀平均數(shù)據(jù)量以及B幀平均數(shù)據(jù)量的均值;若當(dāng)前幀非I幀也非P巾貞,則確定當(dāng)前幀為B幀。需要說(shuō)明的是,上述圖IB對(duì)應(yīng)的方法可以獨(dú)立應(yīng)用,也可以與圖IA的方法結(jié)合使用,若結(jié)合使用可以在圖IA中播放時(shí)間無(wú)法檢測(cè)到的情況下使用實(shí)現(xiàn)方式。上述獲得接收到的幀所在碼流的編碼類型包括統(tǒng)計(jì)明顯的I幀后一幀的類型,若為P幀的比例達(dá)到設(shè)定比例則確定編碼類型為閉環(huán)編碼,否則為開環(huán)編碼。以下實(shí)施例以圖IB的方案與圖IA的方案結(jié)合使用為例進(jìn)行說(shuō)明,若圖IB方案獨(dú)立使用的時(shí),可以不用檢查播放時(shí)間是否能夠被檢測(cè)到。進(jìn)一步地在IOlA中若播放時(shí)間無(wú)法檢測(cè)到的方法實(shí)施例,還包括若當(dāng)前幀大于第二閾值,則確定當(dāng)前幀為I幀;上述第二閾值為當(dāng)前幀之前的一個(gè)I幀的數(shù)據(jù)量、當(dāng)前幀所在圖像組中P幀的平均數(shù)據(jù)量以及設(shè)定個(gè)數(shù)連續(xù)幀的平均數(shù)據(jù)量中的最大值。進(jìn)一步地在IOlA中若播放時(shí)間無(wú)法檢測(cè)到的方法實(shí)施例,還包括若當(dāng)前幀大于第三閾值,且當(dāng)前幀與前一個(gè)I幀的間隔超過(guò)固定間隔,則確定當(dāng)前幀為I幀;上述第三閾值為當(dāng)前幀所在圖像組各幀的平均數(shù)據(jù)量、上一個(gè)I幀到當(dāng)前幀的距離與預(yù)期的固定I幀間隔的遠(yuǎn)離程度、當(dāng)前幀的前一個(gè)P幀的數(shù)據(jù)量以及當(dāng)前幀所在圖像組I幀的數(shù)據(jù)量計(jì)算得到;或者,上述第三閾值根據(jù)當(dāng)前幀所在圖像組各幀的平均數(shù)據(jù)量以及上一個(gè)I幀到當(dāng)前幀的距離與預(yù)期的固定I幀間隔的遠(yuǎn)離程度計(jì)算得到。進(jìn)一步地在IOlA中若播放時(shí)間無(wú)法檢測(cè)到的方法實(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í)間無(wú)法檢測(cè)到的方法實(shí)施例,還包括
在幀類型判斷結(jié)束后,確定I幀的固定間隔,若在固定間隔達(dá)到后仍然沒(méi)有判斷存在I幀,則將固定間隔處設(shè)定范圍內(nèi)的最大數(shù)據(jù)量的幀確定為I幀;并更新圖像組中各種類型幀的平均數(shù)據(jù)量以及I幀的間隔參數(shù)。進(jìn)一步地在IOlA中若播放時(shí)間無(wú)法檢測(cè)到的方法實(shí)施例,還包括在幀類型判斷結(jié)束后,統(tǒng)計(jì)連續(xù)的B幀,若連續(xù)的B幀數(shù)大于預(yù)測(cè)值,則將上述連續(xù)的B幀中數(shù)據(jù)量最大的幀確定為P幀;并更新圖像組中各種類型幀的平均數(shù)據(jù)量;上述預(yù)測(cè)值大于等于3小于等于7。進(jìn)一步地在IOlA中若播放時(shí)間無(wú)法檢測(cè)到的方法實(shí)施例,還包括確定已經(jīng)接收到的幀是否發(fā)生丟包,若發(fā)生丟包,則確定丟包類型;若丟包類型為幀內(nèi)丟包,則計(jì)算幀數(shù)據(jù)量時(shí)確定收到幀的數(shù)據(jù)量與丟包數(shù)據(jù)量的和為該幀的數(shù)據(jù)量;若丟包類型為幀間丟包,則確定丟包處之前的包的標(biāo)志位是否為1,若是,則將丟包的數(shù)據(jù)量計(jì)算入后一幀,否則將丟包的數(shù)據(jù)量平均分配給前后兩幀。進(jìn)一步地上述確定丟包類型包括通過(guò)統(tǒng)計(jì)已經(jīng)檢測(cè)出的幀類型預(yù)測(cè)編碼結(jié)構(gòu);若丟包類型為幀間丟包,丟包處之前的包的標(biāo)志位無(wú)法檢測(cè),則依據(jù)預(yù)測(cè)的編碼結(jié)構(gòu)以及丟包的位置分割當(dāng)前數(shù)據(jù)長(zhǎng)度。本發(fā)明實(shí)施例充分利用RTP或TS over RTP的包頭信息,結(jié)合視頻中不同類型幀的編碼順序以及不同類型幀的前后數(shù)據(jù)量大小關(guān)系,在不解碼視頻凈載的情況下快速實(shí)時(shí)的判斷幀類型,并且通過(guò)丟包處理、自動(dòng)更新參數(shù)以及后期幀類型糾正的方法提高幀類型檢測(cè)的正確率。視頻流中會(huì)有指示視頻數(shù)據(jù)的播放時(shí)間的包頭信息,如ISMA方式中的RTP時(shí)間戳,以及TS over RTP方式中PES頭的PTS。本發(fā)明實(shí)施例將利用播放時(shí)間信息和編碼順序的相互關(guān)系,來(lái)判斷某些特殊結(jié)構(gòu)的編碼類型,如B幀。但對(duì)于TS over RTP方式,可能存在TS凈載完全加密PES頭無(wú)法解碼的情況,即PTS不可得,因此,本發(fā)明實(shí)施例還提供了不利用播放時(shí)間只利用數(shù)據(jù)量等信息來(lái)進(jìn)行幀類型判斷的方案。觀察實(shí)際應(yīng)用中的視頻碼流可以發(fā)現(xiàn),同一個(gè)GOP內(nèi)不同類型的幀一般具有較為明顯的區(qū)別,I幀數(shù)據(jù)量最大,P幀其次,B幀最小。如果能正確識(shí)別出每個(gè)GOP起始處的I 幀,則可以利用該幀的數(shù)據(jù)量判斷此GOP內(nèi)部的P幀和B幀。但由于視頻信號(hào)的非平穩(wěn)性, 不同位置處的I幀數(shù)據(jù)量差別存在著較大的差別,甚至?xí)椭癎OP中的P幀的數(shù)據(jù)量相當(dāng),給判斷I幀帶來(lái)了困難。本發(fā)明實(shí)施例設(shè)計(jì)了一套可智能調(diào)節(jié)的動(dòng)態(tài)參數(shù),以提高幀類型判斷的魯棒性和準(zhǔn)確性。特別是在判斷I幀時(shí),充分考慮了不同應(yīng)用場(chǎng)景中I幀的特性適當(dāng)?shù)恼{(diào)節(jié)判斷準(zhǔn)則和相關(guān)參數(shù),大大降低了 I幀的誤判率。在有損傳輸?shù)膽?yīng)用場(chǎng)景中,輸入的視頻流會(huì)發(fā)生丟包,根據(jù)丟包對(duì)判斷過(guò)程的影響,可以將其分為兩類一、幀內(nèi)的丟包,此時(shí)幀邊界的信息沒(méi)有丟失,可以先獲取到幀邊界,用對(duì)應(yīng)的序列號(hào)來(lái)統(tǒng)計(jì)一幀的包數(shù);二、幀邊界丟包(如RTP中標(biāo)志位為1的包,或TS over RTP中PUSI置1的包),此時(shí)可能無(wú)法判斷前后兩幀的邊界,也可能前后兩幀的數(shù)據(jù)拼接到一幀,使得幀數(shù)據(jù)量統(tǒng)計(jì)不準(zhǔn)確,影響幀類型判斷的結(jié)果。本發(fā)明實(shí)施例將就此進(jìn)行丟包檢測(cè)、幀邊界估計(jì)以及部分的幀類型估計(jì)。
在幀類型判斷的前期,由于統(tǒng)計(jì)數(shù)據(jù)不充足,會(huì)存在較多的誤判,不僅影響到已輸出的結(jié)果,更會(huì)通過(guò)改變各種參數(shù)影響到后續(xù)判斷的準(zhǔn)確性。本發(fā)明實(shí)施例在判斷幀類型流程之后增加了幀類型糾正,在數(shù)據(jù)增加后若輸出結(jié)果有明顯錯(cuò)誤時(shí)進(jìn)行內(nèi)部糾正,內(nèi)部糾正雖然不能改變已經(jīng)輸出的幀類型,但可以通過(guò)調(diào)整參數(shù)的方式提高后續(xù)判斷的準(zhǔn)確性。以下將分別就本發(fā)明實(shí)施例的三個(gè)要點(diǎn)進(jìn)行詳細(xì)說(shuō)明一 利用播放時(shí)間判斷B幀或/和分級(jí)B幀由于B幀采用前向以及后向的已編碼幀作為預(yù)測(cè),其編碼順序在后向參考幀之后,使得其播放時(shí)間往往和編碼順序不一致,因此可以用播放時(shí)間信息來(lái)判定B幀。若當(dāng)前幀的播放時(shí)間小于已經(jīng)接收到的幀的最大的播放時(shí)間,則該幀肯定為B巾貞,否則為I幀或P 幀。對(duì)于分級(jí)編碼的B幀也可以利用播放時(shí)間來(lái)進(jìn)一步判斷最高層級(jí)以及每個(gè)B幀所屬的層級(jí)。以連續(xù)7個(gè)B幀的情況為例,圖加所示,是該情況下分級(jí)B幀的編碼結(jié)構(gòu)圖, 第一排字母的下標(biāo)表示每幀所屬的層級(jí),第二排的數(shù)字為每一幀的播放序號(hào)。而實(shí)際的編碼順序?yàn)?括弧中的數(shù)字為播放序號(hào))Ι0/Ρ0 (0),Ι0/Ρ0 (8),Bl (4),B2 (2),B3⑴,B3 (3), B2(6),B3(5),B3(7)。圖2b為編碼順序和播放順序的關(guān)系,以及編碼的層級(jí),阿拉伯?dāng)?shù)字表示播放序號(hào),中文數(shù)字表示編碼序號(hào)。用播放時(shí)間判斷分級(jí)的算法可分為兩步第一步判斷最高層級(jí)(此例中為幻。將第0幀的層級(jí)設(shè)為0,然后按編碼順序讀取播放時(shí)間,如果當(dāng)前一幀的播放時(shí)間小于前一幀的播放時(shí)間則當(dāng)前幀的層級(jí)為前一幀的層級(jí)加1,反之則與前一幀的一樣。直到讀到播放時(shí)間緊鄰于第0幀的幀即第1幀,此時(shí)第 1幀所對(duì)應(yīng)的層級(jí)即為最高層級(jí)。第二步根據(jù)相鄰B幀播放時(shí)間的對(duì)稱關(guān)系來(lái)判斷剩余的幀所屬的層級(jí)。第一步完成后圖.五(b)實(shí)線框中的層級(jí)都已經(jīng)確定,此時(shí)需檢測(cè)虛線框中的B幀所屬的層級(jí)。檢測(cè)方法是在已經(jīng)確定層級(jí)的幀中進(jìn)行遍歷,尋找到兩個(gè)幀使得他們播放時(shí)間的均值與當(dāng)前幀的播放時(shí)間相等,則當(dāng)前幀的層級(jí)為該兩個(gè)幀的最大層級(jí)加1。圖中的橢圓展示的即是這種對(duì)稱關(guān)系,即橢圓中上面兩幀的播放時(shí)間的均值等于最下面幀的播放時(shí)間,而最下面幀的層級(jí)剛好為以上兩幀層級(jí)的最大值加1。二、利用幀數(shù)據(jù)量來(lái)判斷幀類型由于根據(jù)播放時(shí)間只能區(qū)分出是否為B幀,本實(shí)施例提供了只利用數(shù)據(jù)量等信息來(lái)判斷I幀和P幀的方案。對(duì)于根據(jù)播放時(shí)間可判斷出B幀的情況,只需要對(duì)剩余的幀區(qū)分是否I幀或P幀;而對(duì)于無(wú)法根據(jù)播放時(shí)間判斷出B幀的情況(例如包頭信息加密的情況)則要對(duì)所有幀進(jìn)行判斷,先確定I幀和P幀,剩余的幀則判定為B幀。本實(shí)施例通過(guò)自動(dòng)參數(shù)更新的方法利用幀數(shù)據(jù)量來(lái)判斷幀類型,主要分為以下幾個(gè)模塊(如圖六所示)1幀判斷模塊、P幀判斷模塊、參數(shù)更新模塊和類型糾正模塊。A:I 幀判斷一般來(lái)說(shuō)視頻中的I幀可分為以下兩類固定間隔的I巾貞,即為了滿足隨機(jī)接入在壓縮過(guò)程中按照固定間隔(一定時(shí)期內(nèi)固定,一旦用戶切換頻道,該間隔可能會(huì)發(fā)生變化) 插入的I幀;自適應(yīng)插入的I幀,即是為了提高壓縮效率,在場(chǎng)景切換處插入的I幀。
對(duì)于固定間隔的I幀,在識(shí)別過(guò)程中可以估計(jì)該固定間隔,在超過(guò)該間隔還沒(méi)有判斷到I幀時(shí),主動(dòng)放寬判斷條件或者用局部的特征來(lái)判斷(后文對(duì)此將有詳細(xì)說(shuō)明)。而對(duì)于自適應(yīng)插入的I幀,在序列空間復(fù)雜度類似的場(chǎng)景切換處,如果編碼為自適應(yīng)插入的I幀,由于I幀的壓縮效率差,其碼率往往會(huì)比之前的P幀大;如果編碼為P幀, 由于預(yù)測(cè)變差,其碼率也會(huì)比較大,此時(shí)該幀是比較重要的幀,較為容易的判斷為I幀(P幀和I幀數(shù)據(jù)量都比較大,容易錯(cuò)誤地將P幀誤認(rèn)是I幀)。對(duì)于空間復(fù)雜度簡(jiǎn)單的場(chǎng)景切換處,編碼為I幀可能會(huì)比之前的P幀還小,對(duì)于此類的I幀沒(méi)有辦法正確識(shí)別,但是其后的那些P幀或B幀也會(huì)相應(yīng)變小,通過(guò)后續(xù)的更新,可以進(jìn)行類型糾正,以提高對(duì)后續(xù)幀類型的識(shí)別率。因此,可通過(guò)以下三個(gè)步驟來(lái)判斷I幀,即分別比較當(dāng)前幀數(shù)據(jù)量和給定閾值,只要某一步中當(dāng)前幀數(shù)據(jù)量大于給定閾值就判定為I幀根據(jù)閾值1判斷明顯的I幀;根據(jù)閾值2判斷非固定間隔的I幀;根據(jù)閾值3判斷超過(guò)預(yù)期的固定間隔的I幀。B:P 幀判斷對(duì)于上一幀為I幀且當(dāng)前視頻流為閉環(huán)編碼的情況,I幀后面不會(huì)緊鄰B幀。如果該幀沒(méi)有判斷為I幀,則為P幀;對(duì)于上一幀為I幀且當(dāng)前視頻流為開環(huán)編碼的情況,如果當(dāng)前幀的數(shù)據(jù)量大于閾值4,則該幀為P幀,否則該幀為B幀;對(duì)于上一幀為P幀的情況,如果當(dāng)前幀數(shù)據(jù)量大于閾值5或者在當(dāng)前GOP存在B 幀的情況下大于閾值6,那么該幀為P幀;對(duì)于上一幀為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))在識(shí)別過(guò)程中,對(duì)于比較明顯的I巾貞,可以統(tǒng)計(jì)其后一幀是B幀還是P幀,若大多數(shù)I幀后面都是P幀,則可以認(rèn)為該編碼器是閉環(huán)編碼,否則認(rèn)為是開環(huán)編碼。計(jì)算預(yù)期的I幀固定間隔在判斷出I幀后,統(tǒng)計(jì)其間隔的概率分布,并通過(guò)加權(quán)平均,得到的預(yù)期的固定間隔。根據(jù)新判斷出的幀類型實(shí)時(shí)的更新上述模塊中的閾值a)閾值1 根據(jù)之前50幀的平均數(shù)據(jù)量(avJBPnbytes)以及前一個(gè)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ù)前一個(gè)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),前一個(gè)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隨著從上一個(gè)I幀到當(dāng)前幀的距離(currjjnterval)與預(yù)期的固定I幀間隔(expected_iframe_interval)的遠(yuǎn)離程度來(lái)計(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 來(lái)計(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 為上一個(gè)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)過(guò)上述步驟后,可能存在遠(yuǎn)超過(guò)預(yù)期的固定間隔卻還沒(méi)有判斷出I幀的情況, 此時(shí),雖然已經(jīng)輸出幀類型,但是可以利用局部的信息糾正參數(shù),使得后續(xù)的幀類型判斷更準(zhǔn)確。在接近預(yù)期的固定間隔附近取數(shù)據(jù)量最大的幀,將其幀類型改為I幀,并更新GOP中各幀類型的平均數(shù)據(jù)量和I幀間隔等參數(shù)。糾正錯(cuò)判的B幀實(shí)際應(yīng)用中的視頻編碼器,在利用B幀提高編碼效率時(shí)一般會(huì)考慮到解碼延時(shí)以及解碼存儲(chǔ)開銷,不會(huì)編碼出超過(guò)7個(gè)的連續(xù)B幀,甚至,更為極端的是,連續(xù)B幀不會(huì)超過(guò) 3個(gè)。通過(guò)之前判斷出的幀類型統(tǒng)計(jì)得出該碼流中最大連續(xù)B幀的預(yù)測(cè)值。在將一幀確定為B幀時(shí),需要確保此次連續(xù)的B幀數(shù)不超過(guò)預(yù)測(cè)值。如果超過(guò)該值,說(shuō)明當(dāng)前連續(xù)判斷為 B幀的幀中可能有錯(cuò)判,需要將這些幀中數(shù)據(jù)量最大的幀改判為P幀,并更新GOP中的各幀類型的平均數(shù)據(jù)量等信息。三、無(wú)法確定邊界和幀數(shù)據(jù)量時(shí)的幀類型檢測(cè)前兩個(gè)實(shí)例都需要在幀邊界和幀數(shù)據(jù)量已獲得的情況下進(jìn)行。在無(wú)丟包時(shí)可以通過(guò)RTP的序列號(hào)、時(shí)間戳、標(biāo)志位(ISMA方式)或RTP序列號(hào)、TS中CC、PUSI、PID(TS over RTP方式)來(lái)準(zhǔn)確的獲知幀邊界和每一幀的數(shù)據(jù)量,但在發(fā)生丟包的情況下,如果處于幀邊界的包發(fā)生丟失,則無(wú)法準(zhǔn)確判斷幀邊界的位置,可能會(huì)將幀的包數(shù)估計(jì)錯(cuò)誤甚至將兩幀的數(shù)據(jù)量拼為一幀,這將對(duì)幀類型的檢測(cè)帶來(lái)極大的干擾。因此,如果有丟包則需要在幀類型判斷之前進(jìn)行丟包處理,來(lái)獲得幀邊界、幀數(shù)據(jù)量和幀類型等信息。由于ISMA方式中RTP時(shí)間戳的變化標(biāo)志著新的幀到達(dá),因此在發(fā)生丟包時(shí),其處理過(guò)程比較簡(jiǎn)單1)如果丟包前后時(shí)間戳無(wú)變化,代表丟失的包處于一幀內(nèi)部,只需在統(tǒng)計(jì)幀數(shù)據(jù)量時(shí)考慮丟包的數(shù)據(jù)即可;2)如果丟包前后時(shí)間戳發(fā)生變化,代表丟包發(fā)生在幀的邊界,此時(shí)如果丟包前一個(gè)包的標(biāo)志位為1,則視丟包為后一幀的數(shù)據(jù),添加到后一幀的數(shù)據(jù)量中;否則,將丟包的數(shù)據(jù)量平均分配給前后兩幀(此處假設(shè)一次突發(fā)丟包不會(huì)超過(guò)一幀的長(zhǎng)度)。TS over RTP的情況要相對(duì)復(fù)雜,由于只能通過(guò)是否有PES頭(即PUSI為1)來(lái)判斷一幀的開始,若發(fā)生丟包,則很難判斷兩個(gè)有PES頭的包之間的數(shù)據(jù)是屬于一幀或多幀, 如圖3所示,在兩個(gè)有PES頭的包之間的數(shù)據(jù)發(fā)生了 3次丟包,但由于無(wú)法知曉丟失的包中是否也有PES頭(即代表一幀的開始),無(wú)法判斷這些數(shù)據(jù)是否屬于同一幀。本案例從兩方面分別提供了解決方法。如果PES頭可解,則可以根據(jù)其中的PTS來(lái)判斷當(dāng)前數(shù)據(jù)長(zhǎng)度(即兩個(gè)有PES頭的包之間的數(shù)據(jù)長(zhǎng)度)是否包含幀頭信息1)統(tǒng)計(jì)正確檢測(cè)出來(lái)的GOP的PTS的順序,將分布概率與距離目前幀的距離加權(quán)作為預(yù)期指數(shù),得到預(yù)期編碼結(jié)構(gòu);2)根據(jù)接收順序中從I幀開始的一系列幀的PTS到當(dāng)前的PTS及下一個(gè)PTS與預(yù)期的編碼結(jié)構(gòu)進(jìn)行匹配a)如果符合預(yù)期的編碼結(jié)構(gòu),則認(rèn)為該數(shù)據(jù)長(zhǎng)度的丟包中不包含幀頭信息,即當(dāng)前數(shù)據(jù)長(zhǎng)度為一幀,丟包發(fā)生在該幀內(nèi)部,不需要分割;b)如果不符合預(yù)期的編碼結(jié)構(gòu),說(shuō)明丟包中很可能包含幀頭信息,按照預(yù)期的編碼結(jié)構(gòu)以及丟包發(fā)生的位置(連續(xù)長(zhǎng)度,丟包長(zhǎng)度等)分割當(dāng)前的數(shù)據(jù)長(zhǎng)度,分配合理的幀類型和幀大小以及PTS。3)若后續(xù)發(fā)現(xiàn)了之前判斷為丟失幀頭的幀,則在校正步驟中更新之前的判斷結(jié)
16^ ο另外,可以根據(jù)丟包長(zhǎng)度,連續(xù)長(zhǎng)度,最大連續(xù)長(zhǎng)度,最大丟包長(zhǎng)度等來(lái)判斷當(dāng)前的數(shù)據(jù)長(zhǎng)度是否為一幀以及屬于何種幀類型1)如果該數(shù)據(jù)長(zhǎng)度和前一個(gè)I幀的長(zhǎng)度差不多,則認(rèn)為屬于同一個(gè)I幀;如果該數(shù)據(jù)長(zhǎng)度和P幀差不多大,且最大連續(xù)長(zhǎng)度比50幀之內(nèi)的平均B幀的數(shù)據(jù)量大,則認(rèn)為該數(shù)據(jù)長(zhǎng)度都屬于同一個(gè)P幀;對(duì)其他情況轉(zhuǎn)到2);2)如果該數(shù)據(jù)長(zhǎng)度和兩個(gè)P幀差不多大,則要拆分為兩個(gè)P幀,將這改數(shù)據(jù)長(zhǎng)度分為兩段,使得每段的長(zhǎng)度都和P幀最接近,并且要確保第二段以丟失包開頭;對(duì)其他情況轉(zhuǎn)到3);3)如果該數(shù)據(jù)長(zhǎng)度和P幀加B幀差不多,則要拆分為P幀+B幀,將連續(xù)長(zhǎng)度最大的包歸屬為P幀,在此基礎(chǔ)上將該數(shù)據(jù)長(zhǎng)度分為兩段,使得每段的長(zhǎng)度分別接近P幀和B幀, 并且要確保第二段以丟失包開頭;對(duì)其他情況轉(zhuǎn)到4);4)如果最大連續(xù)長(zhǎng)度小于B幀且該數(shù)據(jù)長(zhǎng)度和三個(gè)B幀差不多,則要拆分為三個(gè) B幀,將該數(shù)據(jù)長(zhǎng)度分為三段,使得每段的長(zhǎng)度都接近B幀,并且要確保第二段第三段以丟失包開頭;對(duì)其他情況轉(zhuǎn)到5);5)如果最大連續(xù)長(zhǎng)度小于B幀且該數(shù)據(jù)長(zhǎng)度和兩個(gè)B幀差不多,則要拆分為兩個(gè) B幀,將該數(shù)據(jù)長(zhǎng)度的包分為兩段,使得每段的長(zhǎng)度都接近B幀,并且要確保第二段第三段以丟失包開頭;對(duì)其他情況轉(zhuǎn)到6);6)其他情況下認(rèn)為該數(shù)據(jù)長(zhǎng)度全部屬于一幀。本實(shí)施例結(jié)合以上各例,提供一個(gè)可選的幀類型檢測(cè)方案,具體流程如圖4所示 分為以下幾個(gè)階段利用PTS初步判斷幀類型、丟包處理、利用數(shù)據(jù)量進(jìn)一步判斷幀類型和類型糾正。401 數(shù)據(jù)輸入后,判斷包頭是否可解,是則執(zhí)行根據(jù)播放時(shí)間判斷幀類型,否則執(zhí)行丟包處理;在幀類型判斷結(jié)束后,判斷是否之前幀判斷是否有誤,有則執(zhí)行幀類型糾正, 否則可以進(jìn)入幀類型判斷的循環(huán),即進(jìn)入401,具體執(zhí)行如下根據(jù)播放時(shí)間判斷幀類型對(duì)輸入的碼流先判斷是否為TS over RTP的包,如果是則需判斷TS包的PES頭是否加密。對(duì)于RTP包或PES頭可解的TS over RTP的包,可根據(jù)播放時(shí)間信息初步判斷是否為B幀,具體實(shí)施可參考要點(diǎn)一;丟包處理檢測(cè)是否存在丟包,若無(wú)丟包直接統(tǒng)計(jì)出數(shù)據(jù)量進(jìn)入以下幀類型判斷步驟;若有丟包則需針對(duì)RTP或TS over RTP包分別進(jìn)行丟包處理,估計(jì)幀邊界、幀數(shù)據(jù)量或部分幀類型,具體實(shí)施可參考要點(diǎn)三;根據(jù)數(shù)據(jù)量判斷幀類型該過(guò)程實(shí)時(shí)判斷幀類型,且動(dòng)態(tài)智能的調(diào)整相關(guān)參數(shù),具體實(shí)施可參考要點(diǎn)二;類型糾正在判斷過(guò)程中若發(fā)現(xiàn)之前的判斷結(jié)果有誤則會(huì)進(jìn)行糾正,該過(guò)程不影響輸出結(jié)果,但可用于更新相關(guān)參數(shù),以提高后續(xù)判斷的準(zhǔn)確性,具體實(shí)施可參考要點(diǎn)二。本發(fā)明實(shí)施例還提供了一種幀類型的檢測(cè)裝置,如圖5所示,包括時(shí)間檢測(cè)單元501,用于檢測(cè)各幀的播放時(shí)間;幀類型確定單元502,用于若當(dāng)前幀的播放時(shí)間小于已經(jīng)接收到的幀的最大播放時(shí)間,則確定上述當(dāng)前幀為雙向預(yù)測(cè)編碼B幀;CN 102547300 A進(jìn)一步地,上述圖5中還可以包括層級(jí)確定單元503,用于依據(jù)各幀的播放順序和編碼順序確定B幀在分級(jí)編碼中所屬的層級(jí);需要說(shuō)明的是,層級(jí)確定不是本發(fā)明實(shí)施例確定B幀的必要技術(shù)特征,該技術(shù)特征僅作為后續(xù)進(jìn)行需要層級(jí)信息的相關(guān)處理時(shí)才需要。本發(fā)明實(shí)施例還提供了另一種幀類型的檢測(cè)裝置,如圖6所示,包括類型獲得單元601,用于獲得已經(jīng)接收到的幀所在碼流的編碼類型,上述編碼類型包括開環(huán)編碼和閉環(huán)編碼;幀類型確定單元602,還用于若當(dāng)前幀的數(shù)據(jù)量大于第一域值則確定當(dāng)前幀為明顯的I幀,上述第一閾值由設(shè)定連續(xù)個(gè)數(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幀;上述第四閾值為一個(gè)圖像組的P幀平均數(shù)據(jù)量以及B幀平均數(shù)據(jù)量的均值;若當(dāng)前幀非I幀也非P幀,則確定當(dāng)前幀為B幀。進(jìn)一步地,上述幀類型確定單元602,還用于若當(dāng)前幀大于第二閾值,則確定當(dāng)前幀為I幀;上述第二閾值為當(dāng)前幀之前的一個(gè)I幀的數(shù)據(jù)量、當(dāng)前幀所在圖像組中P幀的平均數(shù)據(jù)量以及設(shè)定個(gè)數(shù)連續(xù)幀的平均數(shù)據(jù)量中的最大值。進(jìn)一步地,上述幀類型確定單元602,還用于若當(dāng)前幀與前一個(gè)I幀的間隔超過(guò)固定間隔,且當(dāng)前幀大于第三閾值,則確定當(dāng)前幀為I幀;上述第三閾值為當(dāng)前幀所在圖像組各幀的平均數(shù)據(jù)量、當(dāng)前幀的前一個(gè)P幀的數(shù)據(jù)量以及當(dāng)前幀所在圖像組I幀的數(shù)據(jù)量、 上一個(gè)I幀到當(dāng)前幀的距離與預(yù)期的固定I幀間隔的遠(yuǎn)離程度計(jì)算得到;或者,上述第三閾值根據(jù)當(dāng)前幀所在圖像組各幀的平均數(shù)據(jù)量以及上一個(gè)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á)到后仍然沒(méi)有判斷存在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ù)測(cè)值,則將上述連續(xù)的 B幀中數(shù)據(jù)量最大的幀確定為P幀;上述預(yù)測(cè)值大于等于3小于等于7第二更新單元802,用于更新圖像組中各種類型幀的平均數(shù)據(jù)量。進(jìn)一步地,如圖9所示,上述裝置還包括丟包類型確定單元901,用于確定已經(jīng)接收到的幀是否發(fā)生丟包,若發(fā)生丟包,則確定丟包類型;數(shù)據(jù)量確定單元902,用于若丟包類型為幀內(nèi)丟包,則計(jì)算幀數(shù)據(jù)量時(shí)確定收到幀的數(shù)據(jù)量與丟包數(shù)據(jù)量的和為該幀的數(shù)據(jù)量;若丟包類型為幀間丟包,則確定丟包處之前的包的標(biāo)志位是否為1,若是,則將丟包的數(shù)據(jù)量計(jì)算入后一幀,否則將丟包的數(shù)據(jù)量平均分配給前后兩幀。需要說(shuō)明的是,本實(shí)施的裝置和圖4或圖5的裝置是可以合并使用的,幀類型確定單元502與幀類型確定單元602可以使用同一個(gè)功能單元實(shí)現(xiàn)。本發(fā)明實(shí)施例充分利用RTP或TS over RTP的包頭信息,結(jié)合視頻中不同類型幀的編碼順序以及不同類型幀的前后數(shù)據(jù)量大小關(guān)系,在不解碼視頻凈載的情況下快速實(shí)時(shí)的判斷幀類型,并且通過(guò)丟包處理、自動(dòng)更新參數(shù)以及后期幀類型糾正的方法提高幀類型檢測(cè)的正確率。視頻流中會(huì)有指示視頻數(shù)據(jù)的播放時(shí)間的包頭信息,如ISMA方式中的RTP時(shí)間戳,以及TS over RTP方式中PES頭的PTS。本發(fā)明實(shí)施例將利用播放時(shí)間信息和編碼順序的相互關(guān)系,來(lái)判斷某些特殊結(jié)構(gòu)的編碼類型,如B幀。但對(duì)于TS over RTP方式,可能存在TS凈載完全加密PES頭無(wú)法解碼的情況,即PTS不可得,因此,本發(fā)明實(shí)施例還提供了不利用播放時(shí)間只利用數(shù)據(jù)量等信息來(lái)進(jìn)行幀類型判斷的方案。觀察實(shí)際應(yīng)用中的視頻碼流可以發(fā)現(xiàn),同一個(gè)GOP內(nèi)不同類型的幀一般具有較為明顯的區(qū)別,I幀數(shù)據(jù)量最大,P幀其次,B幀最小。如果能正確識(shí)別出每個(gè)GOP起始處的I 幀,則可以利用該幀的數(shù)據(jù)量判斷此GOP內(nèi)部的P幀和B幀。但由于視頻信號(hào)的非平穩(wěn)性, 不同位置處的I幀數(shù)據(jù)量差別存在著較大的差別,甚至?xí)椭癎OP中的P幀的數(shù)據(jù)量相當(dāng),給判斷I幀帶來(lái)了困難。本發(fā)明實(shí)施例設(shè)計(jì)了一套可智能調(diào)節(jié)的動(dòng)態(tài)參數(shù),以提高幀類型判斷的魯棒性和準(zhǔn)確性。特別是在判斷I幀時(shí),充分考慮了不同應(yīng)用場(chǎng)景中I幀的特性適當(dāng)?shù)恼{(diào)節(jié)判斷準(zhǔn)則和相關(guān)參數(shù),大大降低了 I幀的誤判率。在有損傳輸?shù)膽?yīng)用場(chǎng)景中,輸入的視頻流會(huì)發(fā)生丟包,根據(jù)丟包對(duì)判斷過(guò)程的影響,可以將其分為兩類一、幀內(nèi)的丟包,此時(shí)幀邊界的信息沒(méi)有丟失,可以先獲取到幀邊界,用對(duì)應(yīng)的序列號(hào)來(lái)統(tǒng)計(jì)一幀的包數(shù);二、幀邊界丟包(如RTP中標(biāo)志位為1的包,或TS over RTP中PUSI置1的包),此時(shí)可能無(wú)法判斷前后兩幀的邊界,也可能前后兩幀的數(shù)據(jù)拼接到一幀,使得幀數(shù)據(jù)量統(tǒng)計(jì)不準(zhǔn)確,影響幀類型判斷的結(jié)果。本發(fā)明實(shí)施例將就此進(jìn)行丟包檢測(cè)、幀邊界估計(jì)以及部分的幀類型估計(jì)。在幀類型判斷的前期,由于統(tǒng)計(jì)數(shù)據(jù)不充足,會(huì)存在較多的誤判,不僅影響到已輸出的結(jié)果,更會(huì)通過(guò)改變各種參數(shù)影響到后續(xù)判斷的準(zhǔn)確性。本發(fā)明實(shí)施例在判斷幀類型流程之后增加了幀類型糾正,在數(shù)據(jù)增加后若輸出結(jié)果有明顯錯(cuò)誤時(shí)進(jìn)行內(nèi)部糾正,內(nèi)部糾正雖然不能改變已經(jīng)輸出的幀類型,但可以通過(guò)調(diào)整參數(shù)的方式提高后續(xù)判斷的準(zhǔn)確性。
以下是幀類型判斷后的幾種應(yīng)用,可以理解的是幀類型確定后的應(yīng)用舉例不應(yīng)理解為窮舉,不對(duì)本發(fā)明實(shí)施例構(gòu)成限定。1.根據(jù)判斷出來(lái)的幀類型進(jìn)行不等保護(hù)帶寬受限時(shí),可根據(jù)不同幀類型對(duì)視頻質(zhì)量影響的區(qū)別進(jìn)行不等保護(hù),使得視頻接收質(zhì)量達(dá)到最優(yōu)。2.用預(yù)期周期結(jié)合GOP的平均碼率可以實(shí)現(xiàn)視頻快速瀏覽對(duì)于存儲(chǔ)在本地的碼流用戶不想瀏覽全部的視頻,可以通過(guò)快速的預(yù)處理,提取出I幀對(duì)應(yīng)位置從而實(shí)現(xiàn)快速流覽。對(duì)于存儲(chǔ)在服務(wù)器的碼流,用戶不想瀏覽全部的視頻,服務(wù)器可以通過(guò)快速的預(yù)處理,提取出I幀對(duì)應(yīng)位置從而有選擇的傳輸關(guān)鍵幀信息給用戶。3.服務(wù)質(zhì)量(Quality of Service,QOS):在帶寬不足時(shí),在中間節(jié)點(diǎn),可以根據(jù)判斷出的幀類型,智能丟棄一部分B幀或者P幀(靠近GOP結(jié)束的P幀),使得降低碼率的同時(shí),盡可能少的影響視頻質(zhì)量。另外基于實(shí)驗(yàn),對(duì)本發(fā)明實(shí)施例的技術(shù)方案的效果進(jìn)行了測(cè)試,以下是測(cè)試結(jié)果。本節(jié)的實(shí)驗(yàn)在沒(méi)有丟包的情況下,對(duì)利用播放時(shí)間和不利用播放時(shí)間的兩種情況,分別與背景技術(shù)中的方案二進(jìn)行了對(duì)比,結(jié)果如表1所示。表1測(cè)試序列
權(quán)利要求
1.一種幀類型的檢測(cè)方法,其特征在于,包括檢測(cè)各幀的播放時(shí)間;若當(dāng)前幀的播放時(shí)間小于已經(jīng)接收到的幀的最大播放時(shí)間,則確定所述當(dāng)前幀為雙向預(yù)測(cè)編碼幀B幀。
2.根據(jù)權(quán)利要求1所述方法,其特征在于,幀類型檢測(cè)結(jié)束后,還包括依據(jù)各幀的播放順序和編碼順序確定B幀在分級(jí)編碼中所屬的層級(jí)。
3.根據(jù)權(quán)利要求1所述方法,其特征在于,若檢測(cè)播放時(shí)間失敗還包括獲得接收到的幀所在碼流的編碼類型,所述編碼類型包括開環(huán)編碼和閉環(huán)編碼;若當(dāng)前幀的數(shù)據(jù)量大于第一域值則確定當(dāng)前幀為明顯的幀內(nèi)編碼幀I幀,所述第一閾值由設(shè)定連續(xù)個(gè)數(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ù)測(cè)編碼幀P幀;所述第四閾值為一個(gè)圖像組的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)前幀之前的一個(gè)I幀的數(shù)據(jù)量、當(dāng)前幀所在圖像組中P幀的平均數(shù)據(jù)量以及設(shè)定個(gè)數(shù)連續(xù)幀的平均數(shù)據(jù)量中的最大值。
6.根據(jù)權(quán)利要求3所述方法,其特征在于,還包括若當(dāng)前幀與前一個(gè)I幀的間隔超過(guò)固定間隔,且當(dāng)前幀的數(shù)據(jù)量大于第三閾值,則確定當(dāng)前幀為I幀;所述第三閾值根據(jù)當(dāng)前幀所在圖像組各幀的平均數(shù)據(jù)量、當(dāng)前幀的前一個(gè)P幀的數(shù)據(jù)量以及當(dāng)前幀所在圖像組I幀的數(shù)據(jù)量、上一個(gè)I幀到當(dāng)前幀的距離與預(yù)期的固定I幀間隔的遠(yuǎn)離程度計(jì)算得到;或者,所述第三閾值根據(jù)當(dāng)前幀所在圖像組各幀的平均數(shù)據(jù)量以及上一個(gè)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á)到后仍然沒(méi)有判斷存在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ù)測(cè)值,則將所述連續(xù)的B幀中數(shù)據(jù)量最大的幀確定為P幀;并更新圖像組中各種類型幀的平均數(shù)據(jù)量;所述預(yù)測(cè)值大于等于3小于等于7。
10.根據(jù)權(quán)利要求3至7任意一項(xiàng)所述方法,其特征在于,還包括確定已經(jīng)接收到的幀是否發(fā)生丟包,若發(fā)生丟包,則確定丟包類型;若丟包類型為幀內(nèi)丟包,則計(jì)算幀數(shù)據(jù)量時(shí)確定收到幀的數(shù)據(jù)量與丟包數(shù)據(jù)量的和為該幀的數(shù)據(jù)量;若丟包類型為幀間丟包,則確定丟包處之前的包的標(biāo)志位是否為1,若是,則將丟包的數(shù)據(jù)量計(jì)算入后一幀,否則將丟包的數(shù)據(jù)量平均分配給前后兩幀。
11.一種幀類型的檢測(cè)方法,其特征在于,包括獲得接收到的幀所在碼流的編碼類型,所述編碼類型包括開環(huán)編碼和閉環(huán)編碼;若當(dāng)前幀的數(shù)據(jù)量大于第一域值則確定當(dāng)前幀為明顯的幀內(nèi)編碼幀I幀,所述第一閾值由設(shè)定連續(xù)個(gè)數(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ù)測(cè)編碼幀P幀;所述第四閾值為一個(gè)圖像組的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)前幀之前的一個(gè)I幀的數(shù)據(jù)量、當(dāng)前幀所在圖像組中P幀的平均數(shù)據(jù)量以及設(shè)定個(gè)數(shù)連續(xù)幀的平均數(shù)據(jù)量中的最大值。
14.根據(jù)權(quán)利要求11所述方法,其特征在于,還包括若當(dāng)前幀與前一個(gè)I幀的間隔超過(guò)固定間隔,且當(dāng)前幀的數(shù)據(jù)量大于第三閾值,則確定當(dāng)前幀為I幀;所述第三閾值根據(jù)當(dāng)前幀所在圖像組各幀的平均數(shù)據(jù)量、當(dāng)前幀的前一個(gè)P幀的數(shù)據(jù)量以及當(dāng)前幀所在圖像組I幀的數(shù)據(jù)量、上一個(gè)I幀到當(dāng)前幀的距離與預(yù)期的固定I幀間隔的遠(yuǎn)離程度計(jì)算得到;或者,所述第三閾值根據(jù)當(dāng)前幀所在圖像組各幀的平均數(shù)據(jù)量以及上一個(gè)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á)到后仍然沒(méi)有判斷存在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ù)測(cè)值,則將所述連續(xù)的B幀中數(shù)據(jù)量最大的幀確定為P幀;并更新圖像組中各種類型幀的平均數(shù)據(jù)量;所述預(yù)測(cè)值大于等于3小于等于7。
18.根據(jù)權(quán)利要求11至15任意一項(xiàng)所述方法,其特征在于,還包括確定已經(jīng)接收到的幀是否發(fā)生丟包,若發(fā)生丟包,則確定丟包類型;若丟包類型為幀內(nèi)丟包,則計(jì)算幀數(shù)據(jù)量時(shí)確定收到幀的數(shù)據(jù)量與丟包數(shù)據(jù)量的和為該幀的數(shù)據(jù)量;若丟包類型為幀間丟包,則確定丟包處之前的包的標(biāo)志位是否為1,若是,則將丟包的數(shù)據(jù)量計(jì)算入后一幀,否則將丟包的數(shù)據(jù)量平均分配給前后兩幀。
19.根據(jù)權(quán)利要求18所述方法,其特征在于,還包括通過(guò)統(tǒng)計(jì)已經(jīng)檢測(cè)出的幀類型預(yù)測(cè)編碼結(jié)構(gòu);若丟包類型為幀間丟包,丟包處之前的包的標(biāo)志位無(wú)法檢測(cè),則依據(jù)預(yù)測(cè)的編碼結(jié)構(gòu)以及丟包的位置分割當(dāng)前數(shù)據(jù)長(zhǎng)度。
20.一種幀類型的檢測(cè)裝置,其特征在于,包括時(shí)間檢測(cè)單元,用于檢測(cè)各幀的播放時(shí)間;幀類型確定單元,用于若當(dāng)前幀的播放時(shí)間小于已經(jīng)接收到的幀的最大播放時(shí)間,則確定所述當(dāng)前幀為雙向預(yù)測(cè)編碼B幀。
21.根據(jù)權(quán)利要求20所述裝置,其特征在于,還包括層級(jí)確定單元,用于依據(jù)各幀的播放順序和編碼順序確定B幀在分級(jí)編碼中所屬的層級(jí)。
22.一種幀類型的檢測(cè)裝置,其特征在于,包括類型獲得單元,用于獲得已經(jīng)接收到的幀所在碼流的編碼類型,所述編碼類型包括開環(huán)編碼和閉環(huán)編碼;幀類型確定單元,用于若當(dāng)前幀的數(shù)據(jù)量大于第一域值則確定當(dāng)前幀為明顯的I幀, 所述第一閾值由設(shè)定連續(xù)個(gè)數(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幀;所述第四閾值為一個(gè)圖像組的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)前幀之前的一個(gè)I幀的數(shù)據(jù)量、當(dāng)前幀所在圖像組中P幀的平均數(shù)據(jù)量以及設(shè)定個(gè)數(shù)連續(xù)幀的平均數(shù)據(jù)量中的最大值。
24.根據(jù)權(quán)利要求22所述裝置,其特征在于,所述幀類型確定單元,還用于若當(dāng)前幀與前一個(gè)I幀的間隔超過(guò)固定間隔,且當(dāng)前幀的數(shù)據(jù)量大于第三閾值,則確定當(dāng)前幀為I幀;所述第三閾值為當(dāng)前幀所在圖像組各幀的平均數(shù)據(jù)量、當(dāng)前幀的前一個(gè)P幀的數(shù)據(jù)量以及當(dāng)前幀所在圖像組I幀的數(shù)據(jù)量、上一個(gè)I 幀到當(dāng)前幀的距離與預(yù)期的固定I幀間隔的遠(yuǎn)離程度計(jì)算得到;或者,所述第三閾值根據(jù)當(dāng)前幀所在圖像組各幀的平均數(shù)據(jù)量以及上一個(gè)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á)到后仍然沒(méi)有判斷存在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ù)測(cè)值,則將所述連續(xù)的B幀中數(shù)據(jù)量最大的幀確定為P幀;所述預(yù)測(cè)值大于等于3小于等于7 ;第二更新單元,用于更新圖像組中各種類型幀的平均數(shù)據(jù)量。
28.根據(jù)權(quán)利要求22至25任意一項(xiàng)所述裝置,其特征在于,還包括丟包類型確定單元,用于確定已經(jīng)接收到的幀是否發(fā)生丟包,若發(fā)生丟包,則確定丟包類型;數(shù)據(jù)量確定單元,用于若丟包類型為幀內(nèi)丟包,則計(jì)算幀數(shù)據(jù)量時(shí)確定收到幀的數(shù)據(jù)量與丟包數(shù)據(jù)量的和為該幀的數(shù)據(jù)量;若丟包類型為幀間丟包,則確定丟包處之前的包的標(biāo)志位是否為1,若是,則將丟包的數(shù)據(jù)量計(jì)算入后一幀,否則將丟包的數(shù)據(jù)量平均分配給前后兩幀。
全文摘要
本發(fā)明實(shí)施例公開了一種幀類型的檢測(cè)方法和裝置,其中方法包括檢測(cè)各幀的播放時(shí)間;若當(dāng)前幀的播放時(shí)間小于已經(jīng)接收到的幀的最大播放時(shí)間,則確定所述當(dāng)前幀為雙向預(yù)測(cè)編碼幀B幀。本發(fā)明實(shí)施例提供的技術(shù)方案,結(jié)合不同類型幀的編碼順序以及不同類型幀的前后數(shù)據(jù)量大小關(guān)系,在不解碼凈載的情況下判斷幀類型,消除了衰減因子的影響,提高了幀類型檢測(cè)的正確率。
文檔編號(hào)H04N7/64GK102547300SQ20101059432
公開日2012年7月4日 申請(qǐng)日期2010年12月17日 優(yōu)先權(quán)日2010年12月17日
發(fā)明者張冬, 李厚強(qiáng), 沈秋, 謝清鵬 申請(qǐng)人:中國(guó)科學(xué)技術(shù)大學(xué), 華為技術(shù)有限公司