專利名稱:視頻播放時快進快退處理方法、裝置以及移動終端的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信領(lǐng)域,具體而言,涉及一種視頻播放時快進快退處理方法、裝置以 及移動終端。
背景技術(shù):
目前,廣泛使用的視頻文件主要有I幀、P幀、B幀三種幀類型。下面對此分別進行 說明。I幀(也稱為幀內(nèi)編碼幀)是一種自帶全部信息的獨立幀,視頻序列中的第一個幀始 終都是I幀,其無需參考其它圖像便可獨立進行解碼。如果所傳輸?shù)谋忍亓髟獾狡茐?,則需 要將I幀用作新查看器的起始點或重新同步點。P幀(也成為幀間預(yù)測編碼幀)需要參考前面的I幀和/或P幀的不同部分才能 進行編碼。與I幀相比,P幀通常占用更少的數(shù)據(jù)位,但由于P幀對前面的P和I參考幀有 著復(fù)雜的依賴性,因此對傳輸錯誤非常敏感。B幀(也稱為雙向預(yù)測編碼幀)需要同時以前面的幀和后面的幀作為參考幀。目前,對正在播放視頻執(zhí)行快進、快退功能的處理有如下幾種一種是在快進、快退時,一邊快進一邊解碼,這種方法需要在快進快退時逐個幀的 去分析視頻的內(nèi)容,然后解碼,導(dǎo)致速度慢。其改進的方法是在快進、快退時分析每個幀的 類型,如果這個幀是I幀才解碼,如果不是則繼續(xù)快進或者快退。然而,這樣操作的缺陷是 操作速度比較慢,一般適用于PC或者處理器比較高端的設(shè)備。另一種方法是按照用戶的快進、快退操作跳到進度條指定的時間點,然后從這個 時間點尋找最近的一個I幀位置,然后從這個I幀位置出開始解碼。這種方法操作速度比 較快,但是進度條時間并不準確。因為I幀之間的間隔并沒有一個標準,所以經(jīng)常會產(chǎn)生播 放時間沒有停留在搜索結(jié)束時的位置,進度條就會向前或者向后跳躍的現(xiàn)象。而產(chǎn)生這種 跳躍的原因就是因為快進完成后視頻解碼器需要重新解碼,而這個解碼必須從最近的一個 I幀開始,而用戶快進、快退的結(jié)束時間往往是一個P幀、或者B幀,所以解碼器需要在用戶 快進、快退的基礎(chǔ)上重新搜索到最近的一個I幀的位置,而兩個I幀之間的間隔往往需要 幾秒鐘甚至10幾秒鐘時間,因此,用戶則能明顯感覺到搜索結(jié)束后進度條產(chǎn)生明顯跳躍現(xiàn) 象,導(dǎo)致影響用戶的視覺體驗。綜上可知,現(xiàn)有技術(shù)中視頻文件的快進快退的處理均存在問題。
發(fā)明內(nèi)容
本發(fā)明的主要目的在于提供一種視頻播放時快進快退處理方法、裝置以及移動終 端,以至少解決上述問題之一。根據(jù)本發(fā)明的一個方面,提供了一種視頻播放時快進快退處理方法,包括預(yù)先獲 取視頻文件中每一個I幀的播放開始時間;在執(zhí)行快進操作時,依次跳到下一個I幀的播放 開始時間;在執(zhí)行快退操作時,依次跳到前一個I幀的播放開始時間。優(yōu)選地,在獲取到所述視頻文件中每一個I幀的播放開始時間之后,將所述每一個I幀的播放開始時間生成I幀索引表,并保存在內(nèi)存緩沖中;在執(zhí)行快進操作時,通過讀 取所述I幀索引表依次跳到下一個I幀的播放開始時間;在執(zhí)行快退操作時,通過讀取所述 I幀索引表依次跳到前一個I幀的播放開始時間。優(yōu)選地,所述I幀索引表中還保存有所述視頻文件中的I幀的總個數(shù)。優(yōu)選地,在所述視頻文件的格式為3gp或MP4時,獲取視頻文件中每一個I幀的播 放開始時間包括讀取所述視頻文件的STSS的內(nèi)容獲取到所述視頻文件中每一個I幀的 幀序號,讀取所述視頻文件的STTS的內(nèi)容獲取到所述視頻文件中每一個I幀的播放開始時 間。優(yōu)選地,在執(zhí)行快進操作時,在跳到的I幀為所述視頻文件中的最后一個I幀時, 如果繼續(xù)執(zhí)行快進操作則播放結(jié)束;在執(zhí)行快退操作時,如果跳到的I站為所述視頻文件 中的第一個I幀,則從頭開始播放。根據(jù)本發(fā)明的另一個方面,還提供了一種視頻播放時快進快退處理裝置,包括視 頻解析模塊,用于獲取視頻文件中每一個I幀的播放開始時間;處理模塊,用于在執(zhí)行快進 操作時,依次跳到下一個I幀的播放開始時間;在執(zhí)行快退操作時,依次跳到前一個I幀的 播放開始時間。優(yōu)選地,所述視頻解析模塊,用于在獲取到所述視頻文件中每一個I幀的播放開 始時間之后,將所述每一個I幀的播放時間生成I幀索引表,并保存在內(nèi)存緩沖中;所述處 理模塊,用于在執(zhí)行快進操作時,通過讀取所述I幀索引表依次跳到下一個I幀的播放開始 時間;在執(zhí)行快退操作時,通過讀取所述I幀索引表依次跳到前一個I幀的播放開始時間。優(yōu)選地,所述I幀索引表中還保存有所述視頻文件中的I幀的總個數(shù)。優(yōu)選地,在所述視頻文件的格式為3gp或MP4時,所述視頻解析模塊用于讀取所述 視頻文件的STSS的內(nèi)容獲取到所述視頻文件中每一個I幀的幀序號,讀取所述視頻文件的 STTS的內(nèi)容獲取到所述視頻文件中每一個I幀的播放開始時間。根據(jù)本發(fā)明的另一個方面,還提供了一種移動終端,包括上述的視頻播放時快進 快退處理裝置。通過本發(fā)明,解決了現(xiàn)有技術(shù)中視頻文件快進快退處理中存在的問題,提高了用 戶體驗。
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構(gòu)成本申請的一部分,本發(fā) 明的示意性實施例及其說明用于解釋本發(fā)明,并不構(gòu)成對本發(fā)明的不當(dāng)限定。在附圖中圖1是根據(jù)本發(fā)明實施例的視頻播放時快進快退處理方法的流程圖;圖2是根據(jù)本發(fā)明實施例的視頻播放時快進快退處理裝置的結(jié)構(gòu)框圖;圖3是根據(jù)本發(fā)明實施例的中所涉及的3gp、MP4文件基本格式的示意圖;圖4是根據(jù)本發(fā)明實施例的手機播放器的結(jié)構(gòu)框圖;圖5是根據(jù)本發(fā)明實施例I幀索引表格式的示意圖;圖6是根據(jù)本發(fā)明實施例生成I幀時間緩沖區(qū)的流程圖;圖7是根據(jù)本發(fā)明實施例進行快進、快退操作的流程圖。
具體實施例方式下文中將參考附圖并結(jié)合實施例來詳細說明本發(fā)明。需要說明的是,在不沖突的 情況下,本申請中的實施例及實施例中的特征可以相互組合。在本實施例中,提供了一種視頻播放時快進快退處理方法,該方法可以應(yīng)用于需 要進行快進快退處理的終端中,例如,移動終端。圖1是根據(jù)本發(fā)明實施例的視頻播放時快 進快退處理方法的流程圖,如圖1所示,該流程包括以下步驟S102,預(yù)先獲取視頻文件中每一個I幀的播放開始時間;S104,在執(zhí)行快進操作時,依次跳到下一個I幀的播放開始時間;在執(zhí)行快退操作 時,依次跳到前一個I幀的播放開始時間。通過上述步驟,可以在進行快進快退處理之前,獲取到每一個I幀的播放開始時 間,從而在快進快退是直接跳到下一個I幀的播放開始時間,與現(xiàn)有的兩種相比,在操作速 度比較快的前提下避免了出現(xiàn)跳躍的問題,從而提高了用戶體驗。優(yōu)選的,在實施時,可以在獲取到視頻文件中每一個I幀的播放開始時間之后,將 每一個I幀的播放開始時間生成I幀索引表,并保存在內(nèi)存緩沖中;在執(zhí)行快進操作時,通 過讀取I幀索引表依次跳到下一個I幀的播放開始時間;在執(zhí)行快退操作時,通過讀取I幀 索引表依次跳到前一個I幀的播放開始時間。通過索引表的方式實現(xiàn)比較容易,當(dāng)然也可 以采用其他的方式來記錄獲取到的每一個I幀的播放開始時間。優(yōu)選的,為了防止在搜索 時訪問內(nèi)存越界,在該I幀索引表中還可以保存視頻文件中的I幀的總個數(shù)。在實施時,可以根據(jù)視頻文件的格式的不同來獲取每一個I幀的播放開始時間, 需要說明的是,無論通過哪種方式獲取每個I幀的播放開始時間均不影響本實施例的實施 例,以下以舉例的方式進行說明。例如,在視頻文件的格式為3gp或MP4時,可以通過讀取視 頻文件的STSS的內(nèi)容獲取到該視頻文件中每一個I幀的幀序號,并讀取該視頻文件的STTS 的內(nèi)容獲取到該視頻文件中每一個I幀的播放開始時間。優(yōu)選的,在實施時,為了進一步提高用戶體驗,還可以增加最后一個I幀和第一個 I幀的判斷。例如,在執(zhí)行快進操作時,當(dāng)跳到的I幀為視頻文件中的最后一個I幀時,如果 用戶繼續(xù)執(zhí)行快進操作則播放結(jié)束;在執(zhí)行快退操作時,如果跳到的I站為視頻文件中的 第一個I幀,則從頭開始播放。在本實施例中,還提供了一種視頻播放時快進快退處理裝置,該裝置可以應(yīng)用于 移動終端中,該裝置用于實現(xiàn)上述實施例及其優(yōu)選實施方式,已經(jīng)進行過說明的不再贅述, 下面僅對該裝置中涉及到的模塊進行說明。圖2是根據(jù)本發(fā)明實施例的視頻播放時快進快 退處理裝置的結(jié)構(gòu)框圖,如圖2所示,該結(jié)構(gòu)包括視頻解析模塊22和處理模塊對,下面對 此進行說明。視頻解析模塊22,用于獲取視頻文件中每一個I幀的播放開始時間;處理模塊M 連接至視頻解析模塊22,該模塊用于在執(zhí)行快進操作時,依次跳到下一個I幀的播放開始 時間;在執(zhí)行快退操作時,依次跳到前一個I幀的播放開始時間。優(yōu)選的,視頻解析模塊22,用于在獲取到視頻文件中每一個I幀的播放開始時間 之后,將每一個I幀的播放時間生成I幀索引表,并保存在內(nèi)存緩沖中;處理模塊M,用于 在執(zhí)行快進操作時,通過讀取I幀索引表依次跳到下一個I幀的播放開始時間;在執(zhí)行快退 操作時,通過讀取上述I幀索引表依次跳到前一個I幀的播放開始時間。
優(yōu)選的,I幀索引表中還保存有視頻文件中的I幀的總個數(shù)。優(yōu)選的,在視頻文件的格式為3gp或MP4時,視頻解析模塊22用于讀取視頻文件 的STSS的內(nèi)容獲取到視頻文件中每一個I幀的幀序號,讀取視頻文件的STTS的內(nèi)容獲取 到視頻文件中每一個I幀的播放開始時間。通過本實施例,在播放視頻前,提前得到I幀的信息,并生成一個I幀索引表,然后 在快進、快退時根據(jù)這個索引表來操作。從而克服了現(xiàn)有技術(shù)中需要逐幀解析導(dǎo)致速度很 慢的問題,以及根本不解析直接快進到指定時間然后在重新查找I幀導(dǎo)致的跳躍的問題, 提升了快進、快退的速度和精確性,提高了用戶的體驗。以下以3gp和MP4格式的視頻文件為例進行說明。為了更好的進行說明,首先對3gp和MP4的這兩種視頻文件格式進行分析,這兩 種視頻文件格式比較近似。圖3是根據(jù)本發(fā)明實施例的中所涉及的3gp、MP4文件基本格 式的示意圖,3gp和MP4格式的視頻文件均包括文件類型、視頻頭信息、視頻數(shù)據(jù)區(qū)三部分。 在3gp和MP4文件中,所有的配置信息和數(shù)據(jù)信息按照原子樹的模式配置。配置根原子是 moov原子,數(shù)據(jù)根原子是mdat原子。moov原子中有很多trak原子,trak原子用來表示不 同的音視頻具體信息。表示音頻存放信息的trak是音頻軌,表示視頻存放信息的是視頻 軌。其中,每個trak中的子原子hdlr原子可以識別這幀是視頻幀還是音頻幀,如果Hdlr 為“vide”代表視頻巾貞,若Hdlr為“soim”則代表音頻幀。每個trak中有兩個子原子STSS和STTS,STSS這個配置塊主要描述了該視頻的所 有I幀的幀序號。下面對此進行說明。STSS原子
00000024長度
73747373STSS標示
00000000版本信息
00000005I幀總個婁
00000001I幀索引
0000001F
0000003D
0000015B
00000279 STTS這個配置塊描述了該視頻所有幀的播放時間,單位是毫秒。下面對此進行說 明。STTS原子
0000E790長度
73747473STTS標示
00000000版本信息
00001C FO總個數(shù)
00000001幀個數(shù),一幀
00000B BB這一幀的幀時間長度
00000002接下來兩幀同一時間長度
00001197 這兩幀的幀時間長度0000000100000B BB000000010000119A在本實施例中,視頻開始播放前根據(jù)讀取STSS的內(nèi)容得到該視頻共有多少個I 幀。然后根據(jù)I幀的數(shù)量分配一個內(nèi)存緩沖。讀取STTS的內(nèi)容,并根據(jù)I幀的序號,計算 出每個I幀的播放時間。在用戶需要快進或者快退時,根據(jù)內(nèi)存緩沖中I幀的位置,每次向 前,或者向后時跳到某個I幀確定時間。這樣每次用戶看到的時間都是一個I幀的時間,解 碼器可以從這個時間開始重新解碼。通過本優(yōu)選實施例,在播放視頻前,提前得到I幀的信息,并生成一個I幀索引表, 然后在快進、快退時根據(jù)這個索引表來操作,這樣可以提升快進、快退的速度和精確性,提 升了用戶體驗,尤其是在低端手機上可以有效的提升用戶體驗。下面以手機上的播放器為例進行說明。圖4是根據(jù)本發(fā)明實施例的手機播放器的結(jié)構(gòu)框圖,如圖4所示,該手機播放器包 括視頻解析模塊10、視頻解碼模塊20、播放器UI模塊30、播放器總控模塊40 (其中,播放 器總控模塊、播放器UI模塊、視頻解碼模塊實現(xiàn)了上述處理模塊的功能),其中播放器總控 模塊40負責(zé)調(diào)用視頻解析模塊10來讀取視頻文件相關(guān)配置信息,完成初始化工作。初始 化完成后,播放器總控模塊,控制視頻解析模塊10來讀取視頻數(shù)據(jù),并調(diào)用視頻解碼模塊 20來播放數(shù)據(jù),同時播放器UI模塊30以固定的周期來讀取視頻播放時間,來刷新播放器界在本實施例中,可以通過軟件方法在播放視頻前,利用視頻解析模塊10提前得到 I幀的信息,并生成一個I幀索引表,圖5是根據(jù)本發(fā)明實施例I幀索引表格式的示意圖,如 圖5所示,該表包括I幀的數(shù)目,以及各個I幀的播放時間,然后當(dāng)用戶對視頻文件進行在 快進、快退時,根據(jù)這個索引表來操作,這樣可以大大提升快進、快退的速度和精確性,提升 用戶體驗。圖6是根據(jù)本發(fā)明實施例生成I幀時間緩沖區(qū)的流程圖(需要說明的是,在圖6 中并沒有涉及到模塊,在以下步驟的描述中結(jié)合了模塊進行說明),該流程包括如下步驟步驟S601,播放器總控模塊40調(diào)用視頻解析模塊10來分析視頻,視頻解析模塊 10解析視頻文件的內(nèi)容,得到視頻trak。步驟S602,視頻解析模塊10解析視頻trak,得到該視頻的STSS和STTS的具體數(shù) 據(jù),并把這些數(shù)據(jù)讀入內(nèi)存。步驟S603,視頻解析模塊10分析STSS的內(nèi)容,得到該視頻共有多少個I幀,然后 根據(jù)I幀的數(shù)量分配一個內(nèi)存緩沖。步驟S604,視頻解析模塊10根據(jù)解析的內(nèi)容讀取STTS的內(nèi)容,得到每個幀的時間長度。步驟S605,視頻解析模塊10根據(jù)I幀的序號,利用STTS的每幀時間長度信息,計 算出每個I幀的播放開始時間。步驟S606,視頻解析模塊10把I幀的總個數(shù)和所有I幀的播放時間保存到內(nèi)存緩沖中。生成I幀索引表,保存總個數(shù)的目的是在搜索時避免訪問內(nèi)存越界。在生成I幀時間緩沖區(qū)后,用戶可以對文件進行快進或快退的操作,圖7是根據(jù)本 發(fā)明實施例進行快進、快退操作的流程圖,該流程包括如下步驟步驟S701,執(zhí)行快進或者快退操作。判斷當(dāng)前I幀是否為用戶操作方向上的最后一個I幀,如果不是則執(zhí)行步驟S702, 如果是的話則執(zhí)行步驟S704。步驟S702,根據(jù)當(dāng)前時間得到用戶操作方向下一個I幀在I幀索引表中的索引, 并獲得下一個I幀的時間,用戶快進時間等于該I幀時間時,則播放器UI模塊30刷新進度條。步驟S703,快進到下一個I幀的時間,并通知播放器UI模塊30繪制進度條。步驟S704,如果是快退操作,并且如果當(dāng)前I幀是第一幀則從頭開始播放,如果是 快進操作,并且如果當(dāng)前I幀是最后一幀則結(jié)束播放。如果不是最后一個I幀,則繼續(xù)處理。經(jīng)過以上的操作,每次用戶看到的時間都是一個I幀的時間,所以也不會產(chǎn)生操 作結(jié)束后時間跳躍現(xiàn)象。這樣就可以較為有效的提升用戶在操作時的視覺體驗。顯然,本領(lǐng)域的技術(shù)人員應(yīng)該明白,上述的本發(fā)明的各模塊或各步驟可以用通用 的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成 的網(wǎng)絡(luò)上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而可以將它們存儲在 存儲裝置中由計算裝置來執(zhí)行,或者將它們分別制作成各個集成電路模塊,或者將它們中 的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬 件和軟件結(jié)合。以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領(lǐng)域的技 術(shù)人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修 改、等同替換、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1.一種視頻播放時快進快退處理方法,其特征在于,包括預(yù)先獲取視頻文件中每一個I幀的播放開始時間;在執(zhí)行快進操作時,依次跳到下一個I幀的播放開始時間;在執(zhí)行快退操作時,依次跳 到前一個I幀的播放開始時間。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,在獲取到所述視頻文件中每一個I幀的播放開始時間之后,將所述每一個I幀的播放 開始時間生成I幀索引表,并保存在內(nèi)存緩沖中;在執(zhí)行快進操作時,通過讀取所述I幀索引表依次跳到下一個I幀的播放開始時間;在執(zhí)行快退操作時,通過讀取所述I幀索引表依次跳到前一個I幀的播放開始時間。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述I幀索引表中還保存有所述視頻文件 中的I幀的總個數(shù)。
4.根據(jù)權(quán)利要求1至3中任一項所述的方法,其特征在于,在所述視頻文件的格式為 3gp或MP4時,獲取視頻文件中每一個I幀的播放開始時間包括讀取所述視頻文件的存儲了每個I幀的序號STSS的內(nèi)容獲取到所述視頻文件中每一 個I幀的幀序號,讀取所述視頻文件的存儲每個幀的時間信息STTS的內(nèi)容獲取到所述視頻 文件中每一個I幀的播放開始時間。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,在執(zhí)行快進操作時,在跳到的I幀為所述視頻文件中的最后一個I幀時,如果繼續(xù)執(zhí) 行快進操作則播放結(jié)束;在執(zhí)行快退操作時,如果跳到的I站為所述視頻文件中的第一個I 幀,則從頭開始播放。
6.一種視頻播放時快進快退處理裝置,其特征在于,包括視頻解析模塊,用于獲取視頻文件中每一個I幀的播放開始時間;處理模塊,用于在執(zhí)行快進操作時,依次跳到下一個I幀的播放開始時間;在執(zhí)行快退 操作時,依次跳到前一個I幀的播放開始時間。
7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述視頻解析模塊,用于在獲取到所述視頻文件中每一個I幀的播放開始時間之后, 將所述每一個I幀的播放時間生成I幀索引表,并保存在內(nèi)存緩沖中;所述處理模塊,用于在執(zhí)行快進操作時,通過讀取所述I幀索引表依次跳到下一個I幀 的播放開始時間;在執(zhí)行快退操作時,通過讀取所述I幀索引表依次跳到前一個I幀的播放 開始時間。
8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述I幀索引表中還保存有所述視頻文件 中的I幀的總個數(shù)。
9.根據(jù)權(quán)利要求6所述的裝置,其特征在于,在所述視頻文件的格式為3gp或MP4時, 所述視頻解析模塊用于讀取所述視頻文件的STSS的內(nèi)容獲取到所述視頻文件中每一個I 幀的幀序號,讀取所述視頻文件的STTS的內(nèi)容獲取到所述視頻文件中每一個I幀的播放開 始時間。
10.一種移動終端,其特征在于,包括權(quán)利要求6至9中任一項所述的視頻播放時快進 快退處理裝置。
全文摘要
本發(fā)明提供了視頻播放時快進快退處理方法、裝置以及移動終端,該方法包括預(yù)先獲取視頻文件中每一個I幀的播放開始時間;在執(zhí)行快進操作時,依次跳到下一個I幀的播放開始時間;在執(zhí)行快退操作時,依次跳到前一個I幀的播放開始時間。通過本發(fā)明提高了用戶體驗。
文檔編號H04N7/26GK102123281SQ201110002610
公開日2011年7月13日 申請日期2011年1月7日 優(yōu)先權(quán)日2011年1月7日
發(fā)明者李鵬 申請人:中興通訊股份有限公司