午夜毛片免费看,老师老少妇黄色网站,久久本道综合久久伊人,伊人黄片子

實時轉(zhuǎn)碼速率控制方法及裝置的制造方法

文檔序號:10492828閱讀:311來源:國知局
實時轉(zhuǎn)碼速率控制方法及裝置的制造方法
【專利摘要】本發(fā)明公開了一種實時轉(zhuǎn)碼速率控制方法及裝置,包括:按照時間戳的時間進(jìn)度讀取視頻幀;判斷下一幀視頻幀的時間戳是否出現(xiàn)異常;若下一幀視頻幀的時間戳出現(xiàn)異常,則按照預(yù)設(shè)幀讀取速率讀取下一幀視頻幀。本發(fā)明提出的實時轉(zhuǎn)碼速率控制方法及裝置,能夠處理數(shù)據(jù)讀取時時間戳出現(xiàn)異常的情況,從而保證正常的實時轉(zhuǎn)碼速率。
【專利說明】
實時轉(zhuǎn)碼速率控制方法及裝置
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及數(shù)據(jù)處理技術(shù)領(lǐng)域,特別是指一種實時轉(zhuǎn)碼速率控制方法及裝置。
【背景技術(shù)】
[0002]現(xiàn)有的音視頻解碼技術(shù)中,使用顯示時間戳PTS(presentat1n time stamp)表示音視頻幀在輸出時間軸上的位置。
[0003]實時轉(zhuǎn)碼系統(tǒng),是一種即時對音視頻文件進(jìn)行轉(zhuǎn)碼的系統(tǒng),其可分為三個部分:I)根據(jù)當(dāng)前數(shù)據(jù)包中的PTS和實時轉(zhuǎn)碼系統(tǒng)時間(實時轉(zhuǎn)碼系統(tǒng)的本地時間)決定是否處理該數(shù)據(jù);2)根據(jù)輸入數(shù)據(jù)進(jìn)行解碼,并將輸入PTS傳給編碼模塊以用于音視頻同步;3)編碼模塊根據(jù)解碼數(shù)據(jù)和PTS進(jìn)行編碼并封裝,輸出數(shù)據(jù)包。
[0004]其中,在進(jìn)行第I)部分時,在獲取音頻文件或者視頻文件的數(shù)據(jù)包時,通常依照PTS獲取對應(yīng)幀的數(shù)據(jù)包。實時轉(zhuǎn)碼系統(tǒng)按照PTS順序依次判斷視頻幀和音頻幀的PTS是否小于當(dāng)前時間軸上的位置,如果小于則表示當(dāng)前幀符合轉(zhuǎn)碼需求,讀取當(dāng)前數(shù)據(jù)包并對其進(jìn)行轉(zhuǎn)碼,否則進(jìn)行等待,直到當(dāng)前幀的PTS符合條件。
[0005]現(xiàn)有技術(shù)中獲取數(shù)據(jù)包的方式如下:
[0006]獲取到的一系列數(shù)據(jù)包按PTS為O,I,2,3,4…的順序排列;
[0007]根據(jù)實時轉(zhuǎn)碼系統(tǒng)的行為,隨著時間的推移(通過實時轉(zhuǎn)碼系統(tǒng)的本地時間的增加來判定時間的變化),依次讀取PTS為0,1,2,3,4……的數(shù)據(jù)包;PTS時間的增加與實時轉(zhuǎn)碼系統(tǒng)的本地時間的經(jīng)過相一致。
[0008]但是,上述方式無法有效處理以下場景:
[0009]獲取到的一串含有錯誤時間戳的視頻幀的PTS為:O,I,1000,1001,4;
[0010]此處判定PTS為I的幀后下一視頻幀PTS為1000,則依照現(xiàn)有技術(shù),會持續(xù)等待,直到實時轉(zhuǎn)碼系統(tǒng)的本地時間增加999(同樣的,PTS也增加999),才會繼續(xù)讀取上面PTS為1000的視頻幀,這樣就會出現(xiàn)長時間等待,并且在用戶處顯示則為視頻停止音頻繼續(xù)播放,無法正常觀看。

【發(fā)明內(nèi)容】

[0011 ]有鑒于此,本發(fā)明的目的在于提出一種實時轉(zhuǎn)碼速率控制方法及裝置,能夠處理數(shù)據(jù)讀取時時間戳出現(xiàn)異常的情況,從而保證正常的實時轉(zhuǎn)碼速率。
[0012]基于上述目的本發(fā)明提供的實時轉(zhuǎn)碼速率控制方法,包括:
[0013]按照時間戳的時間進(jìn)度讀取視頻幀;
[0014]判斷下一幀視頻幀的時間戳是否出現(xiàn)異常;
[0015]若下一幀視頻幀的時間戳出現(xiàn)異常,則按照預(yù)設(shè)幀讀取速率讀取下一幀視頻幀。
[0016]在一些實施方式中,所述判斷下一幀視頻幀的時間戳是否出現(xiàn)異常的步驟包括:
[0017]利用所述下一幀視頻幀的時間戳減去當(dāng)前視頻幀的時間戳,得到第一時間戳差值;
[0018]判斷所述第一時間戳差值是否大于或等于第一預(yù)設(shè)時間戳差值;
[0019]若所述第一時間戳差值大于或等于第一預(yù)設(shè)時間戳差值,則判定所述下一幀視頻幀的時間戳出現(xiàn)異常。
[0020]在一些實施方式中,所述按照預(yù)設(shè)幀讀取速率讀取下一幀視頻幀的步驟之后還包括:
[0021]判斷再下一幀視頻幀的時間戳是否恢復(fù)正常;
[0022]若再下一幀視頻幀的時間戳恢復(fù)正常,則按照時間戳的時間進(jìn)度讀取視頻幀;
[0023]若再下一幀視頻幀的時間戳繼續(xù)出現(xiàn)異常,則按照預(yù)設(shè)幀讀取速率讀取再下一幀視頻幀。
[0024]在一些實施方式中,所述判斷再下一幀視頻幀的時間戳是否恢復(fù)正常的步驟包括:
[0025]利用所述下一幀視頻幀的時間戳減去所述再下一幀視頻幀的時間戳,得到第二時間戳差值;
[0026]利用所述下一幀視頻幀的時間戳減去當(dāng)前視頻幀的時間戳,得到第一時間戳差值;
[0027]利用所述第一時間戳差值減去所述第二時間戳差值,得到第三時間戳差值;
[0028]判斷所述第三時間戳差值的絕對值是否大于第二預(yù)設(shè)時間戳差值;
[0029]若所述第三時間戳差值的絕對值大于第二預(yù)設(shè)時間戳差值,判定再下一幀視頻幀的時間戳繼續(xù)出現(xiàn)異常;
[0030]若所述第三時間戳差值的絕對值小于或等于第二預(yù)設(shè)時間戳差值,判定再下一幀視頻幀的時間戳恢復(fù)正常。
[0031]在一些實施方式中,所述的方法還包括:
[0032]在完成讀取的視頻幀的解碼過程中,依次獲取視頻幀的時間戳;
[0033]計算當(dāng)前視頻幀與前一幀視頻幀之間的第四時間戳差值;
[0034]判斷所述第四時間戳差值是否大于預(yù)設(shè)偏移量閾值;
[0035]若所述第四時間戳差值大于預(yù)設(shè)偏移量閾值,根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第五時間戳差值,計算得到時間戳偏移量;
[0036]將當(dāng)前視頻幀的時間戳替換為所述前一幀視頻幀的時間戳加上所述時間戳偏移量。
[0037]本發(fā)明的另一方面還提供了一種實時轉(zhuǎn)碼速率控制裝置,包括:
[0038]按時間戳讀取模塊,用于按照時間戳的時間進(jìn)度讀取視頻幀;
[0039]異常判斷模塊,用于判斷下一幀視頻幀的時間戳是否出現(xiàn)異常;
[0040]按幀率讀取模塊,若下一幀視頻幀的時間戳出現(xiàn)異常,用于按照預(yù)設(shè)幀讀取速率讀取下一幀視頻幀。
[0041]在一些實施方式中,所述異常判斷模塊,具體用于:
[0042]利用所述下一幀視頻幀的時間戳減去當(dāng)前視頻幀的時間戳,得到第一時間戳差值;
[0043]判斷所述第一時間戳差值是否大于或等于第一預(yù)設(shè)時間戳差值;
[0044]若所述第一時間戳差值大于或等于第一預(yù)設(shè)時間戳差值,則判定所述下一幀視頻幀的時間戳出現(xiàn)異常。
[0045]在一些實施方式中,所述異常判斷模塊,還用于判斷再下一幀視頻幀的時間戳是否恢復(fù)正常;
[0046]若再下一幀視頻幀的時間戳恢復(fù)正常,所述按時間戳讀取模塊,用于按照時間戳的時間進(jìn)度讀取視頻幀;
[0047]若再下一幀視頻幀的時間戳繼續(xù)出現(xiàn)異常,所述按幀率讀取模塊,用于按照預(yù)設(shè)幀讀取速率讀取再下一幀視頻幀。
[0048]在一些實施方式中,所述異常判斷模塊,具體用于:
[0049]利用所述下一幀視頻幀的時間戳減去所述再下一幀視頻幀的時間戳,得到第二時間戳差值;
[0050]利用所述下一幀視頻幀的時間戳減去當(dāng)前視頻幀的時間戳,得到第一時間戳差值;
[0051]利用所述第一時間戳差值減去所述第二時間戳差值,得到第三時間戳差值;
[0052]判斷所述第三時間戳差值的絕對值是否大于第二預(yù)設(shè)時間戳差值;
[0053]若所述第三時間戳差值的絕對值大于第二預(yù)設(shè)時間戳差值,判定再下一幀視頻幀的時間戳繼續(xù)出現(xiàn)異常;
[0054]若所述第三時間戳差值的絕對值小于或等于第二預(yù)設(shè)時間戳差值,判定再下一幀視頻幀的時間戳恢復(fù)正常。
[0055]在一些實施方式中,所述的裝置還包括:
[0056]時間戳獲取模塊,用于在完成讀取的視頻幀的解碼過程中,依次獲取視頻幀的時間戳;
[0057]差值計算模塊,用于計算當(dāng)前視頻幀與前一幀視頻幀之間的第四時間戳差值;
[0058]差值判斷模塊,用于判斷所述第四時間戳差值是否大于預(yù)設(shè)偏移量閾值;
[0059]偏移量計算模塊,若所述第四時間戳差值大于預(yù)設(shè)偏移量閾值,用于根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第五時間戳差值,計算得到時間戳偏移量;
[0060]時間戳替換模塊,用于將當(dāng)前視頻幀的時間戳替換為所述前一幀視頻幀的時間戳加上所述時間戳偏移量。
[0061]從上面所述可以看出,本發(fā)明實施例提供的實時轉(zhuǎn)碼速率控制方法及裝置,在判斷是否處理當(dāng)前數(shù)據(jù)包的過程中讀取視頻幀時,若出現(xiàn)異常時間戳的視頻幀,則根據(jù)所述預(yù)設(shè)幀讀取速率進(jìn)行讀取,從而避免因時間戳異常而引起的無用等待,保證實時轉(zhuǎn)碼器可以繼續(xù)工作,提高讀取操作效率,減少資源消耗。
[0062]此外,還能保證經(jīng)過實時轉(zhuǎn)碼的音視頻文件不會因錯誤的輸入流導(dǎo)致故障中斷,從而提升了用戶體驗。
【附圖說明】
[0063]圖1為本發(fā)明提供的實時轉(zhuǎn)碼速率控制方法的一個實施例的流程示意圖;
[0064]圖2為本發(fā)明提供的實時轉(zhuǎn)碼速率控制方法的另一個實施例的流程示意圖;
[0065]圖3為本發(fā)明提供的實時轉(zhuǎn)碼速率控制裝置實施例的模塊結(jié)構(gòu)示意圖。
【具體實施方式】
[0066]為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚明白,以下結(jié)合具體實施例,并參照附圖,對本發(fā)明進(jìn)一步詳細(xì)說明。
[0067]需要說明的是,本發(fā)明實施例中所有使用“第一”和“第二”的表述均是為了區(qū)分兩個相同名稱非相同的實體或者非相同的參量,可見“第一” “第二”僅為了表述的方便,不應(yīng)理解為對本發(fā)明實施例的限定,后續(xù)實施例對此不再一一說明。
[0068]本發(fā)明的第一個方面,提出了一種實時轉(zhuǎn)碼速率控制方法,能夠處理數(shù)據(jù)讀取時時間戳出現(xiàn)異常的情況,從而保證正常的實時轉(zhuǎn)碼速率。如圖1所示,為本發(fā)明提供的實時轉(zhuǎn)碼速率控制方法的一個實施例的流程示意圖。
[0069]所述實時轉(zhuǎn)碼速率控制方法,包括以下步驟:
[0070]步驟101:按照時間戳的時間進(jìn)度讀取視頻幀;
[0071]步驟102:判斷下一幀視頻幀的時間戳是否出現(xiàn)異常;所述的時間戳出現(xiàn)異常,可以是指下一幀視頻幀的時間戳不是正常情況下應(yīng)該出現(xiàn)的時間戳;
[0072]步驟103:若下一幀視頻幀的時間戳出現(xiàn)異常,則按照預(yù)設(shè)幀讀取速率(可簡稱為幀率或幀速率)讀取下一幀視頻幀,即此時不再按照時間戳的時間進(jìn)度讀取視頻幀,而是改用預(yù)設(shè)幀讀取速率讀取下一幀視頻幀。
[0073]從上述實施例可以看出,本發(fā)明提供的實時轉(zhuǎn)碼速率控制方法,在判斷是否處理當(dāng)前數(shù)據(jù)包的過程中讀取視頻幀時,若出現(xiàn)異常時間戳的視頻幀,則根據(jù)所述預(yù)設(shè)幀讀取速率進(jìn)行讀取,從而避免因時間戳異常而引起的無用等待,保證實時轉(zhuǎn)碼器可以繼續(xù)工作,提高讀取操作效率,減少資源消耗;此外,還能保證經(jīng)過實時轉(zhuǎn)碼的音視頻文件不會因錯誤的輸入流導(dǎo)致故障中斷,從而提升了用戶體驗。
[0074]較佳的,在一些可選實施方式中,所述判斷下一幀視頻幀的時間戳是否出現(xiàn)異常的步驟102還可具體包括以下步驟:
[0075]利用所述下一幀視頻幀的時間戳減去當(dāng)前視頻幀的時間戳,得到第一時間戳差值;
[0076]判斷所述第一時間戳差值是否大于或等于第一預(yù)設(shè)時間戳差值;所述第一預(yù)設(shè)時間戳差值可以是默認(rèn)設(shè)置的值,也可以是用戶自定義設(shè)置的值;所述第一預(yù)設(shè)時間戳差值的取值的主要依據(jù)可以是正常情況下連續(xù)的時間戳之間的正常的時間間隔,或者稍微大于正常情況下連續(xù)的時間戳之間的正常的時間間隔;
[0077]若所述第一時間戳差值大于或等于第一預(yù)設(shè)時間戳差值,則判定所述下一幀視頻幀的時間戳出現(xiàn)異常。
[0078]通過上述實施例,依照第一時間戳差值來判斷時間戳是否出現(xiàn)異常,處理速度快、效率高,且判斷較為準(zhǔn)確。
[0079]進(jìn)一步的,在一些可選實施方式中,所述按照預(yù)設(shè)幀讀取速率讀取下一幀視頻幀的步驟103之后還可進(jìn)一步包括以下步驟:
[0080]判斷再下一幀視頻幀的時間戳是否恢復(fù)正常;
[0081]若再下一幀視頻幀的時間戳恢復(fù)正常,則按照時間戳的時間進(jìn)度讀取視頻幀;
[0082]若再下一幀視頻幀的時間戳繼續(xù)出現(xiàn)異常,則按照預(yù)設(shè)幀讀取速率讀取再下一幀視頻幀。
[0083]通過上述實施例,在再下一幀視頻幀的時間戳恢復(fù)正常后,重新繼續(xù)按照時間戳的時間進(jìn)度讀取視頻幀,從而回歸到正常讀取流程,符合數(shù)據(jù)處理規(guī)律,減少資源消耗。
[0084]更進(jìn)一步的,在一些可選實施方式中,所述判斷再下一幀視頻幀的時間戳是否恢復(fù)正常的步驟還可具體包括以下步驟:
[0085]利用所述下一幀視頻幀的時間戳減去所述再下一幀視頻幀的時間戳,得到第二時間戳差值;
[0086]利用所述下一幀視頻幀的時間戳減去當(dāng)前視頻幀的時間戳,得到第一時間戳差值;
[0087]利用所述第一時間戳差值減去所述第二時間戳差值,得到第三時間戳差值;
[0088]判斷所述第三時間戳差值的絕對值是否大于第二預(yù)設(shè)時間戳差值;所述第二預(yù)設(shè)時間戳差值,可以是默認(rèn)設(shè)置的值,也可以是用戶自定義的值;
[0089]若所述第三時間戳差值的絕對值大于第二預(yù)設(shè)時間戳差值,判定再下一幀視頻幀的時間戳繼續(xù)出現(xiàn)異常;
[0090]若所述第三時間戳差值的絕對值小于或等于第二預(yù)設(shè)時間戳差值,判定再下一幀視頻幀的時間戳恢復(fù)正常,這里采用絕對值對比方式,從而去掉了因數(shù)據(jù)的正負(fù)而干擾數(shù)值大小的判斷的因素。
[0091]舉例來說,假設(shè)有一串視頻幀的時間戳為O,I,1000,3,可以看出,異常的視頻幀之后的視頻幀的時間戳為正常的時間戳,而所述第三時間戳差值為(1000-1)-(1000-3) = 2,此時,所述第二預(yù)設(shè)時間戳差值的取值例如可以是3?5;假設(shè)有一串視頻幀的時間戳為0,I,1000,500,可以看出,異常的視頻幀之后的視頻幀的時間戳還是為異常的時間戳,而所述第三時間戳差值為(1000-1)-(1000-500 )=499,此時,所述第二預(yù)設(shè)時間戳差值的取值例如可以是3?5,則所述第三時間戳差值大于所述第二預(yù)設(shè)時間戳差值,則可以判定,所述再下一幀視頻幀還是為異常視頻幀。
[0092]通過上述實施例,依照第三時間戳差值來判斷時間戳是否恢復(fù),處理速度快、效率高,且判斷較為準(zhǔn)確。
[0093]進(jìn)一步的,在一些可選實施方式中,所述實時轉(zhuǎn)碼速率控制方法,還可進(jìn)一步包括以下步驟:
[0094]在完成讀取的視頻幀的解碼過程中,依次獲取視頻幀的時間戳;
[0095]計算當(dāng)前視頻幀與前一幀視頻幀之間的第四時間戳差值;所述第四時間戳差值,是通過將當(dāng)前視頻幀的時間戳減去前一幀視頻幀的時間戳所得的差值;
[0096]判斷所述第四時間戳差值是否大于預(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è)定;
[0097]若所述第四時間戳差值大于預(yù)設(shè)偏移量閾值,根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第五時間戳差值,計算得到時間戳偏移量;所述第五時間戳差值可以是通過將當(dāng)前視頻幀之前的兩幀視頻幀的時間戳相減而得到,也可以是根據(jù)當(dāng)前視頻幀之前的多幀視頻幀的時間戳兩兩相減而得到的多個值,所述時間戳偏移量可以是等于所述第五時間戳差值,也可以是基于多個所述第五時間戳差值而得到的平均值,或者是基于所述第五時間戳差值而得到的與所述第五時間戳差值相近的值;
[0098]將當(dāng)前視頻幀的時間戳替換為所述前一幀視頻幀的時間戳加上所述時間戳偏移量,從而將具有錯誤時間戳的視頻幀的時間戳修改為與前一幀視頻幀的時間戳接近的時間戳。
[0099]從上述實施例可以看出,在依照時間戳進(jìn)行音視頻解碼時,通過判斷當(dāng)前視頻幀與其前一幀視頻幀的第四時間戳差值是否超出了預(yù)設(shè)偏移量閾值,在超出預(yù)設(shè)偏移量閾值時,根據(jù)當(dāng)前視頻幀的時間戳并根據(jù)之前至少兩幀視頻幀之間的第五時間戳差值得到時間戳偏移量,將當(dāng)前視頻幀的時間戳加上時間戳偏移量的值替換異常的視頻幀的時間戳,以保證音視頻文件可以順利播放,使得在視覺效果上不會產(chǎn)生明顯的視頻卡死情況,從而提升了用戶體驗。
[0100]較佳的,在一些實施方式中,所述根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第五時間戳差值,計算得到時間戳偏移量的步驟還可具體包括以下步驟:
[0101]選擇當(dāng)前視頻幀之前的兩幀視頻幀;例如,所述兩幀視頻幀的時間戳可以是0,I,而當(dāng)前視頻幀的時間戳可以是1000;
[0102]計算所述兩幀視頻幀之間的第五時間戳差值;根據(jù)所述兩幀視頻幀的時間戳0,I,可以計算得到第五時間戳差值為I;
[0103]將所述第五時間戳差值作為所述時間戳偏移量,即所述時間戳偏移量為I;此時,所述前一幀視頻幀的時間戳加上所述時間戳偏移量則等于2,從而當(dāng)前視頻幀的時間戳被替換為2。
[0104]通過上述實施例,在通常情況下,通過將當(dāng)前視頻幀的前兩幀視頻幀的時間戳相減而得到的第五時間戳差值作為時間戳偏移量,可以解決大部分情況下的時間戳異常情況,此外還可節(jié)約計算步驟,從而減少資源消耗,提升處理速度。
[0105]在一些特殊情況下,僅僅采用前兩幀視頻幀相減而得到的時間戳偏移量有可能還是會造成異常。例如,一段連續(xù)的視頻幀的時間戳為O,I,2,6,1000,9時,此時,僅僅利用前兩幀的時間戳2,6相減得到的時間戳偏移量為4,此時,當(dāng)前視頻幀的新時間戳為6+4=10,還是比下一幀視頻幀的時間戳9更大,同樣會出現(xiàn)異常。
[0106]因此,進(jìn)一步的,在一些可選實施方式中,所述計算所述兩幀視頻幀之間的第五時間戳差值的步驟之后還可進(jìn)一步包括以下步驟:
[0107]判斷所述第五時間戳差值加上所述前一幀視頻幀的時間戳的結(jié)果是否大于或等于下一視頻幀的時間戳;
[0108]若所述第五時間戳差值加上所述前一幀視頻幀的時間戳的結(jié)果大于或等于下一視頻幀的時間戳,則選取所述兩幀視頻幀之前的至少一幀;這里,根據(jù)需要可以是選擇所述兩幀視頻幀之前的一幀甚至更多,在需要保證處理結(jié)果較優(yōu)的情況下,可以多選擇幾幀的視頻戳;
[0109]將所述兩幀視頻幀之前的至少一幀與所述兩幀視頻幀一起,計算相鄰視頻幀兩兩之間的時間戳差值,得到多個第五時間戳差值;
[0110]計算得到所述多個第五時間戳差值的平均值;
[0111]將所述平均值作為所述時間戳偏移量;例如,在選擇所述兩幀視頻幀之前的一幀的情況下,所述平均值等于[(2-1) + (6-2)]/2 = 2.5,這時,所述前一幀視頻幀的時間戳加上所述平均值則等于8.5,從而當(dāng)前視頻幀的時間戳被替換為8.5,其比下一幀視頻幀的時間戳9更小,從而解決了上述的問題。
[0112]通過上述實施例,較好的解決了在一些特殊情況下的視頻幀的時間戳異常問題。
[0113]在一些情況下,僅使用上述實施例一次,可能不能完全解決上述異常情況,因此,更進(jìn)一步的,在一些可選實施方式中,所述計算得到所述多個第五時間戳差值的平均值的步驟之后還可進(jìn)一步包括以下步驟:
[0114]判斷所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果是否大于或等于下一視頻幀的時間戳;
[0115]若所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果小于下一視頻幀的時間戳,將所述平均值作為所述時間戳偏移量;
[0116]若所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果大于或等于下一視頻幀的時間戳,則繼續(xù)選取在所述兩幀視頻幀之前的至少一幀之前的至少一幀;
[0117]重復(fù)上述步驟,并重新計算得到平均值,直至所述平均值加上所述前一幀視頻幀的時間戳的結(jié)果小于下一視頻幀的時間戳。
[0118]可以看出,通過上述實施例,更好的解決了在一些特殊情況下的視頻幀的時間戳異常問題。
[0119]可選的,在其他一些實施方式中,所述根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第四時間戳差值,計算得到時間戳偏移量的步驟還可具體包括以下步驟:
[0120]選擇當(dāng)前視頻幀之前的多幀視頻幀;
[0121]計算所述多幀視頻幀中相鄰視頻幀兩兩之間的時間戳差值,得到多個第五時間戳差值;
[0122]計算所述多個第五時間戳差值的平均值;
[0123]將所述平均值作為所述時間戳偏移量。
[0124]可以從上述實施例看出,通過直接選取當(dāng)前視頻幀之前的多幀視頻幀計算時間戳差值,使得在一開始就盡量避免了出現(xiàn)一些異常情況,從而很好地解決了時間戳出現(xiàn)異常的問題。
[0125]本發(fā)明還提供了所述實時轉(zhuǎn)碼速率控制方法的另一個實施例。如圖2所示,為本發(fā)明提供的實時轉(zhuǎn)碼速率控制方法的另一個實施例的流程示意圖。
[0126]所述實時轉(zhuǎn)碼速率控制方法,包括以下步驟:
[0127]步驟201:按照時間戳的時間進(jìn)度讀取視頻幀;
[0128]步驟202:利用所述下一幀視頻幀的時間戳減去當(dāng)前視頻幀的時間戳,得到第一時間戳差值;
[0129]步驟203:判斷所述第一時間戳差值是否大于或等于第一預(yù)設(shè)時間戳差值;
[0130]步驟204:若所述第一時間戳差值大于或等于第一預(yù)設(shè)時間戳差值,則判定所述下一幀視頻幀的時間戳出現(xiàn)異常;
[0131 ]步驟205:按照預(yù)設(shè)幀讀取速率讀取下一幀視頻幀;
[0132]步驟206:利用所述下一幀視頻幀的時間戳減去所述再下一幀視頻幀的時間戳,得到第二時間戳差值;
[0133]步驟207:利用所述下一幀視頻幀的時間戳減去當(dāng)前視頻幀的時間戳,得到第一時間戮差值;
[0134]步驟208:利用所述第一時間戳差值減去所述第二時間戳差值,得到第三時間戳差值;
[0135]步驟209:判斷所述第三時間戳差值的絕對值是否大于第二預(yù)設(shè)時間戳差值;
[0136]步驟210:若所述第三時間戳差值的絕對值大于第二預(yù)設(shè)時間戳差值,判定再下一幀視頻幀的時間戳繼續(xù)出現(xiàn)異常;
[0137]步驟211:按照預(yù)設(shè)幀讀取速率讀取再下一幀視頻幀;
[0138]步驟212:若所述第三時間戳差值的絕對值小于或等于第二預(yù)設(shè)時間戳差值,判定再下一幀視頻幀的時間戳恢復(fù)正常;
[0139]步驟213:按照時間戳的時間進(jìn)度讀取視頻幀;
[0140]步驟214:在完成讀取的視頻幀的解碼過程中,依次獲取視頻幀的時間戳;
[0141]步驟215:計算當(dāng)前視頻幀與前一幀視頻幀之間的第四時間戳差值;
[0142]步驟216:判斷所述第四時間戳差值是否大于預(yù)設(shè)偏移量閾值;
[0143]步驟217:若所述第四時間戳差值大于預(yù)設(shè)偏移量閾值,根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第五時間戳差值,計算得到時間戳偏移量;
[0144]步驟218:將當(dāng)前視頻幀的時間戳替換為所述前一幀視頻幀的時間戳加上所述時間戳偏移量。
[0145]從上述實施例可以看出,本發(fā)明提供的實時轉(zhuǎn)碼速率控制方法,在判斷是否處理當(dāng)前數(shù)據(jù)包的過程中讀取視頻幀時,若出現(xiàn)異常時間戳的視頻幀,則根據(jù)所述預(yù)設(shè)幀讀取速率進(jìn)行讀取,從而避免因時間戳異常而引起的無用等待,保證實時轉(zhuǎn)碼器可以繼續(xù)工作,提高讀取操作效率,減少資源消耗;此外,還能保證經(jīng)過實時轉(zhuǎn)碼的音視頻文件不會因錯誤的輸入流導(dǎo)致故障中斷,從而提升了用戶體驗。
[0146]本發(fā)明的第二個方面,提出了一種實時轉(zhuǎn)碼速率控制裝置,能夠處理數(shù)據(jù)讀取時時間戳出現(xiàn)異常的情況,從而保證正常的實時轉(zhuǎn)碼速率。如圖3所示,為本發(fā)明提供的實時轉(zhuǎn)碼速率控制裝置實施例的模塊結(jié)構(gòu)示意圖。
[0147]所述實時轉(zhuǎn)碼速率控制裝置,包括:
[0148]按時間戳讀取模塊301,用于按照時間戳的時間進(jìn)度讀取視頻幀;
[0149]異常判斷模塊302,用于判斷下一幀視頻幀的時間戳是否出現(xiàn)異常;所述的時間戳出現(xiàn)異常,可以是指下一幀視頻幀的時間戳不是正常情況下應(yīng)該出現(xiàn)的時間戳;
[0150]按幀率讀取模塊303,若下一幀視頻幀的時間戳出現(xiàn)異常,用于按照預(yù)設(shè)幀讀取速率讀取下一幀視頻幀,即此時不再按照時間戳的時間進(jìn)度讀取視頻幀,而是改用預(yù)設(shè)幀讀取速率讀取下一幀視頻幀。
[0151]從上述實施例可以看出,本發(fā)明提供的實時轉(zhuǎn)碼速率控制裝置,在判斷是否處理當(dāng)前數(shù)據(jù)包的過程中讀取視頻幀時,若出現(xiàn)異常時間戳的視頻幀,則根據(jù)所述預(yù)設(shè)幀讀取速率進(jìn)行讀取,從而避免因時間戳異常而引起的無用等待,保證實時轉(zhuǎn)碼器可以繼續(xù)工作,提高讀取操作效率,減少資源消耗;此外,還能保證經(jīng)過實時轉(zhuǎn)碼的音視頻文件不會因錯誤的輸入流導(dǎo)致故障中斷,從而提升了用戶體驗。
[0152]較佳的,在一些可選實施方式中,所述異常判斷模塊302,還可具體用于:
[0153]利用所述下一幀視頻幀的時間戳減去當(dāng)前視頻幀的時間戳,得到第一時間戳差值;
[0154]判斷所述第一時間戳差值是否大于或等于第一預(yù)設(shè)時間戳差值;所述第一預(yù)設(shè)時間戳差值可以是默認(rèn)設(shè)置的值,也可以是用戶自定義設(shè)置的值;所述第一預(yù)設(shè)時間戳差值的取值的主要依據(jù)可以是正常情況下連續(xù)的時間戳之間的正常的時間間隔,或者稍微大于正常情況下連續(xù)的時間戳之間的正常的時間間隔;
[0155]若所述第一時間戳差值大于或等于第一預(yù)設(shè)時間戳差值,則判定所述下一幀視頻幀的時間戳出現(xiàn)異常。
[0156]通過上述實施例,依照第一時間戳差值來判斷時間戳是否出現(xiàn)異常,處理速度快、效率高,且判斷較為準(zhǔn)確。
[0157]進(jìn)一步的,在一些可選實施方式中,所述異常判斷模塊302,還用于判斷再下一幀視頻幀的時間戳是否恢復(fù)正常;
[0158]若再下一幀視頻幀的時間戳恢復(fù)正常,所述按時間戳讀取模塊301,用于按照時間戳的時間進(jìn)度讀取視頻幀;
[0159]若再下一幀視頻幀的時間戳繼續(xù)出現(xiàn)異常,所述按幀率讀取模塊303,用于按照預(yù)設(shè)幀讀取速率讀取再下一幀視頻幀。
[0160]通過上述實施例,在再下一幀視頻幀的時間戳恢復(fù)正常后,重新繼續(xù)按照時間戳的時間進(jìn)度讀取視頻幀,從而回歸到正常讀取流程,符合數(shù)據(jù)處理規(guī)律,減少資源消耗。
[0161]更進(jìn)一步的,在一些可選實施方式中,所述異常判斷模塊302,具體用于:
[0162]利用所述下一幀視頻幀的時間戳減去所述再下一幀視頻幀的時間戳,得到第二時間戳差值;
[0163]利用所述下一幀視頻幀的時間戳減去當(dāng)前視頻幀的時間戳,得到第一時間戳差值;
[0164]利用所述第一時間戳差值減去所述第二時間戳差值,得到第三時間戳差值;
[0165]判斷所述第三時間戳差值的絕對值是否大于第二預(yù)設(shè)時間戳差值;所述第二預(yù)設(shè)時間戳差值,可以是默認(rèn)設(shè)置的值,也可以是用戶自定義的值;
[0166]若所述第三時間戳差值的絕對值大于第二預(yù)設(shè)時間戳差值,判定再下一幀視頻幀的時間戳繼續(xù)出現(xiàn)異常;
[0167]若所述第三時間戳差值的絕對值小于或等于第二預(yù)設(shè)時間戳差值,判定再下一幀視頻幀的時間戳恢復(fù)正常,這里采用絕對值對比方式,從而去掉了因數(shù)據(jù)的正負(fù)而干擾數(shù)值大小的判斷的因素。
[0168]舉例來說,假設(shè)有一串視頻幀的時間戳為0,I,1000,3,可以看出,異常的視頻幀之后的視頻幀的時間戳為正常的時間戳,而所述第三時間戳差值為(1000-1)-(1000-3) = 2,此時,所述第二預(yù)設(shè)時間戳差值的取值例如可以是3?5;假設(shè)有一串視頻幀的時間戳為0,I,1000,500,可以看出,異常的視頻幀之后的視頻幀的時間戳還是為異常的時間戳,而所述第三時間戳差值為(1000-1)-(1000-500 )=499,此時,所述第二預(yù)設(shè)時間戳差值的取值例如可以是3?5,則所述第三時間戳差值大于所述第二預(yù)設(shè)時間戳差值,則可以判定,所述再下一幀視頻幀還是為異常視頻幀。
[0169]通過上述實施例,依照第三時間戳差值來判斷時間戳是否恢復(fù),處理速度快、效率高,且判斷較為準(zhǔn)確。
[0170]進(jìn)一步的,在一些可選實施方式中,所述實時轉(zhuǎn)碼速率控制裝置,還可進(jìn)一步包括以下模塊:
[0171]時間戳獲取模塊304,用于在完成讀取的視頻幀的解碼過程中,依次獲取視頻幀的時間戳;
[0172]差值計算模塊305,用于計算當(dāng)前視頻幀與前一幀視頻幀之間的第四時間戳差值;所述第四時間戳差值,是通過將當(dāng)前視頻幀的時間戳減去前一幀視頻幀的時間戳所得的差值;
[0173]差值判斷模塊306,用于判斷所述第四時間戳差值是否大于預(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è)定;
[0174]偏移量計算模塊307,若所述第四時間戳差值大于預(yù)設(shè)偏移量閾值,用于根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第五時間戳差值,計算得到時間戳偏移量;所述第五時間戳差值可以是通過將當(dāng)前視頻幀之前的兩幀視頻幀的時間戳相減而得到,也可以是根據(jù)當(dāng)前視頻幀之前的多幀視頻幀的時間戳兩兩相減而得到的多個值,所述時間戳偏移量可以是等于所述第五時間戳差值,也可以是基于多個所述第五時間戳差值而得到的平均值,或者是基于所述第五時間戳差值而得到的與所述第五時間戳差值相近的值;
[0175]時間戳替換模塊308,用于將當(dāng)前視頻幀的時間戳替換為所述前一幀視頻幀的時間戳加上所述時間戳偏移量,從而將具有錯誤時間戳的視頻幀的時間戳修改為與前一幀視頻幀的時間戳接近的時間戳。
[0176]從上述實施例可以看出,在依照時間戳進(jìn)行音視頻解碼時,通過判斷當(dāng)前視頻幀與其前一幀視頻幀的第四時間戳差值是否超出了預(yù)設(shè)偏移量閾值,在超出預(yù)設(shè)偏移量閾值時,根據(jù)當(dāng)前視頻幀的時間戳并根據(jù)之前至少兩幀視頻幀之間的第五時間戳差值得到時間戳偏移量,將當(dāng)前視頻幀的時間戳加上時間戳偏移量的值替換異常的視頻幀的時間戳,以保證音視頻文件可以順利播放,使得在視覺效果上不會產(chǎn)生明顯的視頻卡死情況,從而提升了用戶體驗。
[0177]所屬領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:以上任何實施例的討論僅為示例性的,并非旨在暗示本公開的范圍(包括權(quán)利要求)被限于這些例子;在本發(fā)明的思路下,以上實施例或者不同實施例中的技術(shù)特征之間也可以進(jìn)行組合,步驟可以以任意順序?qū)崿F(xiàn),并存在如上所述的本發(fā)明的不同方面的許多其它變化,為了簡明它們沒有在細(xì)節(jié)中提供。
[0178]另外,為簡化說明和討論,并且為了不會使本發(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)為是說明性的而不是限制性的。
[0179]盡管已經(jīng)結(jié)合了本發(fā)明的具體實施例對本發(fā)明進(jìn)行了描述,但是根據(jù)前面的描述,這些實施例的很多替換、修改和變型對本領(lǐng)域普通技術(shù)人員來說將是顯而易見的。例如,其它存儲器架構(gòu)(例如,動態(tài)RAM(DRAM))可以使用所討論的實施例。
[0180]本發(fā)明的實施例旨在涵蓋落入所附權(quán)利要求的寬泛范圍之內(nèi)的所有這樣的替換、修改和變型。因此,凡在本發(fā)明的精神和原則之內(nèi),所做的任何省略、修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項】
1.一種實時轉(zhuǎn)碼速率控制方法,其特征在于,包括: 按照時間戳的時間進(jìn)度讀取視頻幀; 判斷下一幀視頻幀的時間戳是否出現(xiàn)異常; 若下一幀視頻幀的時間戳出現(xiàn)異常,則按照預(yù)設(shè)幀讀取速率讀取下一幀視頻幀。2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述判斷下一幀視頻幀的時間戳是否出現(xiàn)異常的步驟包括: 利用所述下一幀視頻幀的時間戳減去當(dāng)前視頻幀的時間戳,得到第一時間戳差值; 判斷所述第一時間戳差值是否大于或等于第一預(yù)設(shè)時間戳差值; 若所述第一時間戳差值大于或等于第一預(yù)設(shè)時間戳差值,則判定所述下一幀視頻幀的時間戳出現(xiàn)異常。3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述按照預(yù)設(shè)幀讀取速率讀取下一幀視頻幀的步驟之后還包括: 判斷再下一幀視頻幀的時間戳是否恢復(fù)正常; 若再下一幀視頻幀的時間戳恢復(fù)正常,則按照時間戳的時間進(jìn)度讀取視頻幀; 若再下一幀視頻幀的時間戳繼續(xù)出現(xiàn)異常,則按照預(yù)設(shè)幀讀取速率讀取再下一幀視頻幀。4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述判斷再下一幀視頻幀的時間戳是否恢復(fù)正常的步驟包括: 利用所述下一幀視頻幀的時間戳減去所述再下一幀視頻幀的時間戳,得到第二時間戳差值; 利用所述下一幀視頻幀的時間戳減去當(dāng)前視頻幀的時間戳,得到第一時間戳差值; 利用所述第一時間戳差值減去所述第二時間戳差值,得到第三時間戳差值; 判斷所述第三時間戳差值的絕對值是否大于第二預(yù)設(shè)時間戳差值; 若所述第三時間戳差值的絕對值大于第二預(yù)設(shè)時間戳差值,判定再下一幀視頻幀的時間戳繼續(xù)出現(xiàn)異常; 若所述第三時間戳差值的絕對值小于或等于第二預(yù)設(shè)時間戳差值,判定再下一幀視頻幀的時間戳恢復(fù)正常。5.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括: 在完成讀取的視頻幀的解碼過程中,依次獲取視頻幀的時間戳; 計算當(dāng)前視頻幀與前一幀視頻幀之間的第四時間戳差值; 判斷所述第四時間戳差值是否大于預(yù)設(shè)偏移量閾值; 若所述第四時間戳差值大于預(yù)設(shè)偏移量閾值,根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第五時間戳差值,計算得到時間戳偏移量; 將當(dāng)前視頻幀的時間戳替換為所述前一幀視頻幀的時間戳加上所述時間戳偏移量。6.一種實時轉(zhuǎn)碼速率控制裝置,其特征在于,包括: 按時間戳讀取模塊,用于按照時間戳的時間進(jìn)度讀取視頻幀; 異常判斷模塊,用于判斷下一幀視頻幀的時間戳是否出現(xiàn)異常; 按幀率讀取模塊,若下一幀視頻幀的時間戳出現(xiàn)異常,用于按照預(yù)設(shè)幀讀取速率讀取下一幀視頻幀。7.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述異常判斷模塊,具體用于: 利用所述下一幀視頻幀的時間戳減去當(dāng)前視頻幀的時間戳,得到第一時間戳差值; 判斷所述第一時間戳差值是否大于或等于第一預(yù)設(shè)時間戳差值; 若所述第一時間戳差值大于或等于第一預(yù)設(shè)時間戳差值,則判定所述下一幀視頻幀的時間戳出現(xiàn)異常。8.根據(jù)權(quán)利要求6所述的裝置,其特征在于,所述異常判斷模塊,還用于判斷再下一幀視頻幀的時間戳是否恢復(fù)正常; 若再下一幀視頻幀的時間戳恢復(fù)正常,所述按時間戳讀取模塊,用于按照時間戳的時間進(jìn)度讀取視頻幀; 若再下一幀視頻幀的時間戳繼續(xù)出現(xiàn)異常,所述按幀率讀取模塊,用于按照預(yù)設(shè)幀讀取速率讀取再下一幀視頻幀。9.根據(jù)權(quán)利要求8所述的裝置,其特征在于,所述異常判斷模塊,具體用于: 利用所述下一幀視頻幀的時間戳減去所述再下一幀視頻幀的時間戳,得到第二時間戳差值; 利用所述下一幀視頻幀的時間戳減去當(dāng)前視頻幀的時間戳,得到第一時間戳差值; 利用所述第一時間戳差值減去所述第二時間戳差值,得到第三時間戳差值; 判斷所述第三時間戳差值的絕對值是否大于第二預(yù)設(shè)時間戳差值; 若所述第三時間戳差值的絕對值大于第二預(yù)設(shè)時間戳差值,判定再下一幀視頻幀的時間戳繼續(xù)出現(xiàn)異常; 若所述第三時間戳差值的絕對值小于或等于第二預(yù)設(shè)時間戳差值,判定再下一幀視頻幀的時間戳恢復(fù)正常。10.根據(jù)權(quán)利要求6所述的裝置,其特征在于,還包括: 時間戳獲取模塊,用于在完成讀取的視頻幀的解碼過程中,依次獲取視頻幀的時間戳; 差值計算模塊,用于計算當(dāng)前視頻幀與前一幀視頻幀之間的第四時間戳差值; 差值判斷模塊,用于判斷所述第四時間戳差值是否大于預(yù)設(shè)偏移量閾值; 偏移量計算模塊,若所述第四時間戳差值大于預(yù)設(shè)偏移量閾值,用于根據(jù)當(dāng)前視頻幀之前的至少兩幀視頻幀之間的第五時間戳差值,計算得到時間戳偏移量; 時間戳替換模塊,用于將當(dāng)前視頻幀的時間戳替換為所述前一幀視頻幀的時間戳加上所述時間戳偏移量。
【文檔編號】H04N21/4402GK105848012SQ201610195829
【公開日】2016年8月10日
【申請日】2016年3月30日
【發(fā)明人】呂超, 魏偉, 白茂生, 蔡硯剛
【申請人】樂視控股(北京)有限公司, 樂視云計算有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1