本發(fā)明涉及視頻播放領(lǐng)域,尤其涉及一種音視頻丟幀裝置及方法。
背景技術(shù):
在移動(dòng)互聯(lián)網(wǎng)時(shí)代,隨著智能終端的推廣和普及,用戶不斷追求高品質(zhì)的音視體驗(yàn),高壓縮比、高碼率、高分辨率、多聲道、無(wú)損音源漸漸成為視頻標(biāo)配,用戶對(duì)多媒體的視頻的畫(huà)面質(zhì)量要求越來(lái)越高。
智能終端的視頻播放器開(kāi)發(fā)時(shí)通常需要集成測(cè)試不同文件類(lèi)型、編碼類(lèi)型的視頻源,以及相同編碼類(lèi)型不同級(jí)別、不同配置的視頻源,以滿足用戶音視頻源的多樣性。由于受到硬件性能的約束,在視頻播放時(shí)難以達(dá)到源文件所要求的FPS(Frames Per Second,視頻播放幀率),于是在播放時(shí)就會(huì)出現(xiàn)跳幀現(xiàn)象,使得音視頻不同步。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的主要目的在于提出一種音視頻丟幀裝置及方法,旨在解決現(xiàn)有技術(shù)中在播放時(shí)就會(huì)出現(xiàn)跳幀現(xiàn)象,使得音視頻不同步的技術(shù)問(wèn)題。
為實(shí)現(xiàn)上述目的,本發(fā)明提供一種音視頻丟幀裝置,所述裝置包括:
獲取模塊,用于實(shí)時(shí)或定時(shí)獲取當(dāng)前播放時(shí)刻的音頻幀時(shí)間及視頻幀時(shí)間之間的時(shí)間差;
判斷模塊,用于若所述時(shí)差的絕對(duì)值大于或等于預(yù)設(shè)時(shí)長(zhǎng),則判斷所述視頻中是否包含B幀,所述預(yù)設(shè)時(shí)長(zhǎng)為單位視頻幀的顯示時(shí)長(zhǎng)的預(yù)設(shè)倍數(shù);
確定模塊,用于若所述視頻中包含B幀,則根據(jù)當(dāng)前播放視頻源文件的第一幀率以及當(dāng)前進(jìn)行視頻播放的第二幀率確定丟棄視頻中的B幀的時(shí)間間隔;
第一丟棄模塊,用于按照所述時(shí)間間隔丟棄B幀,以使視頻源文件的幀率達(dá)到當(dāng)前進(jìn)行視頻播放的幀率。
可選地,所述確定模塊包括:
確定單元,用于根據(jù)終端芯片的性能確定終端支持的第三幀率;
判斷單元,用于判斷所述第二幀率是否小于所述第三幀率;
調(diào)整單元,用于在所述第二幀率大于或等于所述第三幀率時(shí),對(duì)所述第三幀率增加預(yù)設(shè)增量,以更新所述第三幀率;
所述判斷單元,還用于在所述第二幀率小于所述第三幀率時(shí),判斷所述第二幀率與預(yù)設(shè)值的和是否大于所述第三幀率;
第一計(jì)算單元,用于在所述第二幀率與預(yù)設(shè)值的和小于或等于所述第三幀率時(shí),計(jì)算所述第二幀率以及所述第三幀率的平均值,并根據(jù)所述平均值以及所述第一幀率計(jì)算所述時(shí)間間隔;
所述調(diào)整單元,還用于在所述第二幀率與預(yù)設(shè)值的和大于所述第三幀率時(shí),對(duì)所述第三幀率減去所述預(yù)設(shè)增量,以更新所述第三幀率。
可選地,所述裝置還包括:
播放模塊,用于若視頻中沒(méi)有B幀,則播放下一個(gè)I幀。
可選地,所述裝置還包括:
對(duì)比模塊,用于實(shí)時(shí)對(duì)比當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間;
第二丟棄模塊,用于當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間的時(shí)間差大于第一預(yù)設(shè)時(shí)間時(shí),則丟棄視頻源文件中的B幀;
所述播放模塊,還用于當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間的時(shí)間差大于第二預(yù)設(shè)時(shí)間時(shí),則播放下一個(gè)I幀,其中,所述第一預(yù)設(shè)時(shí)間小于所述第二預(yù)設(shè)時(shí)間。
可選地,所述第二丟棄模塊包括:
第二計(jì)算單元,用于通過(guò)當(dāng)前播放視頻的第二幀率與當(dāng)前播放視頻源文件的第一幀率計(jì)算需要丟棄的B幀數(shù)量;
丟棄單元,用于根據(jù)計(jì)算得到的需要丟棄的B幀數(shù)量在視頻源文件中丟棄對(duì)應(yīng)的B幀。
此外,為實(shí)現(xiàn)上述目的,本發(fā)明還提供一種音視頻丟幀方法,所述方法包括以下步驟:
實(shí)時(shí)或定時(shí)獲取當(dāng)前播放時(shí)刻的音頻幀時(shí)間及視頻幀時(shí)間之間的時(shí)間差;
若所述時(shí)差的絕對(duì)值大于或等于預(yù)設(shè)時(shí)長(zhǎng),則判斷所述視頻中是否包含B幀,所述預(yù)設(shè)時(shí)長(zhǎng)為單位視頻幀的顯示時(shí)長(zhǎng)的預(yù)設(shè)倍數(shù);
若是,則根據(jù)當(dāng)前播放視頻源文件的第一幀率以及當(dāng)前進(jìn)行視頻播放的第二幀率確定丟棄視頻中的B幀的時(shí)間間隔;
按照所述時(shí)間間隔丟棄B幀,以使視頻源文件的幀率達(dá)到當(dāng)前進(jìn)行視頻播放的幀率。
可選地,所述根據(jù)當(dāng)前播放視頻源文件的第一幀率以及當(dāng)前進(jìn)行視頻播放的第二幀率確定丟棄視頻中的B幀的時(shí)間間隔的步驟包括:
根據(jù)終端芯片的性能確定終端支持的第三幀率;
判斷所述第二幀率是否小于所述第三幀率;
在所述第二幀率大于或等于所述第三幀率時(shí),對(duì)所述第三幀率增加預(yù)設(shè)增量以更新所述第三幀率,并繼續(xù)執(zhí)行所述判斷所述第二幀率是否小于所述第三幀率的步驟;
在所述第二幀率小于所述第三幀率時(shí),判斷所述第二幀率與預(yù)設(shè)值的和是否大于所述第三幀率;
在所述第二幀率與預(yù)設(shè)值的和小于或等于所述第三幀率時(shí),計(jì)算所述第二幀率以及所述第三幀率的平均值,并根據(jù)所述平均值以及所述第一幀率計(jì)算所述時(shí)間間隔;
在所述第二幀率與預(yù)設(shè)值的和大于所述第三幀率時(shí),對(duì)所述第三幀率減去所述預(yù)設(shè)增量,以更新所述第三幀率,并繼續(xù)執(zhí)行所述判斷所述第二幀率是否小于所述第三幀率的步驟。
可選地,所述判斷視頻中是否有B幀的步驟之后還包括:
若視頻中沒(méi)有B幀,則播放下一個(gè)I幀。
可選地,所述方法還包括:
實(shí)時(shí)對(duì)比當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間;
當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間的時(shí)間差大于第一預(yù)設(shè)時(shí)間時(shí),則丟棄視頻源文件中的B幀;
當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間的時(shí)間差大于第二預(yù)設(shè)時(shí)間時(shí),則播放下一個(gè)I幀,其中,所述第一預(yù)設(shè)時(shí)間小于所述第二預(yù)設(shè)時(shí)間。
可選地,所述丟棄視頻源文件中的B幀的步驟包括:
通過(guò)當(dāng)前播放視頻的第二幀率與當(dāng)前播放視頻源文件的第一幀率計(jì)算需要丟棄的B幀數(shù)量;
根據(jù)計(jì)算得到的需要丟棄的B幀數(shù)量在視頻源文件中丟棄對(duì)應(yīng)的B幀。
本發(fā)明提出的音視頻丟幀裝置及方法,通過(guò)實(shí)時(shí)或定時(shí)獲取當(dāng)前播放時(shí)刻的音頻幀時(shí)間及視頻幀時(shí)間之間的時(shí)間差;當(dāng)所述時(shí)差的絕對(duì)值大于或等于預(yù)設(shè)時(shí)長(zhǎng)時(shí),判斷所述視頻中是否包含B幀,其中,所述預(yù)設(shè)時(shí)長(zhǎng)為單位視頻幀的顯示時(shí)長(zhǎng)的預(yù)設(shè)倍數(shù);當(dāng)所述視頻中包含B幀時(shí),根據(jù)當(dāng)前播放視頻源文件的第一幀率以及當(dāng)前進(jìn)行視頻播放的第二幀率確定丟棄視頻中的B幀的時(shí)間間隔,并按照所述時(shí)間間隔丟棄B幀,通過(guò)按照時(shí)間間隔丟棄B幀的方式,使視頻源文件的幀率達(dá)到當(dāng)前進(jìn)行視頻播放的幀率,從而實(shí)現(xiàn)音視頻的輸出同步。
附圖說(shuō)明
圖1為實(shí)現(xiàn)本發(fā)明各個(gè)實(shí)施例的移動(dòng)終端的一種可選的硬件結(jié)構(gòu)示意圖;
圖2為如圖1所示的移動(dòng)終端的無(wú)線通信裝置示意圖;
圖3為本發(fā)明音視頻丟幀裝置第一實(shí)施例的功能模塊示意圖;
圖4為本發(fā)明音視頻丟幀裝置第三實(shí)施例中確定模塊的細(xì)化功能模塊示意圖;
圖5為本發(fā)明音視頻丟幀裝置第四實(shí)施例的功能模塊示意圖;
圖6為本發(fā)明音視頻丟幀裝置第五實(shí)施例中第二丟棄模塊的細(xì)化功能模塊示意圖;
圖7為本發(fā)明音視頻丟幀方法第一實(shí)施例的流程示意圖;
圖8為本發(fā)明音視頻丟幀方法第三實(shí)施例中根據(jù)當(dāng)前播放視頻源文件的第一幀率以及當(dāng)前進(jìn)行視頻播放的第二幀率確定丟棄視頻中的B幀的時(shí)間間隔的步驟的細(xì)化流程示意圖;
圖9為本發(fā)明音視頻丟幀方法第四實(shí)施例的流程示意圖;
圖10為本發(fā)明音視頻丟幀方法第五實(shí)施例中丟棄視頻源文件中的B幀的步驟的細(xì)化流程示意圖。
本發(fā)明目的的實(shí)現(xiàn)、功能特點(diǎn)及優(yōu)點(diǎn)將結(jié)合實(shí)施例,參照附圖做進(jìn)一步說(shuō)明。
具體實(shí)施方式
應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
現(xiàn)在將參考附圖描述實(shí)現(xiàn)本發(fā)明各個(gè)實(shí)施例的移動(dòng)終端。在后續(xù)的描述中,使用用于表示元件的諸如“模塊”、“部件”或“單元”的后綴僅為了有利于本發(fā)明的說(shuō)明,其本身并沒(méi)有特定的意義。因此,“模塊”與“部件”可以混合地使用。
移動(dòng)終端可以以各種形式來(lái)實(shí)施。例如,本發(fā)明中描述的終端可以包括諸如移動(dòng)電話、智能電話、筆記本電腦、數(shù)字廣播接收器、PDA(個(gè)人數(shù)字助理)、PAD(平板電腦)、PMP(便攜式多媒體播放器)、導(dǎo)航裝置等等的移動(dòng)終端以及諸如數(shù)字TV、臺(tái)式計(jì)算機(jī)等等的固定終端。下面,假設(shè)終端是移動(dòng)終端。然而,本領(lǐng)域技術(shù)人員將理解的是,除了特別用于移動(dòng)目的的元件之外,根據(jù)本發(fā)明的實(shí)施方式的構(gòu)造也能夠應(yīng)用于固定類(lèi)型的終端。
圖1為實(shí)現(xiàn)本發(fā)明各個(gè)實(shí)施例的移動(dòng)終端的硬件結(jié)構(gòu)示意。
移動(dòng)終端100可以包括無(wú)線通信單元110、A/V(音頻/視頻)輸入單元120、用戶輸入單元130、感測(cè)單元140、輸出單元150、存儲(chǔ)器160、接口單元170、控制器180和電源單元190等等。圖1示出了具有各種組件的移動(dòng)終端,但是應(yīng)理解的是,并不要求實(shí)施所有示出的組件??梢蕴娲貙?shí)施更多或更少的組件。將在下面詳細(xì)描述移動(dòng)終端的元件。
無(wú)線通信單元110通常包括一個(gè)或多個(gè)組件,其允許移動(dòng)終端100與無(wú)線通信裝置或網(wǎng)絡(luò)之間的無(wú)線電通信。例如,無(wú)線通信單元可以包括移動(dòng)通信模塊112、無(wú)線互聯(lián)網(wǎng)模塊113中的至少一個(gè)。
移動(dòng)通信模塊112將無(wú)線電信號(hào)發(fā)送到基站(例如,接入點(diǎn)、節(jié)點(diǎn)B等等)、外部終端以及服務(wù)器中的至少一個(gè)和/或從其接收無(wú)線電信號(hào)。這樣的無(wú)線電信號(hào)可以包括語(yǔ)音通話信號(hào)、視頻通話信號(hào)、或者根據(jù)文本和/或多媒體消息發(fā)送和/或接收的各種類(lèi)型的數(shù)據(jù)。
無(wú)線互聯(lián)網(wǎng)模塊113支持移動(dòng)終端的無(wú)線互聯(lián)網(wǎng)接入。該模塊可以內(nèi)部或外部地耦接到終端。該模塊所涉及的無(wú)線互聯(lián)網(wǎng)接入技術(shù)可以包括WLAN(無(wú)線LAN)(Wi-Fi)、Wibro(無(wú)線寬帶)、Wimax(全球微波互聯(lián)接入)、HSDPA(高速下行鏈路分組接入)等等。
用戶輸入單元130可以根據(jù)用戶輸入的命令生成鍵輸入數(shù)據(jù)以控制移動(dòng)終端的各種操作。用戶輸入單元130允許用戶輸入各種類(lèi)型的信息,并且可以包括鍵盤(pán)、鍋?zhàn)衅?、觸摸板(例如,檢測(cè)由于被接觸而導(dǎo)致的電阻、壓力、電容等等的變化的觸敏組件)、滾輪、搖桿等等。特別地,當(dāng)觸摸板以層的形式疊加在顯示單元151上時(shí),可以形成觸摸屏。
接口單元170用作至少一個(gè)外部裝置與移動(dòng)終端100連接可以通過(guò)的接口。例如,外部裝置可以包括有線或無(wú)線頭戴式耳機(jī)端口、外部電源(或電池充電器)端口、有線或無(wú)線數(shù)據(jù)端口、存儲(chǔ)卡端口、用于連接具有識(shí)別模塊的裝置的端口、音頻輸入/輸出(I/O)端口、視頻I/O端口、耳機(jī)端口等等。識(shí)別模塊可以是存儲(chǔ)用于驗(yàn)證用戶使用移動(dòng)終端100的各種信息并且可以包括用戶識(shí)別模塊(UIM)、客戶識(shí)別模塊(SIM)、通用客戶識(shí)別模塊(USIM)等等。另外,具有識(shí)別模塊的裝置(下面稱(chēng)為“識(shí)別裝置”)可以采取智能卡的形式,因此,識(shí)別裝置可以經(jīng)由端口或其它連接裝置與移動(dòng)終端100連接。接口單元170可以用于接收來(lái)自外部裝置的輸入(例如,數(shù)據(jù)信息、電力等等)并且將接收到的輸入傳輸?shù)揭苿?dòng)終端100內(nèi)的一個(gè)或多個(gè)元件或者可以用于在移動(dòng)終端和外部裝置之間傳輸數(shù)據(jù)。
另外,當(dāng)移動(dòng)終端100與外部底座連接時(shí),接口單元170可以用作允許通過(guò)其將電力從底座提供到移動(dòng)終端100的路徑或者可以用作允許從底座輸入的各種命令信號(hào)通過(guò)其傳輸?shù)揭苿?dòng)終端的路徑。從底座輸入的各種命令信號(hào)或電力可以用作用于識(shí)別移動(dòng)終端是否準(zhǔn)確地安裝在底座上的信號(hào)。輸出單元150被構(gòu)造為以視覺(jué)、音頻和/或觸覺(jué)方式提供輸出信號(hào)(例如,音頻信號(hào)、視頻信號(hào)、警報(bào)信號(hào)、振動(dòng)信號(hào)等等)。輸出單元150可以包括顯示單元151、音頻輸出模塊152等等。
顯示單元151可以顯示在移動(dòng)終端100中處理的信息。例如,當(dāng)移動(dòng)終端100處于電話通話模式時(shí),顯示單元151可以顯示與通話或其它通信(例如,文本消息收發(fā)、多媒體文件下載等等)相關(guān)的用戶界面(UI)或圖形用戶界面(GUI)。當(dāng)移動(dòng)終端100處于視頻通話模式或者圖像捕獲模式時(shí),顯示單元151可以顯示捕獲的圖像和/或接收的圖像、示出視頻或圖像以及相關(guān)功能的UI或GUI等等。
同時(shí),當(dāng)顯示單元151和觸摸板以層的形式彼此疊加以形成觸摸屏?xí)r,顯示單元151可以用作輸入裝置和輸出裝置。顯示單元151可以包括液晶顯示器(LCD)、薄膜晶體管LCD(TFT-LCD)、有機(jī)發(fā)光二極管(OLED)顯示器、柔性顯示器、三維(3D)顯示器等等中的至少一種。這些顯示器中的一些可以被構(gòu)造為透明狀以允許用戶從外部觀看,這可以稱(chēng)為透明顯示器,典型的透明顯示器可以例如為T(mén)OLED(透明有機(jī)發(fā)光二極管)顯示器等等。根據(jù)特定想要的實(shí)施方式,移動(dòng)終端100可以包括兩個(gè)或更多顯示單元(或其它顯示裝置),例如,移動(dòng)終端可以包括外部顯示單元(未示出)和內(nèi)部顯示單元(未示出)。觸摸屏可用于檢測(cè)觸摸輸入壓力以及觸摸輸入位置和觸摸輸入面積。
音頻輸出模塊152可以在移動(dòng)終端處于呼叫信號(hào)接收模式、通話模式、記錄模式、語(yǔ)音識(shí)別模式、廣播接收模式等等模式下時(shí),將無(wú)線通信單元110接收的或者在存儲(chǔ)器160中存儲(chǔ)的音頻數(shù)據(jù)轉(zhuǎn)換音頻信號(hào)并且輸出為聲音。而且,音頻輸出模塊152可以提供與移動(dòng)終端100執(zhí)行的特定功能相關(guān)的音頻輸出(例如,呼叫信號(hào)接收聲音、消息接收聲音等等)。音頻輸出模塊152可以包括拾音器、蜂鳴器等等。
存儲(chǔ)器160可以存儲(chǔ)由控制器180執(zhí)行的處理和控制操作的軟件程序等等,或者可以暫時(shí)地存儲(chǔ)己經(jīng)輸出或?qū)⒁敵龅臄?shù)據(jù)(例如,電話簿、消息、靜態(tài)圖像、視頻等等)。而且,存儲(chǔ)器160可以存儲(chǔ)關(guān)于當(dāng)觸摸施加到觸摸屏?xí)r輸出的各種方式的振動(dòng)和音頻信號(hào)的數(shù)據(jù)。
存儲(chǔ)器160可以包括至少一種類(lèi)型的存儲(chǔ)介質(zhì),所述存儲(chǔ)介質(zhì)包括閃存、硬盤(pán)、多媒體卡、卡型存儲(chǔ)器(例如,SD或DX存儲(chǔ)器等等)、隨機(jī)訪問(wèn)存儲(chǔ)器(RAM)、靜態(tài)隨機(jī)訪問(wèn)存儲(chǔ)器(SRAM)、只讀存儲(chǔ)器(ROM)、電可擦除可編程只讀存儲(chǔ)器(EEPROM)、可編程只讀存儲(chǔ)器(PROM)、磁性存儲(chǔ)器、磁盤(pán)、光盤(pán)等等。而且,移動(dòng)終端100可以與通過(guò)網(wǎng)絡(luò)連接執(zhí)行存儲(chǔ)器160的存儲(chǔ)功能的網(wǎng)絡(luò)存儲(chǔ)裝置協(xié)作。
控制器180通??刂埔苿?dòng)終端的總體操作。例如,控制器180執(zhí)行與語(yǔ)音通話、數(shù)據(jù)通信、視頻通話等等相關(guān)的控制和處理。另外,控制器180可以包括用于再現(xiàn)(或回放)多媒體數(shù)據(jù)的多媒體模塊181,多媒體模塊181可以構(gòu)造在控制器180內(nèi),或者可以構(gòu)造為與控制器180分離??刂破?80可以執(zhí)行模式識(shí)別處理,以將在觸摸屏上執(zhí)行的手寫(xiě)輸入或者圖片繪制輸入識(shí)別為字符或圖像。
電源單元190在控制器180的控制下接收外部電力或內(nèi)部電力并且提供操作各元件和組件所需的適當(dāng)?shù)碾娏Α?/p>
這里描述的各種實(shí)施方式可以以使用例如計(jì)算機(jī)軟件、硬件或其任何組合的計(jì)算機(jī)可讀介質(zhì)來(lái)實(shí)施。對(duì)于硬件實(shí)施,這里描述的實(shí)施方式可以通過(guò)使用特定用途集成電路(ASIC)、數(shù)字信號(hào)處理器(DSP)、數(shù)字信號(hào)處理裝置(DSPD)、可編程邏輯裝置(PLD)、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)、處理器、控制器、微控制器、微處理器、被設(shè)計(jì)為執(zhí)行這里描述的功能的電子單元中的至少一種來(lái)實(shí)施,在一些情況下,這樣的實(shí)施方式可以在控制器180中實(shí)施。對(duì)于軟件實(shí)施,諸如過(guò)程或功能的實(shí)施方式可以與允許執(zhí)行至少一種功能或操作的單獨(dú)的軟件模塊來(lái)實(shí)施。軟件代碼可以由以任何適當(dāng)?shù)木幊陶Z(yǔ)言編寫(xiě)的軟件應(yīng)用程序(或程序)來(lái)實(shí)施,軟件代碼可以存儲(chǔ)在存儲(chǔ)器160中并且由控制器180執(zhí)行。
至此,己經(jīng)按照其功能描述了移動(dòng)終端。下面,為了簡(jiǎn)要起見(jiàn),將描述諸如折疊型、直板型、擺動(dòng)型、滑動(dòng)型移動(dòng)終端等等的各種類(lèi)型的移動(dòng)終端中的滑動(dòng)型移動(dòng)終端作為示例。因此,本發(fā)明能夠應(yīng)用于任何類(lèi)型的移動(dòng)終端,并且不限于滑動(dòng)型移動(dòng)終端。
如圖1中所示的移動(dòng)終端100可以被構(gòu)造為利用經(jīng)由幀或分組發(fā)送數(shù)據(jù)的諸如有線和無(wú)線通信裝置以及基于衛(wèi)星的通信裝置來(lái)操作。
現(xiàn)在將參考圖2描述其中根據(jù)本發(fā)明的移動(dòng)終端能夠操作的通信裝置。
這樣的通信裝置可以使用不同的空中接口和/或物理層。例如,由通信裝置使用的空中接口包括例如頻分多址(FDMA)、時(shí)分多址(TDMA)、碼分多址(CDMA)和通用移動(dòng)通信裝置(UMTS)(特別地,長(zhǎng)期演進(jìn)(LTE))、全球移動(dòng)通信裝置(GSM)等等。作為非限制性示例,下面的描述涉及CDMA通信裝置,但是這樣的教導(dǎo)同樣適用于其它類(lèi)型的裝置。
參考圖2,CDMA無(wú)線通信裝置可以包括多個(gè)移動(dòng)終端100、多個(gè)基站(BS)270、基站控制器(BSC)275和移動(dòng)交換中心(MSC)280。MSC280被構(gòu)造為與公共電話交換網(wǎng)絡(luò)(PSTN)290形成接口。MSC280還被構(gòu)造為與可以經(jīng)由回程線路耦接到BS270的BSC275形成接口?;爻叹€路可以根據(jù)若干己知的接口中的任一種來(lái)構(gòu)造,所述接口包括例如E1/T1、ATM,IP、PPP、幀中繼、HDSL、ADSL或xDSL。將理解的是,如圖2中所示的裝置可以包括多個(gè)BSC275。
每個(gè)BS270可以服務(wù)一個(gè)或多個(gè)分區(qū)(或區(qū)域),由多向天線或指向特定方向的天線覆蓋的每個(gè)分區(qū)放射狀地遠(yuǎn)離BS270?;蛘?,每個(gè)分區(qū)可以由用于分集接收的兩個(gè)或更多天線覆蓋。每個(gè)BS270可以被構(gòu)造為支持多個(gè)頻率分配,并且每個(gè)頻率分配具有特定頻譜(例如,1.25MHz,5MHz等等)。
分區(qū)與頻率分配的交叉可以被稱(chēng)為CDMA信道。BS270也可以被稱(chēng)為基站收發(fā)器子裝置(BTS)或者其它等效術(shù)語(yǔ)。在這樣的情況下,術(shù)語(yǔ)"基站"可以用于籠統(tǒng)地表示單個(gè)BSC275和至少一個(gè)BS270?;疽部梢员环Q(chēng)為"蜂窩站"?;蛘?,特定BS270的各分區(qū)可以被稱(chēng)為多個(gè)蜂窩站。
如圖2中所示,廣播發(fā)射器(BT)295將廣播信號(hào)發(fā)送給在裝置內(nèi)操作的移動(dòng)終端100。如圖1中所示的廣播接收模塊111被設(shè)置在移動(dòng)終端100處以接收由BT295發(fā)送的廣播信號(hào)。在圖2中,示出了幾個(gè)全球定位裝置(GPS)衛(wèi)星300。衛(wèi)星300幫助定位多個(gè)移動(dòng)終端100中的至少一個(gè)。
在圖2中,描繪了多個(gè)衛(wèi)星300,但是可以理解的是,可以利用任何數(shù)目的衛(wèi)星獲得有用的定位信息。如圖1中所示的位置信息模塊115通常被構(gòu)造為與衛(wèi)星300配合以獲得想要的定位信息。替代GPS跟蹤技術(shù)或者在GPS跟蹤技術(shù)之外,可以使用可以跟蹤移動(dòng)終端的位置的其它技術(shù)。另外,至少一個(gè)GPS衛(wèi)星300可以選擇性地或者額外地處理衛(wèi)星DMB傳輸。
作為無(wú)線通信裝置的一個(gè)典型操作,BS270接收來(lái)自各種移動(dòng)終端100的反向鏈路信號(hào)。移動(dòng)終端100通常參與通話、消息收發(fā)和其它類(lèi)型的通信。特定BS270接收的每個(gè)反向鏈路信號(hào)被在特定BS270內(nèi)進(jìn)行處理。獲得的數(shù)據(jù)被轉(zhuǎn)發(fā)給相關(guān)的BSC275。BSC提供通話資源分配和包括BS270之間的軟切換過(guò)程的協(xié)調(diào)的移動(dòng)管理功能。BSC275還將接收到的數(shù)據(jù)路由到MSC280,其提供用于與PSTN290形成接口的額外的路由服務(wù)。類(lèi)似地,PSTN290與MSC280形成接口,MSC與BSC275形成接口,并且BSC275相應(yīng)地控制BS270以將正向鏈路信號(hào)發(fā)送到移動(dòng)終端100。
基于上述移動(dòng)終端硬件結(jié)構(gòu)、通信裝置的結(jié)構(gòu),提出本發(fā)明裝置和方法各個(gè)實(shí)施例。
本發(fā)明提供一種音視頻丟幀裝置。
參照?qǐng)D3,圖3為本發(fā)明音視頻丟幀裝置第一實(shí)施例的功能模塊示意圖。
在本實(shí)施例中,所述音視頻丟幀裝置包括:
獲取模塊10,用于實(shí)時(shí)或定時(shí)獲取當(dāng)前播放時(shí)刻的音頻幀時(shí)間及視頻幀時(shí)間之間的時(shí)間差。
在本實(shí)施例中,當(dāng)移動(dòng)終端播放的視頻出現(xiàn)音視頻播放不同步的情況,并且視頻圖像解碼時(shí)長(zhǎng)大于圖像的顯示時(shí)長(zhǎng)時(shí),需要調(diào)整音視頻的輸出。首先觸發(fā)開(kāi)啟音視頻丟幀同步機(jī)制的指令,移動(dòng)終端根據(jù)所述指令實(shí)時(shí)或定時(shí)獲取當(dāng)前播放時(shí)刻的音頻幀時(shí)間及視頻幀時(shí)間,并計(jì)算所述當(dāng)前播放時(shí)刻的音頻幀時(shí)間及視頻幀時(shí)間之間的時(shí)間差。在視頻編碼序列中,主要有三種編碼幀:I幀、P幀、B幀。其中:I幀即Intra-codedpicture(幀內(nèi)編碼圖像幀),不參考其他圖像幀,只利用本幀的信息進(jìn)行編碼。P幀即Predictive-codedPicture(預(yù)測(cè)編碼圖像幀),利用之前的I幀或P幀,采用運(yùn)動(dòng)預(yù)測(cè)的方式進(jìn)行幀間預(yù)測(cè)編碼。B幀即Bidirectionallypredictedpicture(雙向預(yù)測(cè)編碼圖像幀),提供最高的壓縮比,它既需要之前的圖像幀(I幀或P幀),也需要后來(lái)的圖像幀(P幀),采用運(yùn)動(dòng)預(yù)測(cè)的方式進(jìn)行幀間雙向預(yù)測(cè)編碼,一般情況下,B幀僅用于記錄本幀與前后幀的差值,因此在視頻播放過(guò)程中,當(dāng)出現(xiàn)音視頻不同步時(shí),一般將視頻中對(duì)應(yīng)的B幀丟棄。
判斷模塊20,用于若所述時(shí)差的絕對(duì)值大于或等于預(yù)設(shè)時(shí)長(zhǎng),則判斷所述視頻中是否包含B幀,所述預(yù)設(shè)時(shí)長(zhǎng)為單位視頻幀的顯示時(shí)長(zhǎng)的預(yù)設(shè)倍數(shù)。
在本實(shí)施例中,首先將所述音頻幀時(shí)間與視頻幀時(shí)間之間的時(shí)差的絕對(duì)值與預(yù)設(shè)時(shí)長(zhǎng)進(jìn)行對(duì)比,所述預(yù)設(shè)時(shí)長(zhǎng)為單位視頻幀的顯示時(shí)長(zhǎng)的預(yù)設(shè)倍數(shù)。若所述時(shí)差的絕對(duì)值大于或等于預(yù)設(shè)時(shí)長(zhǎng),即當(dāng)音視頻幀相差預(yù)設(shè)倍數(shù)個(gè)連續(xù)視頻幀顯示時(shí)長(zhǎng)時(shí),所述預(yù)設(shè)倍數(shù)可以為2倍或其他數(shù)值的倍數(shù),此時(shí)人就會(huì)感覺(jué)到音視頻不同步,則判斷此時(shí)音視頻不同步。此時(shí)需要調(diào)整音視頻的輸出,因此需要判斷視頻中是否存在對(duì)視頻播放無(wú)影響的B幀,以便丟棄所述B幀。
確定模塊30,用于若所述視頻中包含B幀,則根據(jù)當(dāng)前播放視頻源文件的第一幀率以及當(dāng)前進(jìn)行視頻播放的第二幀率確定丟棄視頻中的B幀的時(shí)間間隔。
具體地,若視頻中有B幀,則根據(jù)當(dāng)前播放視頻源文件的第一幀率以及當(dāng)前進(jìn)行視頻播放的第二幀率確定丟棄視頻中的B幀的時(shí)間間隔。具體地,確定丟棄視頻中的B幀的時(shí)間間隔的步驟可以包括:
步驟一,根據(jù)終端芯片的性能確定終端支持的第三幀率;
步驟二,判斷所述第二幀率是否小于所述第三幀率;
步驟三,在所述第二幀率大于或等于所述第三幀率時(shí),對(duì)所述第三幀率增加預(yù)設(shè)增量,以更新所述第三幀率,并繼續(xù)執(zhí)行步驟二;
步驟四,在所述第二幀率小于所述第三幀率時(shí),判斷所述第二幀率與預(yù)設(shè)值的和是否大于所述第三幀率;
步驟五,在所述第二幀率與預(yù)設(shè)值的和小于或等于所述第三幀率時(shí),計(jì)算所述第二幀率以及所述第三幀率的平均值,并根據(jù)所述平均值以及所述第一幀率計(jì)算所述時(shí)間間隔;
步驟六,在所述第二幀率與預(yù)設(shè)值的和大于所述第三幀率時(shí),對(duì)所述第三幀率減去所述預(yù)設(shè)增量,以更新所述第三幀率,并繼續(xù)執(zhí)行步驟一。
第一丟棄模塊40,用于按照所述時(shí)間間隔丟棄B幀,以使視頻源文件的幀率達(dá)到當(dāng)前進(jìn)行視頻播放的幀率。
在計(jì)算得到所述時(shí)間間隔之后,按照所述時(shí)間間隔丟棄B幀,以使視頻源文件的幀率達(dá)到當(dāng)前進(jìn)行視頻播放的幀率。
本發(fā)明提出的音視頻丟幀裝置,通過(guò)實(shí)時(shí)或定時(shí)獲取當(dāng)前播放時(shí)刻的音頻幀時(shí)間及視頻幀時(shí)間之間的時(shí)間差;當(dāng)所述時(shí)差的絕對(duì)值大于或等于預(yù)設(shè)時(shí)長(zhǎng)時(shí),判斷所述視頻中是否包含B幀,其中,所述預(yù)設(shè)時(shí)長(zhǎng)為單位視頻幀的顯示時(shí)長(zhǎng)的預(yù)設(shè)倍數(shù);當(dāng)所述視頻中包含B幀時(shí),根據(jù)當(dāng)前播放視頻源文件的第一幀率以及當(dāng)前進(jìn)行視頻播放的第二幀率確定丟棄視頻中的B幀的時(shí)間間隔,并按照所述時(shí)間間隔丟棄B幀,通過(guò)按照時(shí)間間隔丟棄B幀的方式,使視頻源文件的幀率達(dá)到當(dāng)前進(jìn)行視頻播放的幀率,從而實(shí)現(xiàn)音視頻的輸出同步。
進(jìn)一步地,參照?qǐng)D4,基于本發(fā)明音視頻丟幀裝置第一實(shí)施例提出本發(fā)明音視頻丟幀裝置第二實(shí)施例。
在本實(shí)施例中,所述確定模塊30包括:
確定單元31,用于根據(jù)終端芯片的性能確定終端支持的第三幀率;
判斷單元32,用于判斷所述第二幀率是否小于所述第三幀率;
調(diào)整單元33,用于在所述第二幀率大于或等于所述第三幀率時(shí),對(duì)所述第三幀率增加預(yù)設(shè)增量,以更新所述第三幀率;
所述判斷單元32,還用于在所述第二幀率小于所述第三幀率時(shí),判斷所述第二幀率與預(yù)設(shè)值的和是否大于所述第三幀率;
第一計(jì)算單元34,用于在所述第二幀率與預(yù)設(shè)值的和小于或等于所述第三幀率時(shí),計(jì)算所述第二幀率以及所述第三幀率的平均值,并根據(jù)所述平均值以及所述第一幀率計(jì)算所述時(shí)間間隔;
所述調(diào)整單元33,還用于在所述第二幀率與預(yù)設(shè)值的和大于所述第三幀率時(shí),對(duì)所述第三幀率減去所述預(yù)設(shè)增量,以更新所述第三幀率。
在本實(shí)施例中,計(jì)算所述丟棄視頻中的B幀的時(shí)間間隔具體步驟可以為:
步驟一,根據(jù)終端芯片的性能確定終端支持的第三幀率,具體地,所述第三幀率為根據(jù)終端芯片的性能直接確定的幀率,不同的終端芯片所述支持的幀率一般情況下不相同,在此不再一一贅述;
步驟二,判斷所述第二幀率是否小于所述第三幀率;
步驟三,在所述第二幀率大于或等于所述第三幀率時(shí),對(duì)所述第三幀率增加預(yù)設(shè)增量,以更新所述第三幀率,并繼續(xù)執(zhí)行步驟二;具體地,所述預(yù)設(shè)增量可以為1,具體實(shí)施過(guò)程中還可以采用除1以外的數(shù)值。
步驟四,在所述第二幀率小于所述第三幀率時(shí),判斷所述第二幀率與預(yù)設(shè)值的和是否大于所述第三幀率;具體地,所述預(yù)設(shè)值可以為5,具體實(shí)施過(guò)程中還可以采用除5以外的數(shù)值。
步驟五,在所述第二幀率與預(yù)設(shè)值的和小于或等于所述第三幀率時(shí),計(jì)算所述第二幀率以及所述第三幀率的平均值,并根據(jù)所述平均值以及所述第一幀率計(jì)算所述時(shí)間間隔;具體地,根據(jù)所述平均值以及所述第一幀率計(jì)算所述時(shí)間間隔的方法具體為:將所述第一幀率與所述平均值相減,獲得差值,然后將1000除以所述差值,即可獲得所述時(shí)間間隔。
步驟六,在所述第二幀率與預(yù)設(shè)值的和大于所述第三幀率時(shí),對(duì)所述第三幀率減去所述預(yù)設(shè)增量,以更新所述第三幀率,并繼續(xù)執(zhí)行步驟一。
本實(shí)施例提出的音視頻丟幀裝置,通過(guò)所述第一幀率、第二幀率及第二幀率計(jì)算得到丟棄視頻中的B幀的時(shí)間間隔,以便后續(xù)播放過(guò)程中根據(jù)所述時(shí)間間隔精準(zhǔn)、實(shí)時(shí)地丟棄視頻中的B幀,從而實(shí)現(xiàn)精準(zhǔn)、實(shí)時(shí)控制丟棄對(duì)視頻播放無(wú)影響的B幀,以調(diào)整音視頻同步輸出。
進(jìn)一步地,基于本發(fā)明音視頻丟幀裝置第一實(shí)施例提出本發(fā)明音視頻丟幀裝置第三實(shí)施例。
在本實(shí)施例中,所述裝置還包括:
播放模塊50,用于若視頻中沒(méi)有B幀,則播放下一個(gè)I幀。
在本實(shí)施例中,若視頻中沒(méi)有B幀,則需要播放下一個(gè)I幀,以調(diào)整音視頻的輸出同步。
進(jìn)一步地,參照?qǐng)D5,基于本發(fā)明音視頻丟幀裝置第一實(shí)施例提出本發(fā)明音視頻丟幀裝置第四實(shí)施例。
在本實(shí)施例中,所述裝置還包括:
對(duì)比模塊60,用于實(shí)時(shí)對(duì)比當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間;
第二丟棄模塊70,用于當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間的時(shí)間差大于第一預(yù)設(shè)時(shí)間時(shí),則丟棄視頻源文件中的B幀;
所述播放模塊50,還用于當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間的時(shí)間差大于第二預(yù)設(shè)時(shí)間時(shí),則播放下一個(gè)I幀,其中,所述第一預(yù)設(shè)時(shí)間小于所述第二預(yù)設(shè)時(shí)間。
在本實(shí)施例中,當(dāng)當(dāng)前播放視頻的緩沖時(shí)間過(guò)長(zhǎng)時(shí),也會(huì)出現(xiàn)音視頻不同步的情況,因此也需要丟棄視頻中的B幀,或者播放下一個(gè)I幀,以實(shí)現(xiàn)音視頻同步輸出。具體地,首先實(shí)時(shí)對(duì)比當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間;當(dāng)當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間的時(shí)間差大于第一預(yù)設(shè)時(shí)間時(shí),則丟棄視頻源文件中的B幀;當(dāng)當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間的時(shí)間差大于第二預(yù)設(shè)時(shí)間時(shí),則播放下一個(gè)I幀,其中,所述第一預(yù)設(shè)時(shí)間小于所述第二預(yù)設(shè)時(shí)間。所述第一預(yù)設(shè)時(shí)間可以為100ms,所述第二預(yù)設(shè)時(shí)間可以為500ms,具體實(shí)施過(guò)程中還可以將所述第一預(yù)設(shè)時(shí)間及所述第二預(yù)設(shè)時(shí)間設(shè)置為其他值。
本實(shí)施例提出的音視頻丟幀裝置,通過(guò)實(shí)時(shí)對(duì)比當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間;當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間的時(shí)間差大于第一預(yù)設(shè)時(shí)間時(shí),則丟棄視頻源文件中的B幀;當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間的時(shí)間差大于第二預(yù)設(shè)時(shí)間時(shí),則播放下一個(gè)I幀,其中,所述第一預(yù)設(shè)時(shí)間小于所述第二預(yù)設(shè)時(shí)間,從而實(shí)現(xiàn)視頻中的音視頻同步輸出。
進(jìn)一步地,參照?qǐng)D6,基于本發(fā)明音視頻丟幀裝置第四實(shí)施例提出本發(fā)明音視頻丟幀裝置第五實(shí)施例。
在本實(shí)施例中,所述第二丟棄模塊70可以包括:
第二計(jì)算單元71,用于通過(guò)當(dāng)前播放視頻的第二幀率與當(dāng)前播放視頻源文件的第一幀率計(jì)算需要丟棄的B幀數(shù)量;
丟棄單元72,用于根據(jù)計(jì)算得到的需要丟棄的B幀數(shù)量在視頻源文件中丟棄對(duì)應(yīng)的B幀。
在本實(shí)施例中,可以通過(guò)當(dāng)前播放視頻的第二幀率與當(dāng)前播放視頻源文件的第一幀率計(jì)算需要丟棄的B幀數(shù)量,然后根據(jù)計(jì)算得到的需要丟棄的B幀數(shù)量在視頻源文件中丟棄對(duì)應(yīng)的B幀。通過(guò)當(dāng)前播放視頻的第二幀率與當(dāng)前播放視頻源文件的第一幀率計(jì)算需要丟棄的B幀數(shù)量為現(xiàn)有的通用技術(shù),在此不再一一贅述。
本實(shí)施例提出的音視頻丟幀裝置,首先通過(guò)當(dāng)前播放視頻的第二幀率與當(dāng)前播放視頻源文件的第一幀率計(jì)算需要丟棄的B幀數(shù)量;然后根據(jù)計(jì)算得到的需要丟棄的B幀數(shù)量在視頻源文件中丟棄對(duì)應(yīng)的B幀,避免丟棄過(guò)多的B幀,造成播放的不連續(xù)和停頓的現(xiàn)象。
為了更好地理解本發(fā)明所提供的音視頻丟幀裝置,在此簡(jiǎn)單描述本發(fā)明音視頻丟幀裝置在視頻播放系統(tǒng)中所處的位置,在視頻播放系統(tǒng)應(yīng)用層中,包括視頻播放器應(yīng)用程序及媒體播放器在本地框架層中包括了媒體播放器服務(wù)。具體的多媒體播放框架為:將視頻數(shù)據(jù)源文件輸出至視頻文件解析模塊進(jìn)行解析,然后通過(guò)多路分配器進(jìn)行調(diào)用,然后輸出需要丟棄的B幀,最后通過(guò)音視頻解碼器進(jìn)行解碼后輸出。本發(fā)明所提供的校驗(yàn)音視頻同步的丟幀裝置能夠?qū)σ曨l文件進(jìn)行解析,丟棄視頻中的B幀,進(jìn)而實(shí)現(xiàn)音視頻同步輸出。
本發(fā)明進(jìn)一步提供一種音視頻丟幀方法。
參照?qǐng)D7,圖7為本發(fā)明音視頻丟幀第一實(shí)施例的流程示意圖。
在本實(shí)施例中,所述方法包括:
步驟S10,實(shí)時(shí)或定時(shí)獲取當(dāng)前播放時(shí)刻的音頻幀時(shí)間及視頻幀時(shí)間之間的時(shí)間差。
在本實(shí)施例中,當(dāng)移動(dòng)終端播放的視頻出現(xiàn)音視頻播放不同步的情況,并且視頻圖像解碼時(shí)長(zhǎng)大于圖像的顯示時(shí)長(zhǎng)時(shí),需要調(diào)整音視頻的輸出。首先觸發(fā)開(kāi)啟音視頻丟幀同步機(jī)制的指令,移動(dòng)終端根據(jù)所述指令實(shí)時(shí)或定時(shí)獲取當(dāng)前播放時(shí)刻的音頻幀時(shí)間及視頻幀時(shí)間,并計(jì)算所述當(dāng)前播放時(shí)刻的音頻幀時(shí)間及視頻幀時(shí)間之間的時(shí)間差。在視頻編碼序列中,主要有三種編碼幀:I幀、P幀、B幀。其中:I幀即Intra-codedpicture(幀內(nèi)編碼圖像幀),不參考其他圖像幀,只利用本幀的信息進(jìn)行編碼。P幀即Predictive-codedPicture(預(yù)測(cè)編碼圖像幀),利用之前的I幀或P幀,采用運(yùn)動(dòng)預(yù)測(cè)的方式進(jìn)行幀間預(yù)測(cè)編碼。B幀即Bidirectionallypredictedpicture(雙向預(yù)測(cè)編碼圖像幀),提供最高的壓縮比,它既需要之前的圖像幀(I幀或P幀),也需要后來(lái)的圖像幀(P幀),采用運(yùn)動(dòng)預(yù)測(cè)的方式進(jìn)行幀間雙向預(yù)測(cè)編碼,一般情況下,B幀僅用于記錄本幀與前后幀的差值,因此在視頻播放過(guò)程中,當(dāng)出現(xiàn)音視頻不同步時(shí),一般將視頻中對(duì)應(yīng)的B幀丟棄。
步驟S20,若所述時(shí)差的絕對(duì)值大于或等于預(yù)設(shè)時(shí)長(zhǎng),則判斷所述視頻中是否包含B幀,所述預(yù)設(shè)時(shí)長(zhǎng)為單位視頻幀的顯示時(shí)長(zhǎng)的預(yù)設(shè)倍數(shù)。
在本實(shí)施例中,首先將所述音頻幀時(shí)間與視頻幀時(shí)間之間的時(shí)差的絕對(duì)值與預(yù)設(shè)時(shí)長(zhǎng)進(jìn)行對(duì)比,所述預(yù)設(shè)時(shí)長(zhǎng)為單位視頻幀的顯示時(shí)長(zhǎng)的預(yù)設(shè)倍數(shù)。若所述時(shí)差的絕對(duì)值大于或等于預(yù)設(shè)時(shí)長(zhǎng),即當(dāng)音視頻幀相差預(yù)設(shè)倍數(shù)個(gè)連續(xù)視頻幀顯示時(shí)長(zhǎng)時(shí),所述預(yù)設(shè)倍數(shù)可以為2倍或其他數(shù)值的倍數(shù),此時(shí)人就會(huì)感覺(jué)到音視頻不同步,則判斷此時(shí)音視頻不同步。此時(shí)需要調(diào)整音視頻的輸出,因此需要判斷視頻中是否存在對(duì)視頻播放無(wú)影響的B幀,以便丟棄所述B幀。
步驟S30,若所述視頻中包含B幀,則根據(jù)當(dāng)前播放視頻源文件的第一幀率以及當(dāng)前進(jìn)行視頻播放的第二幀率確定丟棄視頻中的B幀的時(shí)間間隔。
具體地,若視頻中有B幀,則根據(jù)當(dāng)前播放視頻源文件的第一幀率以及當(dāng)前進(jìn)行視頻播放的第二幀率確定丟棄視頻中的B幀的時(shí)間間隔。具體地,確定丟棄視頻中的B幀的時(shí)間間隔的步驟可以包括:
步驟一,根據(jù)終端芯片的性能確定終端支持的第三幀率;
步驟二,判斷所述第二幀率是否小于所述第三幀率;
步驟三,在所述第二幀率大于或等于所述第三幀率時(shí),對(duì)所述第三幀率增加預(yù)設(shè)增量,以更新所述第三幀率,并繼續(xù)執(zhí)行步驟二;
步驟四,在所述第二幀率小于所述第三幀率時(shí),判斷所述第二幀率與預(yù)設(shè)值的和是否大于所述第三幀率;
步驟五,在所述第二幀率與預(yù)設(shè)值的和小于或等于所述第三幀率時(shí),計(jì)算所述第二幀率以及所述第三幀率的平均值,并根據(jù)所述平均值以及所述第一幀率計(jì)算所述時(shí)間間隔;
步驟六,在所述第二幀率與預(yù)設(shè)值的和大于所述第三幀率時(shí),對(duì)所述第三幀率減去所述預(yù)設(shè)增量,以更新所述第三幀率,并繼續(xù)執(zhí)行步驟一。
步驟S40,按照所述時(shí)間間隔丟棄B幀,以使視頻源文件的幀率達(dá)到當(dāng)前進(jìn)行視頻播放的幀率。
在計(jì)算得到所述時(shí)間間隔之后,按照所述時(shí)間間隔丟棄B幀,以使視頻源文件的幀率達(dá)到當(dāng)前進(jìn)行視頻播放的幀率。
本發(fā)明提出的音視頻丟幀方法,通過(guò)實(shí)時(shí)或定時(shí)獲取當(dāng)前播放時(shí)刻的音頻幀時(shí)間及視頻幀時(shí)間之間的時(shí)間差;當(dāng)所述時(shí)差的絕對(duì)值大于或等于預(yù)設(shè)時(shí)長(zhǎng)時(shí),判斷所述視頻中是否包含B幀,其中,所述預(yù)設(shè)時(shí)長(zhǎng)為單位視頻幀的顯示時(shí)長(zhǎng)的預(yù)設(shè)倍數(shù);當(dāng)所述視頻中包含B幀時(shí),根據(jù)當(dāng)前播放視頻源文件的第一幀率以及當(dāng)前進(jìn)行視頻播放的第二幀率確定丟棄視頻中的B幀的時(shí)間間隔,并按照所述時(shí)間間隔丟棄B幀,通過(guò)按照時(shí)間間隔丟棄B幀的方式,使視頻源文件的幀率達(dá)到當(dāng)前進(jìn)行視頻播放的幀率,從而實(shí)現(xiàn)音視頻的輸出同步。
進(jìn)一步地,參照?qǐng)D8,基于本發(fā)明音視頻丟幀方法第一實(shí)施例提出本發(fā)明音視頻丟幀方法第二實(shí)施例。
在本實(shí)施例中,所述步驟S30包括:
步驟S31,根據(jù)終端芯片的性能確定終端支持的第三幀率;
步驟S32,判斷所述第二幀率是否小于所述第三幀率;
步驟S33,在所述第二幀率大于或等于所述第三幀率時(shí),對(duì)所述第三幀率增加預(yù)設(shè)增量,以更新所述第三幀率,并繼續(xù)執(zhí)行所述判斷所述第二幀率是否小于所述第三幀率的步驟;
步驟S34,在所述第二幀率小于所述第三幀率時(shí),判斷所述第二幀率與預(yù)設(shè)值的和是否大于所述第三幀率;
步驟S35,在所述第二幀率與預(yù)設(shè)值的和小于或等于所述第三幀率時(shí),計(jì)算所述第二幀率以及所述第三幀率的平均值,并根據(jù)所述平均值以及所述第一幀率計(jì)算所述時(shí)間間隔;
步驟S36,在所述第二幀率與預(yù)設(shè)值的和大于所述第三幀率時(shí),對(duì)所述第三幀率減去所述預(yù)設(shè)增量,以更新所述第三幀率,并繼續(xù)執(zhí)行所述判斷所述第二幀率是否小于所述第三幀率的步驟。
在本實(shí)施例中,計(jì)算所述丟棄視頻中的B幀的時(shí)間間隔具體步驟可以為:
步驟一,根據(jù)終端芯片的性能確定終端支持的第三幀率,具體地,所述第三幀率為根據(jù)終端芯片的性能直接確定的幀率,不同的終端芯片所述支持的幀率一般情況下不相同,在此不再一一贅述;
步驟二,判斷所述第二幀率是否小于所述第三幀率;
步驟三,在所述第二幀率大于或等于所述第三幀率時(shí),對(duì)所述第三幀率增加預(yù)設(shè)增量,以更新所述第三幀率,并繼續(xù)執(zhí)行步驟二;具體地,所述預(yù)設(shè)增量可以為1,具體實(shí)施過(guò)程中還可以采用除1以外的數(shù)值。
步驟四,在所述第二幀率小于所述第三幀率時(shí),判斷所述第二幀率與預(yù)設(shè)值的和是否大于所述第三幀率;具體地,所述預(yù)設(shè)值可以為5,具體實(shí)施過(guò)程中還可以采用除5以外的數(shù)值。
步驟五,在所述第二幀率與預(yù)設(shè)值的和小于或等于所述第三幀率時(shí),計(jì)算所述第二幀率以及所述第三幀率的平均值,并根據(jù)所述平均值以及所述第一幀率計(jì)算所述時(shí)間間隔;具體地,根據(jù)所述平均值以及所述第一幀率計(jì)算所述時(shí)間間隔的方法具體為:將所述第一幀率與所述平均值相減,獲得差值,然后將1000除以所述差值,即可獲得所述時(shí)間間隔。
步驟六,在所述第二幀率與預(yù)設(shè)值的和大于所述第三幀率時(shí),對(duì)所述第三幀率減去所述預(yù)設(shè)增量,以更新所述第三幀率,并繼續(xù)執(zhí)行步驟一。
本實(shí)施例提出的音視頻丟幀方法,通過(guò)所述第一幀率、第二幀率及第二幀率計(jì)算得到丟棄視頻中的B幀的時(shí)間間隔,以便后續(xù)播放過(guò)程中根據(jù)所述時(shí)間間隔精準(zhǔn)、實(shí)時(shí)地丟棄視頻中的B幀,從而實(shí)現(xiàn)精準(zhǔn)、實(shí)時(shí)控制丟棄對(duì)視頻播放無(wú)影響的B幀,以調(diào)整音視頻同步輸出。
進(jìn)一步地,基于本發(fā)明音視頻丟幀方法第一實(shí)施例提出本發(fā)明音視頻丟幀方法第三實(shí)施例。
在本實(shí)施例中,所述方法還包括:
若視頻中沒(méi)有B幀,則播放下一個(gè)I幀。
在本實(shí)施例中,若視頻中沒(méi)有B幀,則需要播放下一個(gè)I幀,以調(diào)整音視頻的輸出同步。
進(jìn)一步地,參照?qǐng)D9,基于本發(fā)明音視頻丟幀方法第三實(shí)施例提出本發(fā)明音視頻丟幀方法第四實(shí)施例。
在本實(shí)施例中,所述方法還包括:
S50,實(shí)時(shí)對(duì)比當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間;
S60,當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間的時(shí)間差大于第一預(yù)設(shè)時(shí)間時(shí),則丟棄視頻源文件中的B幀;
S70,當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間的時(shí)間差大于第二預(yù)設(shè)時(shí)間時(shí),則播放下一個(gè)I幀,其中,所述第一預(yù)設(shè)時(shí)間小于所述第二預(yù)設(shè)時(shí)間。
在本實(shí)施例中,當(dāng)當(dāng)前播放視頻的緩沖時(shí)間過(guò)長(zhǎng)時(shí),也會(huì)出現(xiàn)音視頻不同步的情況,因此也需要丟棄視頻中的B幀,或者播放下一個(gè)I幀,以實(shí)現(xiàn)音視頻同步輸出。具體地,首先實(shí)時(shí)對(duì)比當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間;當(dāng)當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間的時(shí)間差大于第一預(yù)設(shè)時(shí)間時(shí),則丟棄視頻源文件中的B幀;當(dāng)當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間的時(shí)間差大于第二預(yù)設(shè)時(shí)間時(shí),則播放下一個(gè)I幀,其中,所述第一預(yù)設(shè)時(shí)間小于所述第二預(yù)設(shè)時(shí)間。所述第一預(yù)設(shè)時(shí)間可以為100ms,所述第二預(yù)設(shè)時(shí)間可以為500ms,具體實(shí)施過(guò)程中還可以將所述第一預(yù)設(shè)時(shí)間及所述第二預(yù)設(shè)時(shí)間設(shè)置為其他值。
本實(shí)施例提出的音視頻丟幀方法,通過(guò)實(shí)時(shí)對(duì)比當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間;當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間的時(shí)間差大于第一預(yù)設(shè)時(shí)間時(shí),則丟棄視頻源文件中的B幀;當(dāng)前系統(tǒng)播放時(shí)間與實(shí)際播放時(shí)間的時(shí)間差大于第二預(yù)設(shè)時(shí)間時(shí),則播放下一個(gè)I幀,其中,所述第一預(yù)設(shè)時(shí)間小于所述第二預(yù)設(shè)時(shí)間,從而實(shí)現(xiàn)視頻中的音視頻同步輸出。
進(jìn)一步地,參照?qǐng)D10,基于本發(fā)明音視頻丟幀方法第一至第四任一實(shí)施例提出本發(fā)明音視頻丟幀方法第五實(shí)施例。
在本實(shí)施例中,所述步驟S60包括:
步驟S61,通過(guò)當(dāng)前播放視頻的第二幀率與當(dāng)前播放視頻源文件的第一幀率計(jì)算需要丟棄的B幀數(shù)量;
步驟S62,根據(jù)計(jì)算得到的需要丟棄的B幀數(shù)量在視頻源文件中丟棄對(duì)應(yīng)的B幀。
在本實(shí)施例中,可以通過(guò)當(dāng)前播放視頻的第二幀率與當(dāng)前播放視頻源文件的第一幀率計(jì)算需要丟棄的B幀數(shù)量,然后根據(jù)計(jì)算得到的需要丟棄的B幀數(shù)量在視頻源文件中丟棄對(duì)應(yīng)的B幀。通過(guò)當(dāng)前播放視頻的第二幀率與當(dāng)前播放視頻源文件的第一幀率計(jì)算需要丟棄的B幀數(shù)量為現(xiàn)有的通用技術(shù),在此不再一一贅述。
本實(shí)施例提出的音視頻丟幀方法,首先通過(guò)當(dāng)前播放視頻的第二幀率與當(dāng)前播放視頻源文件的第一幀率計(jì)算需要丟棄的B幀數(shù)量;然后根據(jù)計(jì)算得到的需要丟棄的B幀數(shù)量在視頻源文件中丟棄對(duì)應(yīng)的B幀,避免丟棄過(guò)多的B幀,造成播放的不連續(xù)和停頓的現(xiàn)象。
需要說(shuō)明的是,在本文中,術(shù)語(yǔ)“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過(guò)程、方法、物品或者裝置不僅包括那些要素,而且還包括沒(méi)有明確列出的其他要素,或者是還包括為這種過(guò)程、方法、物品或者裝置所固有的要素。在沒(méi)有更多限制的情況下,由語(yǔ)句“包括一個(gè)……”限定的要素,并不排除在包括該要素的過(guò)程、方法、物品或者裝置中還存在另外的相同要素。
上述本發(fā)明實(shí)施例序號(hào)僅僅為了描述,不代表實(shí)施例的優(yōu)劣。
通過(guò)以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到上述實(shí)施例方法可借助軟件加必需的通用硬件平臺(tái)的方式來(lái)實(shí)現(xiàn),當(dāng)然也可以通過(guò)硬件,但很多情況下前者是更佳的實(shí)施方式。基于這樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說(shuō)對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來(lái),該計(jì)算機(jī)軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)(如ROM/RAM、磁碟、光盤(pán))中,包括若干指令用以使得一臺(tái)終端設(shè)備(可以是手機(jī),計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述的方法。
以上僅為本發(fā)明的優(yōu)選實(shí)施例,并非因此限制本發(fā)明的專(zhuān)利范圍,凡是利用本發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專(zhuān)利保護(hù)范圍內(nèi)。