時間戳容錯控制方法及裝置的制造方法
【專利摘要】本發(fā)明公開了一種時間戳容錯控制方法及裝置,包括:在音視頻解碼過程中,依次獲取視頻幀的時間戳;計算當(dāng)前視頻幀與前一幀視頻幀之間的第一時間戳差值;判斷所述第一時間戳差值是否大于預(yù)設(shè)偏移量閾值;若所述第一時間戳差值大于預(yù)設(shè)偏移量閾值,根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第二時間戳差值,計算得到時間戳偏移量;將當(dāng)前視頻幀的時間戳替換為所述前一幀視頻幀的時間戳加上所述時間戳偏移量。本發(fā)明提出的時間戳容錯控制方法及裝置,能夠糾正轉(zhuǎn)碼過程中的錯誤時間戳,以保證最后的輸出音視頻同步。
【專利說明】
時間戳容錯控制方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,特別是指一種時間戳容錯控制方法及裝置。
【背景技術(shù)】
[0002]現(xiàn)有的音視頻解碼技術(shù)中,使用顯示時間戳PTS(presentat1n time stamp)表示音視頻幀在輸出時間軸上的位置。在時間軸上按照順序依次判斷是否有對應(yīng)PTS的音頻幀或視頻幀,如果有則播放該視頻幀或音頻幀。
[0003]實時轉(zhuǎn)碼系統(tǒng),是一種即時對音視頻文件進(jìn)行轉(zhuǎn)碼的系統(tǒng),其可分為三個部分:I)根據(jù)當(dāng)前數(shù)據(jù)包中的PTS決定是否處理該數(shù)據(jù);2)根據(jù)輸入數(shù)據(jù)進(jìn)行解碼,并將輸入PTS傳給編碼模塊以用于音視頻同步;3)編碼模塊根據(jù)解碼數(shù)據(jù)和PTS進(jìn)行編碼并封裝,輸出數(shù)據(jù)包。
[0004]現(xiàn)有技術(shù)中的解碼方式舉例如下:
[0005]假設(shè),獲取到的一串視頻幀的PTS為:O,I,2,4;而獲取到的一串音頻幀的PTS為:I,2,3,4;
[0006]則位于時間軸O的位置,無相應(yīng)音頻幀,則只播放PTS為O的視頻幀;之后每個PTS均有對應(yīng)的視頻幀和音頻幀,依次對應(yīng)播放。
[0007]當(dāng)視頻幀解碼PTS為2的視頻幀后,由于找不到PTS為3的視頻幀,因此繼續(xù)將PTS為2的視頻幀解碼輸出,在解碼PTS為4的視頻幀時恢復(fù)正常。這一方式避免了因數(shù)據(jù)缺失等問題導(dǎo)致音視頻錯位的問題。
[0008]但是,上述解碼方式無法有效處理以下場景:
[0009]第一種場景:假設(shè),獲取到的一串視頻幀的PTS為:O,I,1000,1001,4;而獲取到的一串音頻幀的PTS為:O,I,2,3,4;此處判定PTS為I的視頻幀的下一視頻幀的PTS為1000,則依照現(xiàn)有技術(shù),會重復(fù)輸出PTS為I的視頻幀,直到視頻幀的PTS增加至1000,繼續(xù)播放上面PTS為1000的視頻幀。這樣,在用戶處的顯示效果則為視頻停止而音頻繼續(xù)播放,無法正常觀看。
[0010]第二種場景:假設(shè),獲取到的一串視頻幀的PTS為:1022,1023,30,31,32;此處由于PTS為1023的視頻幀找不到下一幀PTS為1024的視頻幀,所以視頻卡頓無法繼續(xù)播放。
【發(fā)明內(nèi)容】
[0011]有鑒于此,本發(fā)明的目的在于提出一種時間戳容錯控制方法及裝置,能夠糾正轉(zhuǎn)碼過程中的錯誤時間戳,以保證最后的輸出音視頻同步。
[0012]基于上述目的本發(fā)明提供的時間戳容錯控制方法,包括:
[0013]在音視頻解碼過程中,依次獲取視頻幀的時間戳;
[0014]計算當(dāng)前視頻幀與前一幀視頻幀之間的第一時間戳差值;
[0015]判斷所述第一時間戳差值是否大于預(yù)設(shè)偏移量閾值;
[0016]若所述第一時間戳差值大于預(yù)設(shè)偏移量閾值,根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第二時間戳差值,計算得到時間戳偏移量;
[0017]將當(dāng)前視頻幀的時間戳替換為所述前一幀視頻幀的時間戳加上所述時間戳偏移量。
[0018]在一些實施方式中,所述根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第二時間戳差值,計算得到時間戳偏移量的步驟包括:
[0019]選擇當(dāng)前視頻幀之前的兩幀視頻幀;
[0020]計算所述兩幀視頻幀之間的第二時間戳差值;
[0021 ]將所述第二時間戳差值作為所述時間戳偏移量。
[0022]在一些實施方式中,所述計算所述兩幀視頻幀之間的第二時間戳差值的步驟之后還包括:
[0023]判斷所述第二時間戳差值加上所述前一幀視頻幀的時間戳的結(jié)果是否大于或等于下一視頻幀的時間戳;
[0024]若所述第二時間戳差值加上所述前一幀視頻幀的時間戳的結(jié)果大于或等于下一視頻幀的時間戳,則選取所述兩幀視頻幀之前的至少一幀;
[0025]將所述兩幀視頻幀之前的至少一幀與所述兩幀視頻幀一起,計算相鄰視頻幀兩兩之間的時間戳差值,得到多個第二時間戳差值;
[0026]計算得到所述多個第二時間戳差值的平均值;
[0027]將所述平均值作為所述時間戳偏移量。
[0028]在一些實施方式中,所述計算得到所述多個第二時間戳差值的平均值的步驟之后還包括:
[0029]判斷所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果是否大于或等于下一視頻幀的時間戳;
[0030]若所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果小于下一視頻幀的時間戳,將所述平均值作為所述時間戳偏移量;
[0031]若所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果大于或等于下一視頻幀的時間戳,則繼續(xù)選取在所述兩幀視頻幀之前的至少一幀之前的至少一幀;
[0032]重復(fù)上述步驟,并重新計算得到平均值,直至所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果小于下一視頻幀的時間戳。
[0033]在一些實施方式中,所述根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第二時間戳差值,計算得到時間戳偏移量的步驟包括:
[0034]選擇當(dāng)前視頻幀之前的多幀視頻幀;
[0035]計算所述多幀視頻幀中相鄰視頻幀兩兩之間的時間戳差值,得到多個第二時間戳差值;
[0036]計算所述多個第二時間戳差值的平均值;
[0037]將所述平均值作為所述時間戳偏移量。
[0038]本發(fā)明的另一方面還提供了一種時間戳容錯控制裝置,包括:
[0039]時間戳獲取模塊,用于在音視頻解碼過程中,依次獲取視頻幀的時間戳;
[0040]差值計算模塊,用于計算當(dāng)前視頻幀與前一幀視頻幀之間的第一時間戳差值;
[0041]差值判斷模塊,用于判斷所述第一時間戳差值是否大于預(yù)設(shè)偏移量閾值;
[0042]偏移量計算模塊,若所述第一時間戳差值大于預(yù)設(shè)偏移量閾值,用于根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第二時間戳差值,計算得到時間戳偏移量;
[0043]時間戳替換模塊,用于將當(dāng)前視頻幀的時間戳替換為所述前一幀視頻幀的時間戳加上所述時間戳偏移量。
[0044]在一些實施方式中,所述偏移量計算模塊,具體用于:
[0045]選擇當(dāng)前視頻幀之前的兩幀視頻幀;
[0046]計算所述兩幀視頻幀之間的第二時間戳差值;
[0047]將所述第二時間戳差值作為所述時間戳偏移量。
[0048]在一些實施方式中,所述偏移量計算模塊,還具體用于:
[0049]判斷所述第二時間戳差值加上所述前一幀視頻幀的時間戳的結(jié)果是否大于或等于下一視頻幀的時間戳;
[0050]若所述第二時間戳差值加上所述前一幀視頻幀的時間戳的結(jié)果大于或等于下一視頻幀的時間戳,則選取所述兩幀視頻幀之前的至少一幀;
[0051]將所述兩幀視頻幀之前的至少一幀與所述兩幀視頻幀一起,計算相鄰視頻幀兩兩之間的時間戳差值,得到多個第二時間戳差值;
[0052]計算得到所述多個第二時間戳差值的平均值;
[0053]將所述平均值作為所述時間戳偏移量。
[0054]在一些實施方式中,所述偏移量計算模塊,還具體用于:
[0055]判斷所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果是否大于或等于下一視頻幀的時間戳;
[0056]若所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果小于下一視頻幀的時間戳,將所述平均值作為所述時間戳偏移量;
[0057]若所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果大于或等于下一視頻幀的時間戳,則繼續(xù)選取在所述兩幀視頻幀之前的至少一幀之前的至少一幀;
[0058]重復(fù)上述步驟,并重新計算得到平均值,直至所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果小于下一視頻幀的時間戳。
[0059]在一些實施方式中,所述偏移量計算模塊,具體用于:
[0060]選擇當(dāng)前視頻幀之前的多幀視頻幀;
[0061]計算所述多幀視頻幀中相鄰視頻幀兩兩之間的時間戳差值,得到多個第二時間戳差值;
[0062]計算所述多個第二時間戳差值的平均值;
[0063]將所述平均值作為所述時間戳偏移量。
[0064]從上面所述可以看出,本發(fā)明提供的時間戳容錯控制方法及裝置,在依照時間戳進(jìn)行音視頻解碼時,通過判斷當(dāng)前視頻幀與其前一幀視頻幀的第一時間戳差值是否超出了預(yù)設(shè)偏移量閾值,在超出預(yù)設(shè)偏移量閾值時,根據(jù)當(dāng)前視頻幀的時間戳并根據(jù)之前至少兩幀視頻幀之間的第二時間戳差值得到時間戳偏移量,將當(dāng)前視頻幀的時間戳加上時間戳偏移量的值替換異常的視頻幀的時間戳,以保證音視頻文件可以順利播放,使得在視覺效果上不會產(chǎn)生明顯的視頻卡死情況,從而提升了用戶體驗。
【附圖說明】
[0065]圖1為本發(fā)明提供的時間戳容錯控制方法的一個實施例的流程示意圖;
[0066]圖2為本發(fā)明提供的時間戳容錯控制方法的另一個實施例的流程示意圖;
[0067]圖3為本發(fā)明提供的時間戳容錯控制裝置實施例的模塊結(jié)構(gòu)示意圖。
【具體實施方式】
[0068]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合具體實施例,并參照附圖,對本發(fā)明進(jìn)一步詳細(xì)說明。
[0069]需要說明的是,本發(fā)明實施例中所有使用“第一”和“第二”的表述均是為了區(qū)分兩個相同名稱非相同的實體或者非相同的參量,可見“第一” “第二”僅為了表述的方便,不應(yīng)理解為對本發(fā)明實施例的限定,后續(xù)實施例對此不再一一說明。
[0070]本發(fā)明的第一個方面,提出了一種時間戳容錯控制方法,能夠糾正轉(zhuǎn)碼過程中的錯誤時間戳,以保證最后的輸出音視頻同步。如圖1所示,為本發(fā)明提供的時間戳容錯控制方法的一個實施例的流程示意圖。
[0071]所述時間戳容錯控制方法,包括以下步驟:
[0072]步驟101:在音視頻解碼過程中,依次獲取視頻幀的時間戳(PTS);
[0073]步驟102:計算當(dāng)前視頻幀與前一幀視頻幀之間的第一時間戳差值;所述第一時間戳差值,是通過將當(dāng)前視頻幀的時間戳減去前一幀視頻幀的時間戳所得的差值;
[0074]步驟103:判斷所述第一時間戳差值是否大于預(yù)設(shè)偏移量閾值;所述預(yù)設(shè)偏移量閾值可以是默認(rèn)設(shè)置的值,也可以是用戶自定義設(shè)置的值;所述預(yù)設(shè)偏移量閾值的設(shè)置所考慮的因素主要可以是,當(dāng)所述第一時間戳差值大于預(yù)設(shè)偏移量閾值時,在轉(zhuǎn)碼完成的音視頻中,會出現(xiàn)容易被觀察到的較長時間的視頻卡死狀況,因此,所述預(yù)設(shè)偏移量閾值可參考正常情況下連續(xù)的時間戳之間的正常的時間間隔來進(jìn)行設(shè)定;
[0075]步驟104:若所述第一時間戳差值大于預(yù)設(shè)偏移量閾值,根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第二時間戳差值,計算得到時間戳偏移量;所述第二時間戳差值可以是通過將當(dāng)前視頻幀之前的兩幀視頻幀的時間戳相減而得到,也可以是根據(jù)當(dāng)前視頻幀之前的多幀視頻幀的時間戳兩兩相減而得到的多個值,所述時間戳偏移量可以是等于所述第二時間戳差值,也可以是基于多個所述第二時間戳差值而得到的平均值,或者是基于所述第二時間戳差值而得到的與所述第二時間戳差值相近的值;
[0076]步驟105:將當(dāng)前視頻幀的時間戳替換為所述前一幀視頻幀的時間戳加上所述時間戳偏移量,從而將具有錯誤時間戳的視頻幀的時間戳修改為與前一幀視頻幀的時間戳接近的時間戳。
[0077]從上述實施例可以看出,本發(fā)明提供的時間戳容錯控制方法,在依照時間戳進(jìn)行音視頻解碼時,通過判斷當(dāng)前視頻幀與其前一幀視頻幀的第一時間戳差值是否超出了預(yù)設(shè)偏移量閾值,在超出預(yù)設(shè)偏移量閾值時,根據(jù)當(dāng)前視頻幀的時間戳并根據(jù)之前至少兩幀視頻幀之間的第二時間戳差值得到時間戳偏移量,將當(dāng)前視頻幀的時間戳加上時間戳偏移量的值替換異常的視頻幀的時間戳,以保證音視頻文件可以順利播放,使得在視覺效果上不會產(chǎn)生明顯的視頻卡死情況,從而提升了用戶體驗。
[0078]較佳的,在一些實施方式中,所述根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第二時間戳差值,計算得到時間戳偏移量的步驟104還可具體包括以下步驟:
[0079]選擇當(dāng)前視頻幀之前的兩幀視頻幀;例如,所述兩幀視頻幀的時間戳可以是0,I,而當(dāng)前視頻幀的時間戳可以是1000;
[0080]計算所述兩幀視頻幀之間的第二時間戳差值;根據(jù)所述兩幀視頻幀的時間戳0,I,可以計算得到第二時間戳差值為I;
[0081]將所述第二時間戳差值作為所述時間戳偏移量,即所述時間戳偏移量為I;此時,所述前一幀視頻幀的時間戳加上所述時間戳偏移量則等于2,從而當(dāng)前視頻幀的時間戳被替換為2。
[0082]通過上述實施例,在通常情況下,通過將當(dāng)前視頻幀的前兩幀視頻幀的時間戳相減而得到的第二時間戳差值作為時間戳偏移量,可以解決大部分情況下的時間戳異常情況,此外還可節(jié)約計算步驟,從而減少資源消耗,提升處理速度。
[0083]在一些特殊情況下,僅僅采用前兩幀視頻幀相減而得到的時間戳偏移量有可能還是會造成異常。例如,一段連續(xù)的視頻幀的時間戳為O,I,2,6,1000,9時,此時,僅僅利用前兩幀的時間戳2,6相減得到的時間戳偏移量為4,此時,當(dāng)前視頻幀的新時間戳為6+4=10,還是比下一幀視頻幀的時間戳9更大,同樣會出現(xiàn)異常。
[0084]因此,進(jìn)一步的,在一些可選實施方式中,所述計算所述兩幀視頻幀之間的第二時間戳差值的步驟之后還可進(jìn)一步包括以下步驟:
[0085]判斷所述第二時間戳差值加上所述前一幀視頻幀的時間戳的結(jié)果是否大于或等于下一視頻幀的時間戳;
[0086]若所述第二時間戳差值加上所述前一幀視頻幀的時間戳的結(jié)果大于或等于下一視頻幀的時間戳,則選取所述兩幀視頻幀之前的至少一幀;這里,根據(jù)需要可以是選擇所述兩幀視頻幀之前的一幀甚至更多,在需要保證處理結(jié)果較優(yōu)的情況下,可以多選擇幾幀的視頻戳;
[0087]將所述兩幀視頻幀之前的至少一幀與所述兩幀視頻幀一起,計算相鄰視頻幀兩兩之間的時間戳差值,得到多個第二時間戳差值;
[0088]計算得到所述多個第二時間戳差值的平均值;
[0089]將所述平均值作為所述時間戳偏移量;例如,在選擇所述兩幀視頻幀之前的一幀的情況下,所述平均值等于[(2-1) + (6_2)]/2 = 2.5,這時,所述前一幀視頻幀的時間戳加上所述平均值則等于8.5,從而當(dāng)前視頻幀的時間戳被替換為8.5,其比下一幀視頻幀的時間戳9更小,從而解決了上述的問題。
[0090]通過上述實施例,較好的解決了在一些特殊情況下的視頻幀的時間戳異常問題。[0091 ]在一些情況下,僅使用上述實施例一次,可能不能完全解決上述異常情況,因此,更進(jìn)一步的,在一些可選實施方式中,所述計算得到所述多個第二時間戳差值的平均值的步驟之后還可進(jìn)一步包括以下步驟:
[0092]判斷所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果是否大于或等于下一視頻幀的時間戳;
[0093]若所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果小于下一視頻幀的時間戳,將所述平均值作為所述時間戳偏移量;
[0094]若所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果大于或等于下一視頻幀的時間戳,則繼續(xù)選取在所述兩幀視頻幀之前的至少一幀之前的至少一幀;
[0095]重復(fù)上述步驟,并重新計算得到平均值,直至所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果小于下一視頻幀的時間戳。
[0096]可以看出,通過上述實施例,更好的解決了在一些特殊情況下的視頻幀的時間戳異常問題。
[0097]可選的,在其他一些實施方式中,所述根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第二時間戳差值,計算得到時間戳偏移量的步驟104還可具體包括以下步驟:
[0098]選擇當(dāng)前視頻幀之前的多幀視頻幀;
[0099]計算所述多幀視頻幀中相鄰視頻幀兩兩之間的時間戳差值,得到多個第二時間戳差值;
[0100]計算所述多個第二時間戳差值的平均值;
[0101 ]將所述平均值作為所述時間戳偏移量。
[0102]可以從上述實施例看出,通過直接選取當(dāng)前視頻幀之前的多幀視頻幀計算時間戳差值,使得在一開始就盡量避免了出現(xiàn)一些異常情況,從而很好地解決了時間戳出現(xiàn)異常的問題。
[0103]本發(fā)明還提供了所述時間戳容錯控制方法的另一個實施例。如圖2所示,為本發(fā)明提供的時間戳容錯控制方法的另一個實施例的流程示意圖。
[0104]所述時間戳容錯控制方法,包括以下步驟:
[0105]步驟201:在音視頻解碼過程中,依次獲取視頻幀的時間戳;
[0106]步驟202:計算當(dāng)前視頻幀與前一幀視頻幀之間的第一時間戳差值;
[0107]步驟203:判斷所述第一時間戳差值是否大于預(yù)設(shè)偏移量閾值;
[0108]步驟204:若所述第一時間戳差值大于預(yù)設(shè)偏移量閾值,選擇當(dāng)前視頻幀之前的兩幀視頻幀;
[0109]步驟205:計算所述兩幀視頻幀之間的第二時間戳差值;
[0110]步驟206:判斷所述第二時間戳差值加上所述前一幀視頻幀的時間戳的結(jié)果是否大于或等于下一視頻幀的時間戳;
[0111]步驟207:若所述第二時間戳差值加上所述前一幀視頻幀的時間戳的結(jié)果小于下一視頻幀的時間戳,則將當(dāng)前視頻幀的時間戳替換為所述前一幀視頻幀的時間戳加上所述第二時間戮差值;
[0112]步驟208:若所述第二時間戳差值加上所述前一幀視頻幀的時間戳的結(jié)果大于或等于下一視頻幀的時間戳,則選取所述兩幀視頻幀之前的至少一幀;
[0113]步驟209:將所述兩幀視頻幀之前的至少一幀與所述兩幀視頻幀一起,計算相鄰視頻幀兩兩之間的時間戳差值,得到多個第二時間戳差值;
[0114]步驟210:計算得到所述多個第二時間戳差值的平均值;
[0115]步驟211:判斷所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果是否大于或等于下一視頻幀的時間戳;
[0116]步驟212:若所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果小于下一視頻幀的時間戳,將所述平均值作為所述時間戳偏移量;
[0117]步驟213:若所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果大于或等于下一視頻幀的時間戳,則繼續(xù)選取在所述兩幀視頻幀之前的至少一幀之前的至少一幀,重復(fù)上述步驟,并重新計算得到平均值,直至所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果小于下一視頻幀的時間戳;
[0118]步驟214:將當(dāng)前視頻幀的時間戳替換為所述前一幀視頻幀的時間戳加上所述時間戳偏移量。
[0119]從上述實施例可以看出,本發(fā)明提供的所述時間戳容錯控制方法,通過在依照時間戳進(jìn)行音視頻解碼時,通過判斷當(dāng)前視頻幀與其前一幀視頻幀的第一時間戳差值是否超出了預(yù)設(shè)偏移量閾值,在超出預(yù)設(shè)偏移量閾值時,根據(jù)當(dāng)前視頻幀的時間戳并根據(jù)之前至少兩幀視頻幀之間的第二時間戳差值得到時間戳偏移量,將當(dāng)前視頻幀的時間戳加上時間戳偏移量的值替換異常的視頻幀的時間戳,以保證音視頻文件可以順利播放,使得在視覺效果上不會產(chǎn)生明顯的視頻卡死情況,從而提升了用戶體驗。
[0120]本發(fā)明的第二個方面,提出了一種時間戳容錯控制裝置,能夠糾正轉(zhuǎn)碼過程中的錯誤時間戳,以保證最后的輸出音視頻同步。如圖3所示,為本發(fā)明提供的時間戳容錯控制裝置實施例的模塊結(jié)構(gòu)示意圖。
[0121]所述時間戳容錯控制裝置,包括:
[0122]時間戳獲取模塊301,用于在音視頻解碼過程中,依次獲取視頻幀的時間戳;
[0123]差值計算模塊302,用于計算當(dāng)前視頻幀與前一幀視頻幀之間的第一時間戳差值;所述第一時間戳差值,是通過將當(dāng)前視頻幀的時間戳減去前一幀視頻幀的時間戳所得的差值;
[0124]差值判斷模塊303,用于判斷所述第一時間戳差值是否大于預(yù)設(shè)偏移量閾值;所述預(yù)設(shè)偏移量閾值可以是默認(rèn)設(shè)置的值,也可以是用戶自定義設(shè)置的值;所述預(yù)設(shè)偏移量閾值的設(shè)置所考慮的因素主要可以是,當(dāng)所述第一時間戳差值大于預(yù)設(shè)偏移量閾值時,在轉(zhuǎn)碼完成的音視頻中,會出現(xiàn)容易被觀察到的較長時間的視頻卡死狀況,因此,所述預(yù)設(shè)偏移量閾值可參考正常情況下連續(xù)的時間戳之間的正常的時間間隔來進(jìn)行設(shè)定;
[0125]偏移量計算模塊304,若所述第一時間戳差值大于預(yù)設(shè)偏移量閾值,用于根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第二時間戳差值,計算得到時間戳偏移量;所述第二時間戳差值可以是通過將當(dāng)前視頻幀之前的兩幀視頻幀的時間戳相減而得到,也可以是根據(jù)當(dāng)前視頻幀之前的多幀視頻幀的時間戳兩兩相減而得到的多個值,所述時間戳偏移量可以是等于所述第二時間戳差值,也可以是基于多個所述第二時間戳差值而得到的平均值,或者是基于所述第二時間戳差值而得到的與所述第二時間戳差值相近的值;
[0126]時間戳替換模塊305,用于將當(dāng)前視頻幀的時間戳替換為所述前一幀視頻幀的時間戳加上所述時間戳偏移量,從而將具有錯誤時間戳的視頻幀的時間戳修改為與前一幀視頻幀的時間戳接近的時間戳。
[0127]從上述實施例可以看出,本發(fā)明提供的所述時間戳容錯控制裝置,通過在依照時間戳進(jìn)行音視頻解碼時,通過判斷當(dāng)前視頻幀與其前一幀視頻幀的第一時間戳差值是否超出了預(yù)設(shè)偏移量閾值,在超出預(yù)設(shè)偏移量閾值時,根據(jù)當(dāng)前視頻幀的時間戳并根據(jù)之前至少兩幀視頻幀之間的第二時間戳差值得到時間戳偏移量,將當(dāng)前視頻幀的時間戳加上時間戳偏移量的值替換異常的視頻幀的時間戳,以保證音視頻文件可以順利播放,使得在視覺效果上不會產(chǎn)生明顯的視頻卡死情況,從而提升了用戶體驗。
[0128]較佳的,在一些實施方式中,所述偏移量計算模塊304,具體用于:
[0129]選擇當(dāng)前視頻幀之前的兩幀視頻幀;例如,所述兩幀視頻幀的時間戳可以是0,I,而當(dāng)前視頻幀的時間戳可以是1000;
[0130]計算所述兩幀視頻幀之間的第二時間戳差值;根據(jù)所述兩幀視頻幀的時間戳0,I,可以計算得到第二時間戳差值為I;
[0131]將所述第二時間戳差值作為所述時間戳偏移量,即所述時間戳偏移量為I;此時,所述前一幀視頻幀的時間戳加上所述時間戳偏移量則等于2,從而當(dāng)前視頻幀的時間戳被替換為2。
[0132]通過上述實施例,在通常情況下,通過將當(dāng)前視頻幀的前兩幀視頻幀的時間戳相減而得到的第二時間戳差值作為時間戳偏移量,可以解決大部分情況下的時間戳異常情況,此外還可節(jié)約計算步驟,從而減少資源消耗,提升處理速度。
[0133]在一些特殊情況下,僅僅采用前兩幀視頻幀相減而得到的時間戳偏移量有可能還是會造成異常。例如,一段連續(xù)的視頻幀的時間戳為O,I,2,6,1000,9時,此時,僅僅利用前兩幀的時間戳2,6相減得到的時間戳偏移量為4,此時,當(dāng)前視頻幀的新時間戳為6+4=10,還是比下一幀視頻幀的時間戳9更大,同樣會出現(xiàn)異常。
[0134]因此,進(jìn)一步的,在一些可選實施方式中,所述偏移量計算模塊304,還具體用于:
[0135]判斷所述第二時間戳差值加上所述前一幀視頻幀的時間戳的結(jié)果是否大于或等于下一視頻幀的時間戳;
[0136]若所述第二時間戳差值加上所述前一幀視頻幀的時間戳的結(jié)果大于或等于下一視頻幀的時間戳,則選取所述兩幀視頻幀之前的至少一幀;這里,根據(jù)需要可以是選擇所述兩幀視頻幀之前的一幀甚至更多,在需要保證處理結(jié)果較優(yōu)的情況下,可以多選擇幾幀的視頻戳;
[0137]將所述兩幀視頻幀之前的至少一幀與所述兩幀視頻幀一起,計算相鄰視頻幀兩兩之間的時間戳差值,得到多個第二時間戳差值;
[0138]計算得到所述多個第二時間戳差值的平均值;
[0139]將所述平均值作為所述時間戳偏移量。
[0140]例如,在選擇所述兩幀視頻幀之前的一幀的情況下,所述平均值等于[(2-1)+ (6-2)]/2 = 2.5,這時,所述前一幀視頻幀的時間戳加上所述平均值則等于8.5,從而當(dāng)前視頻幀的時間戳被替換為8.5,其比下一幀視頻幀的時間戳9更小,從而解決了上述的問題。
[0141]通過上述實施例,較好的解決了在一些特殊情況下的視頻幀的時間戳異常問題。
[0142]在一些情況下,僅使用上述實施例一次,可能不能完全解決上述異常情況,因此,更進(jìn)一步的,在一些可選實施方式中,所述偏移量計算模塊304,還具體用于:
[0143]判斷所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果是否大于或等于下一視頻幀的時間戳;
[0144]若所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果小于下一視頻幀的時間戳,將所述平均值作為所述時間戳偏移量;
[0145]若所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果大于或等于下一視頻幀的時間戳,則繼續(xù)選取在所述兩幀視頻幀之前的至少一幀之前的至少一幀;
[0146]重復(fù)上述步驟,并重新計算得到平均值,直至所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果小于下一視頻幀的時間戳。
[0147]可以看出,通過上述實施例,更好的解決了在一些特殊情況下的視頻幀的時間戳異常問題。
[0148]可選的,在其他一些實施方式中,所述偏移量計算模塊304,具體用于:
[0149]選擇當(dāng)前視頻幀之前的多幀視頻幀;
[0150]計算所述多幀視頻幀中相鄰視頻幀兩兩之間的時間戳差值,得到多個第二時間戳差值;
[0151]計算所述多個第二時間戳差值的平均值;
[0152]將所述平均值作為所述時間戳偏移量。
[0153]可以從上述實施例看出,通過直接選取當(dāng)前視頻幀之前的多幀視頻幀計算時間戳差值,使得在一開始就盡量避免了出現(xiàn)一些異常情況,從而很好地解決了時間戳出現(xiàn)異常的問題。
[0154]所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:以上任何實施例的討論僅為示例性的,并非旨在暗示本公開的范圍(包括權(quán)利要求)被限于這些例子;在本發(fā)明的思路下,以上實施例或者不同實施例中的技術(shù)特征之間也可以進(jìn)行組合,步驟可以以任意順序?qū)崿F(xiàn),并存在如上所述的本發(fā)明的不同方面的許多其它變化,為了簡明它們沒有在細(xì)節(jié)中提供。
[0155]另外,為簡化說明和討論,并且為了不會使本發(fā)明難以理解,在所提供的附圖中可以示出或可以不示出與集成電路(IC)芯片和其它部件的公知的電源/接地連接。此外,可以以框圖的形式示出裝置,以便避免使本發(fā)明難以理解,并且這也考慮了以下事實,即關(guān)于這些框圖裝置的實施方式的細(xì)節(jié)是高度取決于將要實施本發(fā)明的平臺的(即,這些細(xì)節(jié)應(yīng)當(dāng)完全處于本領(lǐng)域技術(shù)人員的理解范圍內(nèi))。在闡述了具體細(xì)節(jié)(例如,電路)以描述本發(fā)明的示例性實施例的情況下,對本領(lǐng)域技術(shù)人員來說顯而易見的是,可以在沒有這些具體細(xì)節(jié)的情況下或者這些具體細(xì)節(jié)有變化的情況下實施本發(fā)明。因此,這些描述應(yīng)被認(rèn)為是說明性的而不是限制性的。
[0156]盡管已經(jīng)結(jié)合了本發(fā)明的具體實施例對本發(fā)明進(jìn)行了描述,但是根據(jù)前面的描述,這些實施例的很多替換、修改和變型對本領(lǐng)域普通技術(shù)人員來說將是顯而易見的。例如,其它存儲器架構(gòu)(例如,動態(tài)RAM(DRAM))可以使用所討論的實施例。
[0157]本發(fā)明的實施例旨在涵蓋落入所附權(quán)利要求的寬泛范圍之內(nèi)的所有這樣的替換、修改和變型。因此,凡在本發(fā)明的精神和原則之內(nèi),所做的任何省略、修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項】
1.一種時間戳容錯控制方法,其特征在于,包括: 在音視頻解碼過程中,依次獲取視頻幀的時間戳; 計算當(dāng)前視頻幀與前一幀視頻幀之間的第一時間戳差值; 判斷所述第一時間戳差值是否大于預(yù)設(shè)偏移量閾值; 若所述第一時間戳差值大于預(yù)設(shè)偏移量閾值,根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第二時間戳差值,計算得到時間戳偏移量; 將當(dāng)前視頻幀的時間戳替換為所述前一幀視頻幀的時間戳加上所述時間戳偏移量。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第二時間戳差值,計算得到時間戳偏移量的步驟包括: 選擇當(dāng)前視頻幀之前的兩幀視頻幀; 計算所述兩幀視頻幀之間的第二時間戳差值; 將所述第二時間戳差值作為所述時間戳偏移量。3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述計算所述兩幀視頻幀之間的第二時間戳差值的步驟之后還包括: 判斷所述第二時間戳差值加上所述前一幀視頻幀的時間戳的結(jié)果是否大于或等于下一視頻幀的時間戳; 若所述第二時間戳差值加上所述前一幀視頻幀的時間戳的結(jié)果大于或等于下一視頻幀的時間戳,則選取所述兩幀視頻幀之前的至少一幀; 將所述兩幀視頻幀之前的至少一幀與所述兩幀視頻幀一起,計算相鄰視頻幀兩兩之間的時間戳差值,得到多個第二時間戳差值; 計算得到所述多個第二時間戳差值的平均值; 將所述平均值作為所述時間戳偏移量。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述計算得到所述多個第二時間戳差值的平均值的步驟之后還包括: 判斷所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果是否大于或等于下一視頻幀的時間戳; 若所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果小于下一視頻幀的時間戳,將所述平均值作為所述時間戳偏移量; 若所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果大于或等于下一視頻幀的時間戳,則繼續(xù)選取在所述兩幀視頻幀之前的至少一幀之前的至少一幀; 重復(fù)上述步驟,并重新計算得到平均值,直至所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果小于下一視頻幀的時間戳。5.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第二時間戳差值,計算得到時間戳偏移量的步驟包括: 選擇當(dāng)前視頻幀之前的多幀視頻幀; 計算所述多幀視頻幀中相鄰視頻幀兩兩之間的時間戳差值,得到多個第二時間戳差值; 計算所述多個第二時間戳差值的平均值; 將所述平均值作為所述時間戳偏移量。6.一種時間戳容錯控制裝置,其特征在于,包括: 時間戳獲取模塊,用于在音視頻解碼過程中,依次獲取視頻幀的時間戳; 差值計算模塊,用于計算當(dāng)前視頻幀與前一幀視頻幀之間的第一時間戳差值; 差值判斷模塊,用于判斷所述第一時間戳差值是否大于預(yù)設(shè)偏移量閾值; 偏移量計算模塊,若所述第一時間戳差值大于預(yù)設(shè)偏移量閾值,用于根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第二時間戳差值,計算得到時間戳偏移量; 時間戳替換模塊,用于將當(dāng)前視頻幀的時間戳替換為所述前一幀視頻幀的時間戳加上所述時間戳偏移量。7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述偏移量計算模塊,具體用于: 選擇當(dāng)前視頻幀之前的兩幀視頻幀; 計算所述兩幀視頻幀之間的第二時間戳差值; 將所述第二時間戳差值作為所述時間戳偏移量。8.根據(jù)權(quán)利要求7所述的裝置,其特征在于,所述偏移量計算模塊,還具體用于: 判斷所述第二時間戳差值加上所述前一幀視頻幀的時間戳的結(jié)果是否大于或等于下一視頻幀的時間戳; 若所述第二時間戳差值加上所述前一幀視頻幀的時間戳的結(jié)果大于或等于下一視頻幀的時間戳,則選取所述兩幀視頻幀之前的至少一幀; 將所述兩幀視頻幀之前的至少一幀與所述兩幀視頻幀一起,計算相鄰視頻幀兩兩之間的時間戳差值,得到多個第二時間戳差值; 計算得到所述多個第二時間戳差值的平均值; 將所述平均值作為所述時間戳偏移量。9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述偏移量計算模塊,還具體用于: 判斷所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果是否大于或等于下一視頻幀的時間戳; 若所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果小于下一視頻幀的時間戳,將所述平均值作為所述時間戳偏移量; 若所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果大于或等于下一視頻幀的時間戳,則繼續(xù)選取在所述兩幀視頻幀之前的至少一幀之前的至少一幀; 重復(fù)上述步驟,并重新計算得到平均值,直至所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果小于下一視頻幀的時間戳。10.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述偏移量計算模塊,具體用于: 選擇當(dāng)前視頻幀之前的多幀視頻幀; 計算所述多幀視頻幀中相鄰視頻幀兩兩之間的時間戳差值,得到多個第二時間戳差值; 計算所述多個第二時間戳差值的平均值; 將所述平均值作為所述時間戳偏移量。
【文檔編號】H04J3/06GK105846940SQ201610195424
【公開日】2016年8月10日
【申請日】2016年3月30日
【發(fā)明人】呂超, 魏偉, 白茂生, 蔡硯剛
【申請人】樂視控股(北京)有限公司, 樂視云計算有限公司