專利名稱:一種防止關(guān)鍵幀缺失而不能seek的方法及裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及媒體文件處理領(lǐng)域,尤其涉及的是一種防止關(guān)鍵幀缺失而不能seek 的方法及裝置。
背景技術(shù):
目前市面有很多AVI、MKV等媒體文件,在做seek (跳轉(zhuǎn))操作的時候,都是按照關(guān)鍵幀定位,根據(jù)關(guān)鍵幀所附帶的文件位置信息,進(jìn)行seek定位。由于編碼的時候,有的音視頻文件關(guān)鍵幀(關(guān)鍵幀相當(dāng)于二維動畫中的原畫,指角色或者物體運(yùn)動或變化中的關(guān)鍵動作所處的那一幀)比較少,造成在做seek操作的時候,不能夠很好的按照一秒一秒的step (步進(jìn))進(jìn)行seek,而是中間有類似幾秒、甚至幾十秒的浮動,seek的時候不能夠準(zhǔn)確的定位到用戶想確定看的視頻畫面。根據(jù)關(guān)鍵幀定位位置數(shù)據(jù)的原因是在MPEG (Moving Pictures Experts Group/ Motin Pictures Experts Group,動態(tài)圖像專家組)編碼的過程中,部分視頻幀序列壓縮成為I幀;部分壓縮成P幀;還有部分壓縮成B幀。其中,I幀是靠盡可能去除圖像空間冗余信息來壓縮傳輸數(shù)據(jù)量的幀內(nèi)編碼圖像,做為隨機(jī)訪問的參考點(diǎn),即為關(guān)鍵幀;P幀是通過充分降低圖像序列中前面已編碼幀的時間冗余信息來壓縮傳輸數(shù)據(jù)量的編碼圖像,由在它前面的P幀或者I幀預(yù)測而來,也叫預(yù)測幀;B幀是既考慮與源圖像序列前面已編碼幀、也顧及源圖像序列后面已編碼幀之間的時間冗余信息來壓縮傳輸數(shù)據(jù)量的編碼圖像,也叫雙向預(yù)測幀。解碼器解碼數(shù)據(jù)的時候必須要有關(guān)鍵幀,如果沒有關(guān)鍵幀,只有P、B幀,解碼器是不能解碼出數(shù)據(jù)的。因此,現(xiàn)有技術(shù)還有待于改進(jìn)和發(fā)展。
發(fā)明內(nèi)容
本發(fā)明要解決的技術(shù)問題在于,針對現(xiàn)有技術(shù)的上述缺陷,提供一種防止關(guān)鍵幀缺失而不能seek的方法及裝置,其解決某些音視頻文件播放時,不能準(zhǔn)確seek定位到某一時間點(diǎn)的問題。本發(fā)明解決技術(shù)問題所采用的技術(shù)方案如下 一種防止關(guān)鍵幀缺失而不能seek的方法,其中,包括
A、對媒體音視頻文件的幀數(shù)據(jù)進(jìn)行seek操作時,根據(jù)seek到的時間點(diǎn)獲取該seek時間點(diǎn)的前關(guān)鍵幀;
B、從該前關(guān)鍵幀的位置開始讀取文件流,并將該讀取的文件流傳送給解碼器解碼;
C、判斷解碼后的幀數(shù)據(jù)的時間點(diǎn)是否到達(dá)seek的時間點(diǎn),當(dāng)判斷出解碼后的幀數(shù)據(jù)的時間點(diǎn)在seek的時間點(diǎn)前,則將該幀數(shù)據(jù)丟棄;
D、當(dāng)判斷出解碼后的幀數(shù)據(jù)的時間點(diǎn)到達(dá)seek的時間點(diǎn),則將解碼后的數(shù)據(jù)進(jìn)行播放顯示。
所述防止關(guān)鍵幀缺失而不能seek的方法,其中,所述步驟B具體包括 Bi、根據(jù)獲取到的前關(guān)鍵幀,得到該前關(guān)鍵幀的位置信息;
B2、根據(jù)該前關(guān)鍵幀的位置信息,讀取從此位置開始的文件流,并將該讀取的文件流傳送給解碼器解碼。所述防止關(guān)鍵幀缺失而不能seek的方法,所述步驟C還包括通過同步線程進(jìn)行數(shù)據(jù)同步,當(dāng)判斷出解碼后的幀數(shù)據(jù)的時間點(diǎn)在seek的時間點(diǎn)前,則通過同步線程將該幀數(shù)據(jù)丟棄。所述防止關(guān)鍵幀缺失而不能seek的方法,所述關(guān)鍵幀為影響畫面圖象參數(shù)的幀數(shù)據(jù),所述前關(guān)鍵幀為在時間軸上的位置位于seek時間點(diǎn)前并且最接近seek時間點(diǎn)的關(guān)鍵幀。所述防止關(guān)鍵幀缺失而不能seek的方法,其特征在于,所述音視頻文件為AVI文件或MKV文件。所述防止關(guān)鍵幀缺失而不能seek的方法,其中,所述步驟C還包括通過同步線程進(jìn)行數(shù)據(jù)同步,當(dāng)判斷出解碼后的幀數(shù)據(jù)的時間點(diǎn)在seek的時間點(diǎn)前,則通過同步線程將該幀數(shù)據(jù)丟棄。所述防止關(guān)鍵幀缺失而不能seek的方法,其中,所述關(guān)鍵幀為影響畫面圖象參數(shù)的幀數(shù)據(jù);所述前關(guān)鍵幀為在時間軸上的位置位于seek時間點(diǎn)前并且最接近seek時間點(diǎn)的關(guān)鍵幀。一種防止關(guān)鍵幀缺失而不能seek的裝置,其中,包括
前關(guān)鍵幀獲取模塊,用于對媒體音視頻文件的幀數(shù)據(jù)進(jìn)行seek操作時,根據(jù)seek到的時間點(diǎn)獲取該seek時間點(diǎn)的前關(guān)鍵幀;
讀取與傳送模塊,用于從該前關(guān)鍵幀的位置開始讀取文件流,并將該讀取的文件流傳送給解碼器解碼;
判斷模塊,用于判斷解碼后的幀數(shù)據(jù)的時間點(diǎn)是否到達(dá)seek的時間點(diǎn),當(dāng)判斷出解碼后的幀數(shù)據(jù)的時間點(diǎn)在seek的時間點(diǎn)前,則將該幀數(shù)據(jù)丟棄;
播放模塊,用于當(dāng)判斷出解碼后的幀數(shù)據(jù)的時間點(diǎn)到達(dá)seek的時間點(diǎn),則將解碼后的數(shù)據(jù)進(jìn)行播放顯示。所述防止關(guān)鍵幀缺失而不能seek的裝置,其中,所述讀取與傳送模塊包括 位置信息提取單元,用于根據(jù)獲取到的前關(guān)鍵幀,得到該前關(guān)鍵幀的位置信息; 讀取單元,用于根據(jù)該前關(guān)鍵幀的位置信息,讀取從此位置開始的文件流; 傳送單元,用于將該讀取的文件流傳送給解碼器解碼。所述防止關(guān)鍵幀缺失而不能seek的裝置,所述判斷模塊包括
同步單元,用于通過同步線程進(jìn)行數(shù)據(jù)同步,當(dāng)判斷出解碼后的幀數(shù)據(jù)的時間點(diǎn)在 seek的時間點(diǎn)前,則通過同步線程將該幀數(shù)據(jù)丟棄。所述防止關(guān)鍵幀缺失而不能seek的裝置,所述關(guān)鍵幀為影響畫面圖象參數(shù)的幀數(shù)據(jù);前關(guān)鍵幀為在時間軸上的位置位于seek時間點(diǎn)前并且最接近seek時間點(diǎn)的關(guān)鍵幀。所述防止關(guān)鍵幀缺失而不能seek的裝置,所述音視頻文件為AVI文件或MKV文件。本發(fā)明所提供的防止關(guān)鍵幀缺失而不能seek的方法及裝置,由于采用了按照關(guān)鍵幀定位seek位置的文件,首先根據(jù)要seek到的時間點(diǎn),定位到最接近這個時間點(diǎn)的前關(guān)鍵幀,獲取這個關(guān)鍵幀所在的文件位置,根據(jù)這個位置信息進(jìn)行播放。由于此時的位置信息并不是實際要播放的那個時間點(diǎn)的位置信息,所以在將此位置信息的開始的數(shù)據(jù)傳送給解碼器解碼后,并不馬上將解碼后的數(shù)據(jù)顯示出來,而是通過同步線程進(jìn)行數(shù)據(jù)同步,按照要 seek的時間點(diǎn)進(jìn)行同步,如果該幀數(shù)據(jù)在要seek的時間點(diǎn)前,直接將解碼后的數(shù)據(jù)丟棄, 直到該幀數(shù)據(jù)是要seek定位的時間點(diǎn),此時將解碼后的數(shù)據(jù)顯示,能夠在準(zhǔn)確的seek定位到要播放的音視頻時間點(diǎn);其在seek操作的時候能夠準(zhǔn)確的定位到用戶跳轉(zhuǎn)的視頻畫面。
圖1是本發(fā)明防止關(guān)鍵幀缺失而不能seek的方法一種實施例的流程圖。圖2是本發(fā)明防止關(guān)鍵幀缺失而不能seek的裝置一種實施例的原理框圖。圖3是本發(fā)明防止關(guān)鍵幀缺失而不能seek的裝置中的讀取與傳送模塊內(nèi)部原理框圖。
具體實施例方式本發(fā)明所提供的一種防止關(guān)鍵幀缺失而不能seek的方法及裝置,為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚、明確,以下參照附圖并舉實施例對本發(fā)明進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。本發(fā)明實施例提供的一種防止關(guān)鍵幀缺失而不能seek的方法,如圖1所示,主要包括以下步驟
步驟S110、對媒體音視頻文件的幀數(shù)據(jù)進(jìn)行seek操作時,根據(jù)seek到的時間點(diǎn)獲取該seek時間點(diǎn)的前關(guān)鍵幀。本步驟具體為在對媒體音視頻文件的幀數(shù)據(jù)進(jìn)行seek操作時,首先獲取seek時間點(diǎn),再根據(jù)seek時間點(diǎn)獲取位于seek時間點(diǎn)前并且最接近seek時間點(diǎn)的關(guān)鍵幀。播放音視頻文件時,用戶可通過seek操作(跳轉(zhuǎn)操作)將播放點(diǎn)跳轉(zhuǎn)到用戶喜歡的任意位置。其中,關(guān)鍵幀為影響畫面圖象參數(shù)的幀數(shù)據(jù),前關(guān)鍵幀為在時間軸上的位置位于seek時間點(diǎn)前并且最接近seek時間點(diǎn)的關(guān)鍵幀。音視頻文件如AVKAudio Video Interleaved,音頻視頻交錯格式)文件或MKV文件,MKV不是一種壓縮格式,而是Matroska 的一種媒體文件,Matroska是一種新的多媒體封裝格式,也稱多媒體容器(Multimedia Container)。步驟S120、從該前關(guān)鍵幀的位置開始讀取文件流,并將該讀取的文件流傳送給解碼器解碼。本步驟具體為根據(jù)獲取到的前關(guān)鍵幀,獲取該前關(guān)鍵幀的位置信息;根據(jù)該前關(guān)鍵幀的位置信息,讀取從此位置開始的文件流,并將該讀取的文件流傳送給解碼器,解碼器對讀取的文件流進(jìn)行連續(xù)解碼。然后進(jìn)入步驟S130。步驟S130、判斷解碼后的幀數(shù)據(jù)的時間點(diǎn)是否到達(dá)seek的時間點(diǎn),當(dāng)判斷出解碼后的幀數(shù)據(jù)的時間點(diǎn)在seek的時間點(diǎn)前,則將該幀數(shù)據(jù)丟棄;
例如,通過同步線程進(jìn)行數(shù)據(jù)同步,當(dāng)判斷出解碼后的幀數(shù)據(jù)的時間點(diǎn)在seek的時間點(diǎn)前,則通過同步線程將該幀數(shù)據(jù)丟棄。本實施例中通過獲取seek時間點(diǎn)的前關(guān)鍵幀所在的文件位置,由于前關(guān)鍵幀的位置信息并不是實際需要播放的seek時間點(diǎn)的位置信息,所以將從前關(guān)鍵幀位置信息開始的文件流傳送給解碼器進(jìn)行解碼后,并不馬上將解碼后的數(shù)據(jù)顯示出來,而是通過同步線程進(jìn)行數(shù)據(jù)同步,按照要seek的時間點(diǎn)進(jìn)行同步,如果該幀數(shù)據(jù)在seek時間點(diǎn)前,直接將解碼后的數(shù)據(jù)丟棄。然后持續(xù)進(jìn)行解碼,直到解碼的幀數(shù)據(jù)的時間點(diǎn)到達(dá)seek時間點(diǎn)進(jìn)入步驟S140。步驟S140、當(dāng)判斷出解碼后的幀數(shù)據(jù)的時間點(diǎn)到達(dá)seek的時間點(diǎn),則將解碼后的數(shù)據(jù)進(jìn)行播放顯示。即直到解碼后的幀數(shù)據(jù)是要seek定位的時間點(diǎn),此時將解碼后的數(shù)據(jù)進(jìn)行正常的播放顯示。由上可見,本發(fā)明實施例的一種防止關(guān)鍵幀缺失而不能seek的方法,其能準(zhǔn)確的 seek定位到要播放的音視頻時間點(diǎn)?;谏鲜鰧嵤├?,本發(fā)明實施例還提供了一種防止關(guān)鍵幀缺失而不能seek的裝置,如圖2所示,主要包括
前關(guān)鍵幀獲取模塊210,用于對媒體音視頻文件的幀數(shù)據(jù)進(jìn)行seek操作時,根據(jù)seek 到的時間點(diǎn)獲取該seek時間點(diǎn)的前關(guān)鍵幀;具體如上述步驟SllO所述。其中,所述seek 操作為跳轉(zhuǎn)操作。讀取與傳送模塊220,用于從該前關(guān)鍵幀的位置開始讀取文件流,并將該讀取的文件流傳送給解碼器250解碼;具體如上述步驟S120所述。判斷模塊230,用于判斷解碼后的幀數(shù)據(jù)的時間點(diǎn)是否到達(dá)seek的時間點(diǎn),當(dāng)判斷出解碼后的幀數(shù)據(jù)的時間點(diǎn)在seek的時間點(diǎn)前,則將該幀數(shù)據(jù)丟棄;具體如上述步驟 S130所述。播放模塊MO,用于當(dāng)判斷出解碼后的幀數(shù)據(jù)的時間點(diǎn)到達(dá)seek的時間點(diǎn),則將解碼后的數(shù)據(jù)進(jìn)行播放顯示,具體如上述步驟S140所述。解碼器250,用于對所讀取的文件流進(jìn)行連續(xù)解碼。其中,如圖3所示,讀取與傳送模塊220包括
位置信息提取單元221,用于根據(jù)獲取到的前關(guān)鍵幀,得到該前關(guān)鍵幀的位置信息; 讀取單元222,用于根據(jù)該前關(guān)鍵幀的位置信息,讀取從此位置開始的文件流; 傳送單元223,用于將該讀取的文件流傳送給解碼器250解碼。其中,所述判斷模塊230包括同步單元,用于通過同步線程進(jìn)行數(shù)據(jù)同步,當(dāng)判斷出解碼后的幀數(shù)據(jù)的時間點(diǎn)在seek的時間點(diǎn)前,則通過同步線程將該幀數(shù)據(jù)丟棄。綜上所述,本發(fā)明所提供的防止關(guān)鍵幀缺失而不能seek的方法及裝置,由于采用了按照關(guān)鍵幀定位seek位置的文件,首先根據(jù)要seek到的時間點(diǎn),定位到最接近這個時間點(diǎn)的前關(guān)鍵幀,獲取這個關(guān)鍵幀所在的文件位置,根據(jù)這個位置信息進(jìn)行播放。由于此時的位置信息并不是實際要播放的那個時間點(diǎn)的位置信息,所以在將此位置信息的開始的數(shù)據(jù)傳送給解碼器解碼后,并不馬上將解碼后的數(shù)據(jù)顯示出來,而是通過同步線程進(jìn)行數(shù)據(jù)同步,按照要seek的時間點(diǎn)進(jìn)行同步,如果該幀數(shù)據(jù)在要seek的時間點(diǎn)前,直接將解碼后的數(shù)據(jù)丟棄,直到該幀數(shù)據(jù)是要seek定位的時間點(diǎn),此時將解碼后的數(shù)據(jù)顯示,能夠在準(zhǔn)確的seek定位到要播放的音視頻時間點(diǎn)。應(yīng)當(dāng)理解的是,本發(fā)明的應(yīng)用不限于上述的舉例,對本領(lǐng)域普通技術(shù)人員來說,可以根據(jù)上述說明加以改進(jìn)或變換,所有這些改進(jìn)和變換都應(yīng)屬于本發(fā)明所附權(quán)利要求的保護(hù)范圍。
權(quán)利要求
1.一種防止關(guān)鍵幀缺失而不能seek的方法,其特征在于,包括A、對媒體音視頻文件的幀數(shù)據(jù)進(jìn)行seek操作時,根據(jù)seek到的時間點(diǎn)獲取該seek時間點(diǎn)的前關(guān)鍵幀;B、從該前關(guān)鍵幀的位置開始讀取文件流,并將該讀取的文件流傳送給解碼器解碼;C、判斷解碼后的幀數(shù)據(jù)的時間點(diǎn)是否到達(dá)seek的時間點(diǎn),當(dāng)判斷出解碼后的幀數(shù)據(jù)的時間點(diǎn)在seek的時間點(diǎn)前,則將該幀數(shù)據(jù)丟棄;D、當(dāng)判斷出解碼后的幀數(shù)據(jù)的時間點(diǎn)到達(dá)seek的時間點(diǎn),則將解碼后的數(shù)據(jù)進(jìn)行播放顯示。
2.根據(jù)權(quán)利要求1所述防止關(guān)鍵幀缺失而不能seek的方法,其特征在于,所述步驟B 具體包括Bi、根據(jù)獲取到的前關(guān)鍵幀,得到該前關(guān)鍵幀的位置信息;B2、根據(jù)該前關(guān)鍵幀的位置信息,讀取從此位置開始的文件流,并將該讀取的文件流傳送給解碼器解碼。
3.根據(jù)權(quán)利要求1所述防止關(guān)鍵幀缺失而不能seek的方法,其特征在于,所述步驟C 還包括通過同步線程進(jìn)行數(shù)據(jù)同步,當(dāng)判斷出解碼后的幀數(shù)據(jù)的時間點(diǎn)在seek的時間點(diǎn)前,則通過同步線程將該幀數(shù)據(jù)丟棄。
4.根據(jù)權(quán)利要求1所述防止關(guān)鍵幀缺失而不能seek的方法,其特征在于,所述關(guān)鍵幀為影響畫面圖象參數(shù)的幀數(shù)據(jù),所述前關(guān)鍵幀為在時間軸上的位置位于seek時間點(diǎn)前并且最接近seek時間點(diǎn)的關(guān)鍵幀。
5.根據(jù)權(quán)利要求1所述防止關(guān)鍵幀缺失而不能seek的方法,其特征在于,所述音視頻文件為AVI文件或MKV文件。
6.一種防止關(guān)鍵幀缺失而不能seek的裝置,其特征在于,包括前關(guān)鍵幀獲取模塊,用于對媒體音視頻文件的幀數(shù)據(jù)進(jìn)行seek操作時,根據(jù)seek到的時間點(diǎn)獲取該seek時間點(diǎn)的前關(guān)鍵幀;讀取與傳送模塊,用于從該前關(guān)鍵幀的位置開始讀取文件流,并將該讀取的文件流傳送給解碼器解碼;判斷模塊,用于判斷解碼后的幀數(shù)據(jù)的時間點(diǎn)是否到達(dá)seek的時間點(diǎn),當(dāng)判斷出解碼后的幀數(shù)據(jù)的時間點(diǎn)在seek的時間點(diǎn)前,則將該幀數(shù)據(jù)丟棄;播放模塊,用于當(dāng)判斷出解碼后的幀數(shù)據(jù)的時間點(diǎn)到達(dá)seek的時間點(diǎn),則將解碼后的數(shù)據(jù)進(jìn)行播放顯示。
7.根據(jù)權(quán)利要求6所述防止關(guān)鍵幀缺失而不能seek的裝置,其特征在于,所述讀取與傳送模塊包括位置信息提取單元,用于根據(jù)獲取到的前關(guān)鍵幀,得到該前關(guān)鍵幀的位置信息;讀取單元,用于根據(jù)該前關(guān)鍵幀的位置信息,讀取從此位置開始的文件流;傳送單元,用于將該讀取的文件流傳送給解碼器解碼。
8.根據(jù)權(quán)利要求6所述防止關(guān)鍵幀缺失而不能seek的裝置,其特征在于,所述判斷模塊包括同步單元,用于通過同步線程進(jìn)行數(shù)據(jù)同步,當(dāng)判斷出解碼后的幀數(shù)據(jù)的時間點(diǎn)在 seek的時間點(diǎn)前,則通過同步線程將該幀數(shù)據(jù)丟棄。
9.根據(jù)權(quán)利要求6所述防止關(guān)鍵幀缺失而不能seek的裝置,其特征在于,所述關(guān)鍵幀為影響畫面圖象參數(shù)的幀數(shù)據(jù);所述前關(guān)鍵幀為在時間軸上的位置位于seek時間點(diǎn)前并且最接近seek時間點(diǎn)的關(guān)鍵幀。
10.根據(jù)權(quán)利要求6所述防止關(guān)鍵幀缺失而不能seek的方法,其特征在于,所述音視頻文件為AVI文件或MKV文件。
全文摘要
本發(fā)明公開了一種防止關(guān)鍵幀缺失而不能seek的方法及裝置,所述方法包括對媒體音視頻文件的幀數(shù)據(jù)進(jìn)行seek操作時,根據(jù)seek到的時間點(diǎn)獲取該seek時間點(diǎn)的前關(guān)鍵幀;從該前關(guān)鍵幀的位置開始讀取文件流,并將該讀取的文件流傳送給解碼器解碼;判斷解碼后的幀數(shù)據(jù)的時間點(diǎn)是否到達(dá)seek的時間點(diǎn),當(dāng)判斷出解碼后的幀數(shù)據(jù)的時間點(diǎn)在seek的時間點(diǎn)前,則將該幀數(shù)據(jù)丟棄;當(dāng)判斷出解碼后的幀數(shù)據(jù)的時間點(diǎn)到達(dá)seek的時間點(diǎn),則將解碼后的數(shù)據(jù)進(jìn)行播放顯示。借此,本發(fā)明能解決某些音視頻文件播放時,不能準(zhǔn)確seek定位到某一時間點(diǎn)的問題。
文檔編號H04N21/647GK102264004SQ201110223980
公開日2011年11月30日 申請日期2011年8月5日 優(yōu)先權(quán)日2011年8月5日
發(fā)明者孫茂杰 申請人:Tcl集團(tuán)股份有限公司