專利名稱:基于幀內(nèi)編碼圖象檢索的視頻快進快退及恢復(fù)常速的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種基于幀內(nèi)編碼圖象檢索的視頻快進快退及恢復(fù)常速的方法,屬于計算機多媒體應(yīng)用技術(shù)領(lǐng)域,尤其涉及視頻播放技術(shù)領(lǐng)域。
背景技術(shù):
通常一個多媒體播放器播放媒體文件需要經(jīng)過的流程主要是配置解碼器—>讀取每一幀數(shù)據(jù)—>選用合適的解碼器解碼—>顯示播放。
由于音視頻數(shù)據(jù)的大小一般來說是十分巨大的,因此音視頻的壓縮編碼/解碼也是十分重要的。所以對于播放器來說,對于不同壓縮格式的媒體文件,應(yīng)該選擇合適的解碼器對數(shù)據(jù)進行解碼,然后再進行顯示和播放。
對于運動圖象專家組標準(以下簡稱MPEG)視頻流,其采用三種類型的圖像幀內(nèi)圖(以下簡稱I幀)、預(yù)測圖(以下簡稱P幀)和差補圖即雙向預(yù)測圖(以下簡稱B幀)。I幀可提供隨機存取的存放位置,但壓縮比不大,是一幅清晰的靜態(tài)畫面;P幀可以由I幀或前面的P幀進行預(yù)測,壓縮比大于I幀;B幀是通過先前和后繼的信息進行預(yù)測,因此壓縮效果最顯著。一個視頻流序列沿時間軸方向可以按如下順序進行排列IBBPBBIBBPBB……快進快退前進或后退所跳到的那一幀是必須保證為I幀的,如果跳到的是P幀或是B幀,因為P幀和B幀的解碼都依賴于時序上的前一幀而不能單獨解碼,用戶所看到的將是一幅馬賽克畫面,直到跳到I幀之后才重新恢復(fù)清晰。從用戶的需求出發(fā),顯然馬賽克是用戶最難以接受的。因此,在快進快退時使用I幀檢索技術(shù),使新的起始時間點必須是I幀,才可以保證播放的時候用戶看到的是一幅幅清晰的畫面。
快進快退是盒式磁帶錄象機(以下簡稱VCR)中很重要的一項功能,對于一個多媒體播放器,實現(xiàn)穩(wěn)定快速的快進快退技術(shù)是滿足用戶需求的重要保證。比如用戶如果對當前的節(jié)目不是很感興趣,則可以通過快進快退直接跳到節(jié)目的其他時間點上去。這使得用戶變得更加的主動,可以選擇收看節(jié)目的任意一部分??爝M快退是多媒體播放中經(jīng)常應(yīng)用到的一項功能。目前的多媒體播放器所支持的快進快退技術(shù)一般是在拖動的基礎(chǔ)上進行的改進。用戶點擊一次按鈕,快進或快退一定的時間,這個時間可以由用戶事先設(shè)定,然后從新的時間點的下一個I幀進行播放,這實際上和拖動操作的原理是一樣的。這樣避免了拖動的隨機性,使用戶可以一步步的快進快退到想看的時間點上。但是這種方法也是有一定的局限性1、用戶只能一步一步的手動操作使視頻快進快退,比較繁瑣。
2、每次前進的步長雖然可設(shè)置,但快進快退過程中仍是固定不變的。
3、由于跳躍可能會錯過一些關(guān)鍵幀,用戶瀏覽的效果不佳。
4、由于是手動操作,每跳一步都要花費較長時間,快進快退速度受限制。
發(fā)明內(nèi)容
本發(fā)明的目的是提出一種基于幀內(nèi)編碼圖象檢索的視頻快進快退及恢復(fù)常速的方法,利用已有計算機中的視頻播放技術(shù),解決視頻播放時的自動快進快退中操作繁瑣、步長固定等問題,給用戶提供播放多媒體文件自動快進快退的VCR功能,利用I幀檢索技術(shù)改善快進快退的效果,以提高用戶瀏覽視頻的視覺效果。
本發(fā)明提出的基于幀內(nèi)編碼圖象檢索的視頻快進快退的方法,包括以下步驟(1)設(shè)視頻流中的快進或快退速度為n倍速,即每次向前或向后跳n個I幀;(2)停止播放音頻;(3)根據(jù)上述設(shè)定的快進或快退速度,判斷得到的視頻下一幀是否為I幀,若不是I幀,則進行以下步驟(4),若是,則對I幀計數(shù)器加1,并判斷I幀計數(shù)是否到達設(shè)定的倍數(shù)n,若已到達,進行以下步驟(6),若不到達,則進行以下步驟(4);(4)若為快進狀態(tài),則跳到后一視頻幀,若為快退狀態(tài),則跳回前一視頻幀,并返回步驟(3);(5)使快進或快退延遲,以控制快進或快退的速度;(6)對步驟(3)中檢索到的I幀視頻進行解碼,并顯示該幀數(shù)據(jù);(7)重復(fù)上述步驟(3)~(6),以實現(xiàn)所有視頻的自動快進或快退。
上述方法中,控制快進或快退速度的方法包括以下步驟(1)視頻向前或向后跳一幀之后,利用下式計算使快進或快退延遲的時間延時時間=(最大跳躍時間-本次I幀跳躍時間+C1)×C2/最大視頻時間,上式中,C1、C2分別為兩個相同或不相同的時間常數(shù);(2)對上述計算的延時時間進行判斷,若超過本次I幀跳躍時間,則將延遲時間設(shè)成本次I幀跳躍時間,若沒有超過本次I幀跳躍時間,則維持計算的延時時間不變。
本發(fā)明提出的基于幀內(nèi)編碼圖象檢索的視頻恢復(fù)常速的方法,包括以下步驟(1)設(shè)視頻流中的播放速度為正常速度;(2)恢復(fù)播放音頻;(3)根據(jù)上述正常速度,得到下一幀視頻;(4)對下一幀視頻進行解碼,將解碼后的數(shù)據(jù)存儲,在播放時間到來時播放該數(shù)據(jù);(5)重復(fù)步驟(3)和(4),直至播放完所有數(shù)據(jù)。
本發(fā)明提出的基于幀內(nèi)編碼圖象檢索的視頻快進快退及恢復(fù)常速的方法,其優(yōu)點是1、快進快退時視頻畫面清晰,沒有馬賽克。
2、控制視頻快進快退速度的算法簡單,計算復(fù)雜度小,運算快速。
3、視頻的快進快退速度穩(wěn)定,而且速度能夠隨視頻長度自適應(yīng)快速變化。
4、用戶可以根據(jù)自己的需要,通過配置參數(shù),控制視頻的快進快退速度。
5、本發(fā)明方法不僅適用于本地多媒體文件,同時也能擴展應(yīng)用于遠程VOD點播中。
6、用戶可以利用本發(fā)明方法提供的快進快退功能對視頻節(jié)目進行快速瀏覽。
圖1為本發(fā)明提出的自動快進快退的流程框圖。
圖2為本發(fā)明提出的恢復(fù)正常速度播放的流程框圖。
具體實施例方式
本發(fā)明提出的基于幀內(nèi)編碼圖象檢索的視頻快進快退的方法,其流程如圖1所示(1)設(shè)視頻流中的快進或快退速度為n倍速,即每次向前或向后跳n個I幀;(2)停止播放音頻;(3)根據(jù)上述設(shè)定的快進或快退速度,判斷得到的視頻下一幀是否為I幀,若不是I幀,則進行以下步驟(4),若是,則對I幀計數(shù)器加1,并判斷I幀計數(shù)是否到達設(shè)定的倍數(shù)n,若已到達,進行以下步驟(6),若不到達,則進行以下步驟(4);(4)若為快進狀態(tài),則跳到后一視頻幀,若為快退狀態(tài),則跳回前一視頻幀,并返回步驟(3);(5)使快進或快退延遲,以控制快進或快退的速度;(6)對步驟(3)中檢索到的I幀視頻進行解碼,并顯示該幀數(shù)據(jù);(7)重復(fù)上述步驟(3)~(6),以實現(xiàn)所有視頻的自動快進或快退。
上述方法中,控制快進或快退速度的方法,首先視頻向前或向后跳一幀之后,利用下式計算使快進或快退延遲的時間延時時間=(最大跳躍時間-本次I幀跳躍時間+C1)×C2/最大視頻時間,上式中,C1、C2分別為兩個相同或不相同的時間常數(shù);然后對上述計算的延時時間進行判斷,若超過本次I幀跳躍時間,則將延遲時間設(shè)成本次I幀跳躍時間,若沒有超過本次I幀跳躍時間,則維持計算的延時時間不變。
本發(fā)明提出的基于幀內(nèi)編碼圖象檢索的視頻恢復(fù)常速的方法,其流程如圖2所示,包括以下步驟(1)設(shè)視頻流中的播放速度為正常速度;(2)恢復(fù)播放音頻;(3)根據(jù)上述正常速度,得到下一幀視頻;(4)對下一幀視頻進行解碼,將解碼后的數(shù)據(jù)存儲,在播放時間到來時播放該數(shù)據(jù);(5)重復(fù)步驟(3)和(4),直至播放完所有數(shù)據(jù)。
本發(fā)明提供了一種自動向前向后檢索I幀并在I幀間跳躍的快進快退方式給用戶使用。用戶點擊一次快進快退按鈕后,節(jié)目自動在I幀上跳躍前進或后退,使用戶可以方便的瀏覽節(jié)目,并且也使節(jié)目可以快速的快進快退到新的時間點,直到用戶瀏覽到自己想看的節(jié)目時間點后,可以隨時恢復(fù)正常播放,進行觀看。對于這種方式,用戶也可以根據(jù)自身的需求選擇不同的快進快退速度。將這種方法應(yīng)用到計算機多媒體播放上,可以滿足用戶更多的需求。在快進快退中我們必須要用到檢索I幀的技術(shù)。
自動快進快退是通過在I幀之間進行向前向后的連續(xù)跳躍,實現(xiàn)快進快退的功能。由于可以設(shè)定間隔n個I幀顯示一次,但每個I幀間的間隔又是不定的,因此n個I幀顯示一次并不就等于正常播放速度的n倍。為此只能近似定義每間隔n個I幀顯示一次作為n倍速的快進快退。用戶在n倍快進(快退)的基礎(chǔ)上點擊一次快進(快退)按鈕,則快進(快退)速度增為n+1倍;在n倍快進(快退)的基礎(chǔ)上點擊一次快退(快進)按鈕,則快進(快退)速度減為n-1倍。
快進快退處理中,音頻不需快進快退,仍按正常速度解碼,但是不播放出來設(shè)置成靜音。
快進快退處理中,由于只播放視頻,因此將不進行音視頻同步處理。另外,正常時解碼后解碼數(shù)據(jù)需緩沖到播放時刻再顯示,但快進快退不按正常速度處理,等到緩沖再顯示則顯示的速度會遠遠落后于快進快退的速度,因此,解碼后必須立即顯示。
用戶在快進快退過程中,當瀏覽到自己想看的時間點之后,可以選擇恢復(fù)常速播放。這可以通過點擊播放按鈕或是通過點擊與當前快進快退狀態(tài)相反的按鈕將快進快退速度降至0來實現(xiàn)。
在自動快進快退方法中,如果不設(shè)置延遲,連續(xù)地快速在I幀間跳躍檢索,則快進快退的速度會相當?shù)目?,用戶會來不及瀏覽到顯示出來的每一個I幀。因此需要在找到I幀之后延遲一定的時間再顯示出來。但這段時間如果設(shè)成固定的,則無法同時滿足不同長度的節(jié)目。例如這段延遲時間較長,對于較長長度的節(jié)目,則會使用戶等待很久。若延遲時間較短,對于較短長度的節(jié)目,用戶還沒來得及就很快會瀏覽完畢。因此,在控制延遲時間時需考慮實際的電影長度。另外每次I幀跳躍的時間也不是固定不變的,有時兩個I幀間間隔很小,一下就跳到了;有時卻間隔相當遠,需要很長時間才跳躍到。這會給用戶造成畫面跳躍的速度不一致。為此,本發(fā)明方法采取的策略是,若本次跳躍的時間過長,接下來延遲的時間就盡可能短些,使得每次跳躍+延遲的總時間能維持在一個穩(wěn)定的時間范圍里。這樣給用戶的感覺就是畫面以比較穩(wěn)定的速度快進快退了。為此,所采取的算法如下定義maxtime最大電影長度。單位秒max_skiptime最大跳躍時間,單位毫秒,這里設(shè)為10000毫秒即10秒skiptime本次I幀跳躍時間,即當前I幀同上一次所顯示I幀之間的間隔時間。若此時間大于(max_skiptime)10秒,則作為10秒進行處理。單位毫秒delay所需計算的延遲時間。單位毫秒算法delay=(max_skiptime-skiptime+C1)×C2/maxtime);C1,C2為常數(shù),這里都取作1000。
如果電影節(jié)目過短,這樣有可能造成delay的時間很長,甚至超過了每次跳躍的實際時間,這樣就失去了快進快退的意義,因此如果延遲的時間超過了跳躍的時間,就將延遲的時間設(shè)成兩幀間實際播放的時間間隔,作為最大的延遲。如下if(delay>skiptime)delay=skiptime;本發(fā)明所依據(jù)的原理是對I幀的檢索與顯示。這是利用用戶所希望的寧可看到一幅靜止清晰的畫面也不愿意看一段時間的馬賽克。為此,在快進快退時,利用I幀作為關(guān)鍵幀的特性進行檢索,使得每次顯示的幀都為I幀,這樣就可以避免馬賽克的畫面。
下面介紹本發(fā)明的一個實施例本實施例通過播放本地mp4媒體文件來完成,所有操作皆由播放器完成。
播放器配置CPUIntel PIII 800MHz內(nèi)存256M操作系統(tǒng)Windows2000Professional播放器LSMP Media Player參數(shù)設(shè)置播放節(jié)目mummy750a128.mp4(一部電影)視頻長度7483191毫秒本實施例的播放器快進快退實現(xiàn)方法,只需用戶在界面上點擊相應(yīng)快進快退鈕即可。
本實施例實現(xiàn)自動快進快退的方法具體測試數(shù)據(jù)如下
每次I幀跳躍的數(shù)據(jù)如下快進
快退
從上面的數(shù)據(jù)可以看出由于延遲的作用,一方面保證了快進快退的速度不會過快,另一方面使速度更加平均,因為跳幀時間越少的延遲一般越大,這樣總時間就會更趨于平均。
另外,從快退處理時可以看到兩個I幀間間隔很小,此時計算的延遲也更大,這使得一般情況下總跳躍時間大概能保持在1秒鐘左右。用戶也能收到較好的視覺效果。
由于跳幀的快速,一般總時間還是比跳過的時間小很多的,除非跳過時間很小,使得計算延遲時間小于跳過的時間(如快退的5,6),但由于加了保護,使總的時間不會大過跳過時間很多。
權(quán)利要求
1.一種基于幀內(nèi)編碼圖象檢索的視頻快進快退的方法,其特征在于該方法包括以下步驟(1)設(shè)視頻流中的快進或快退速度為n倍速,即每次向前或向后跳n個I幀;(2)停止播放音頻;(3)根據(jù)上述設(shè)定的快進或快退速度,判斷得到的視頻下一幀是否為I幀,若不是I幀,則進行以下步驟(4),若是,則對I幀計數(shù)器加1,并判斷I幀計數(shù)是否到達設(shè)定的倍數(shù)n,若已到達,進行以下步驟(6),若不到達,則進行以下步驟(4);(4)若為快進狀態(tài),則跳到后一視頻幀,若為快退狀態(tài),則跳回前一視頻幀,并返回步驟(3);(5)使快進或快退延遲,以控制快進或快退的速度;(6)對步驟(3)中檢索到的I幀視頻進行解碼,并顯示該幀數(shù)據(jù);(7)重復(fù)上述步驟(3)~(6),以實現(xiàn)所有視頻的自動快進或快退。
2.如權(quán)利要求1所述的方法,其特征在于,步驟(5)中控制快進或快退速度的方法包括以下步驟(1)視頻向前或向后跳一幀之后,利用下式計算使快進或快退延遲的時間延時時間=(最大跳躍時間-本次I幀跳躍時間+C1)×C2/最大視頻時間,上式中,C1、C2分別為兩個相同或不相同的時間常數(shù);(2)對上述計算的延時時間進行判斷,若超過本次I幀跳躍時間,則將延遲時間設(shè)成本次I幀跳躍時間,若沒有超過本次I幀跳躍時間,則維持計算的延時時間不變。
3.一種基于幀內(nèi)編碼圖象檢索的視頻恢復(fù)常速的方法,其特征在于該方法包括以下步驟(1)設(shè)視頻流中的播放速度為正常速度;(2)恢復(fù)播放音頻;(3)根據(jù)上述正常速度,得到下一幀視頻;(4)對下一幀視頻進行解碼,將解碼后的數(shù)據(jù)存儲,在播放時間到來時播放該數(shù)據(jù);(5)重復(fù)步驟(3)和(4),直至播放完所有數(shù)據(jù)。
全文摘要
本發(fā)明涉及一種基于幀內(nèi)編碼圖象檢索的視頻快進快退及恢復(fù)常速的方法,屬于計算機多媒體應(yīng)用技術(shù)領(lǐng)域。首先設(shè)視頻流中的快進或快退速度為n倍速,停止播放音頻;根據(jù)設(shè)定的快進或快退速度,對視頻下一幀進行處理,使快進或快退延遲,以控制快進或快退的速度。本發(fā)明的視頻恢復(fù)常速的方法,首先設(shè)視頻流中的播放速度為正常速度;恢復(fù)播放音頻;根據(jù)正常速度,得到下一幀視頻;對下一幀視頻進行處理直至播放完所有數(shù)據(jù)。利用本發(fā)明方法,快進快退時視頻畫面清晰,控制視頻快進快退速度的算法簡單,視頻的快進快退速度穩(wěn)定,而且速度能夠隨視頻長度自適應(yīng)快速變化。用戶可以利用本發(fā)明方法提供的快進快退功能對視頻節(jié)目進行快速瀏覽。
文檔編號H04N5/915GK1556649SQ20031012385
公開日2004年12月22日 申請日期2003年12月31日 優(yōu)先權(quán)日2003年12月31日
發(fā)明者戴瓊海, 曾濤, 丁嶸 申請人:清華大學(xué)