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