本申請涉及計算機技術(shù)領(lǐng)域,尤其涉及一種基于視音頻與彈幕同步方法及裝置。
背景技術(shù):
隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)直播已經(jīng)成為人們?nèi)粘蕵飞畹闹匾M成部分。
目前,網(wǎng)絡(luò)直播平臺為了滿足不同用戶的觀看需求,通常將所直播的視頻設(shè)置成不同的清晰度(如,超清、高清以及普清)或者不同的觀看線路(線路1、線路2以及線路3)。
而在觀看網(wǎng)絡(luò)直播的過程中,用戶會根據(jù)不同的需求來切換所需的清晰度或者切換所需的線路,當服務(wù)器接收到用戶發(fā)起的切換清晰度的操作后,首先停止發(fā)送切換前清晰度所對應的視頻幀以及聲音,假設(shè)所發(fā)送的最后一個視頻幀為第n幀,然后根據(jù)用戶所選擇的切換后清晰度,確定切換后清晰度所對應的視頻幀以及聲音幀,對視頻幀以及聲音幀進行同步,并發(fā)送同步后的視頻幀以及聲音幀。
但是,通常而言,切換后的直播視頻會有一定的延遲,也就是說,假設(shè)切換前的最后一幀是第n幀,那么切換后的直播視頻則是從第(n-3)幀開始播放,而對于存在彈幕的網(wǎng)絡(luò)直播而言,由于彈幕服務(wù)器與視音頻服務(wù)器不是同一個服務(wù)器,因此,雖然切換后的直播視頻由于存在延遲而不是當前最新的,但是彈幕確實是實時最新的,這樣會導致彈幕與直播視頻不匹配。
技術(shù)實現(xiàn)要素:
本申請實施例提供一種視音頻與彈幕同步方法及裝置,用以解決現(xiàn)有技術(shù)中用戶在觀看網(wǎng)絡(luò)直播的過程中,執(zhí)行切換清晰度操作后所導致的彈幕與直播視頻不匹配的問題。
本申請實施例提供的一種視音頻與彈幕同步方法,包括:
接收用戶執(zhí)行的指定切換操作;
停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻;
獲取執(zhí)行指定切換操作后所對應的待同步的視頻與音頻;
對獲取到的待同步的視頻與音頻進行同步;
獲取彈幕,并對所述彈幕與同步后的視頻和音頻進行同步。
優(yōu)選地,所述指定切換操作包括:清晰度切換操作或線路切換操作中的一個。
優(yōu)選地,當停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻時,所述方法還包括:記錄最后一幀所對應的視頻時間戳以及音頻時間戳。獲取執(zhí)行指定切換操作后所對應的待同步的視頻與音頻,具體包括:根據(jù)最后一幀所對應的視頻時間戳,在執(zhí)行指定切換操作后所對應的視頻中確定與所述最后一幀對應的視頻幀,將與所述最后一幀對應的視頻幀的前一視頻幀之后的所有視頻幀作為待同步的視頻,并獲取該待同步的視頻,根據(jù)最后一幀所對應的音頻時間戳,在執(zhí)行指定切換操作后所對應的音頻中確定與所述最后一幀對應的音頻幀,將與所述最后一幀對應的音頻幀前一音頻幀之后的所有音頻幀作為待同步的音頻,并獲取該待同步的音頻。
優(yōu)選地,根據(jù)與所述最后一幀對應的視頻幀的前一視頻幀以及與所述最后一幀對應的音頻幀的前一音頻幀,對獲取到的待同步的視頻與音頻進行同步。
優(yōu)選地,當停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻時,所述方法還包括:記錄最后一幀所對應的視頻時間戳以及音頻時間戳;獲取執(zhí)行指定切換操作后所對應的待同步的視頻與音頻,具體包括:將最后一幀所對應的視頻時間戳前n秒內(nèi)的所有視頻幀以及最后一幀所對應的視頻時間戳之后的所有視頻幀作為待同步的視頻,并獲取該待同步的視頻,將最后一幀所對應的音頻時間戳前n秒內(nèi)的所有音頻幀以及最后一幀所對應的音頻時間戳之后的所有音頻幀作為待同步的音頻,并獲取該待同步的音頻,其中所述n為大于0的任何數(shù)。
優(yōu)選地,根據(jù)最后一幀所對應的視頻時間戳前n秒內(nèi)的視頻幀以及最后一幀所對應的音頻時間戳前n秒內(nèi)音頻幀,對獲取到的待同步的視頻與音頻進行同步。
優(yōu)選地,當停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻時,所述方法還包括:記錄最后一幀所對應的視頻時間戳;獲取彈幕具體包括:獲取最后一幀所對應的視頻時間戳后n秒內(nèi)的所有視音頻幀,獲取最后一幀所對應的視頻時間戳后n秒內(nèi)的所有彈幕,其中,所述彈幕攜帶有彈幕時間戳,所述n為大于0的任何數(shù)。
優(yōu)選地,當獲取到的彈幕的數(shù)量超過預設(shè)閾值時,按照獲取到的視頻幀和音頻幀的播放順序,依次針對獲取到的每個視頻幀和音頻幀,計算該視頻幀和音頻幀與所獲取的每個彈幕時間戳的差值,確定各差值中最小的差值所對應的彈幕時間戳,將該視頻幀和音頻幀與確定出的彈幕時間戳所對應的彈幕進行匹配。
優(yōu)選地,所述方法還包括:當獲取到的彈幕的數(shù)量未超過預設(shè)閾值時,直接從最后一幀對應的視音頻幀開始播放同步后的視音頻。
本申請實施例提供的一種視音頻與彈幕同步裝置,包括:
接收模塊,用于接收用戶執(zhí)行的指定切換操作;
停止發(fā)送模塊,用于停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻;
獲取模塊,用于獲取執(zhí)行指定切換操作后所對應的待同步的視頻與音頻;
第一同步模塊,用于對獲取到的待同步的視頻與音頻進行同步;
第二同步模塊,用于獲取彈幕,并對所述彈幕與同步后的視頻和音頻進行同步。
優(yōu)選地,所述指定切換操作包括:清晰度切換操作或線路切換操作中的一個。
優(yōu)選地,所述裝置還包括:記錄模塊,用于當所述停止發(fā)送模塊停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻時,記錄最后一幀所對應的視頻時間戳以及音頻時間戳;所述獲取模塊具體用于,根據(jù)最后一幀所對應的視頻時間戳,在執(zhí)行指定切換操作后所對應的視頻中確定與所述最后一幀對應的視頻幀,將與所述最后一幀對應的視頻幀的前一視頻幀之后的所有視頻幀作為待同步的視頻,并獲取該待同步的視頻;根據(jù)最后一幀所對應的音頻時間戳,在執(zhí)行指定切換操作后所對應的音頻中確定與所述最后一幀對應的音頻幀,將與所述最后一幀對應的音頻幀前一音頻幀之后的所有音頻幀作為待同步的音頻,并獲取該待同步的音頻。
優(yōu)選地,所述第一同步模塊具體用于,根據(jù)與所述最后一幀對應的視頻幀的前一視頻幀以及與所述最后一幀對應的音頻幀的前一音頻幀,對獲取到的待同步的視頻與音頻進行同步。
優(yōu)選地,所述記錄模塊還用于,當所述停止發(fā)送模塊停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻時,記錄最后一幀所對應的視頻時間戳以及音頻時間戳;所述獲取模塊具體用于,將最后一幀所對應的視頻時間戳前n秒內(nèi)的所有視頻幀以及最后一幀所對應的視頻時間戳之后的所有視頻幀作為待同步的視頻,并獲取該待同步的視頻,將最后一幀所對應的音頻時間戳前n秒內(nèi)的所有音頻幀以及最后一幀所對應的音頻時間戳之后的所有音頻幀作為待同步的音頻,并獲取該待同步的音頻,其中所述n為大于0的任何數(shù)。
優(yōu)選地,所述第一同步模塊具體用于,根據(jù)最后一幀所對應的視頻時間戳前n秒內(nèi)的視頻幀以及最后一幀所對應的音頻時間戳前n秒內(nèi)音頻幀,對獲取到的待同步的視頻與音頻進行同步。
優(yōu)選地,所述記錄模塊還用于,當所述停止發(fā)送模塊停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻時,記錄最后一幀所對應的視頻時間戳;所述第二同步模塊具體用于,獲取最后一幀所對應的視頻時間戳后n秒內(nèi)的所有視音頻幀,獲取最后一幀所對應的視頻時間戳后n秒內(nèi)的所有彈幕,其中,所述彈幕攜帶有彈幕時間戳,所述n為大于0的任何數(shù)。
優(yōu)選地,所述第二同步模塊具體用于,當獲取到的彈幕的數(shù)量超過預設(shè)閾值時,按照獲取到的視頻幀和音頻幀的播放順序,依次針對獲取到的每個視頻幀和音頻幀,計算該視頻幀和音頻幀與所獲取的每個彈幕時間戳的差值,確定各差值中最小的差值所對應的彈幕時間戳,將該視頻幀和音頻幀與確定出的彈幕時間戳所對應的彈幕進行匹配。
優(yōu)選地,所述第二同步模塊還用于,當獲取到的彈幕的數(shù)量未超過預設(shè)閾值時,直接從最后一幀對應的視音頻幀開始播放同步后的視音頻。
本申請實施例提供一種視音頻與彈幕同步方法及裝置,該方法包括:接收用戶執(zhí)行的指定切換操作,停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻,獲取執(zhí)行指定切換操作后所對應的待同步的視頻與音頻,對獲取到的待同步的視頻與音頻進行同步,獲取彈幕,并對所述彈幕與同步后的視頻和音頻進行同步。通過上述方法,在將同步后的視音頻通過客戶端展示給觀眾之前,需要將同步后的視音頻與彈幕進行同步,從而使得彈幕、音頻與視頻三者之間一一對應匹配。
附圖說明
此處所說明的附圖用來提供對本申請的進一步理解,構(gòu)成本申請的一部分,本申請的示意性實施例及其說明用于解釋本申請,并不構(gòu)成對本申請的不當限定。在附圖中:
圖1為本申請實施例提供的視音頻與彈幕同步的過程示意圖;
圖2為本申請實施例提供的視音頻與彈幕同步裝置的結(jié)構(gòu)示意圖;
圖3為本申請實施例提供的視音頻與彈幕同步系統(tǒng)組成結(jié)構(gòu)框圖。
具體實施方式
為使本申請的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合本申請具體實施例及相應的附圖對本申請技術(shù)方案進行清楚、完整地描述。顯然,所描述的實施例僅是本申請一部分實施例,而不是全部的實施例?;诒旧暾堉械膶嵤├?,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本申請保護的范圍。
圖1為本申請實施例提供的視音頻與彈幕同步過程,具體包括以下步驟:
s101:接收用戶執(zhí)行的指定切換操作。
在實際應用中,網(wǎng)絡(luò)直播平臺為了滿足不同用戶的觀看需求,通常將所直播的視頻設(shè)置成不同的清晰度(如,超清、高清以及普清)或者不同的觀看線路(線路1、線路2以及線路3)。
而用戶在觀看網(wǎng)絡(luò)直播的過程中,會根據(jù)不同的需求來切換所需的清晰度或者切換所需的線路,也就是向服務(wù)器發(fā)送指定切換操作,服務(wù)器在接收到用戶發(fā)送的指定切換操作后,會執(zhí)行相應的操作。
在此需要說明的是,所述指定切換操作指的是能夠觸發(fā)視音頻與彈幕進行同步的操作,可以是清晰度切換操作,也可以是線路切換操作,當然也可以是其他指定切換操作,在此不再一一贅述。
s102:停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻。
服務(wù)器在接收到用戶執(zhí)行的指定切換操作后,會立刻停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻,也就是說,立刻停止發(fā)送當前正在向用戶發(fā)送,并通過客戶端展示的視頻與音頻。
s103:獲取執(zhí)行指定切換操作后所對應的待同步的視頻與音頻。
服務(wù)器在停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻后,會向視音頻服務(wù)器發(fā)送獲取執(zhí)行指定切換操作后所對應的待同步的視頻與音頻的請求,并從視音頻服務(wù)器那里獲取執(zhí)行指定切換操作后所對應的待同步的視頻與音頻。
進一步的,在獲取執(zhí)行指定切換操作后所對應的待同步的視頻與音頻的過程中,由于需要知道執(zhí)行指定切換操作后所對應的待同步的視頻與音頻到底是哪個,因此,在本申請中,在步驟s102中,除了停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻,還需要記錄最后一幀所對應的視頻時間戳以及音頻時間戳,也就是說,在停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻的同時,需要記錄最后一幀所對應的視頻時間戳以及音頻時間戳。
在此需要說明的是,執(zhí)行指定切換操作前的視頻中某一幀的時間戳與執(zhí)行指定切換操作后的視頻中某一幀的時間戳是相同的,那么這兩幀的畫面是相同的,且這兩幀也是相互對應的,反之亦然。
進一步的,本申請基于記錄最后一幀所對應的視頻時間戳以及音頻時間戳,提供了兩種獲取執(zhí)行指定切換操作后所對應的待同步的視頻與音頻的方式,具體如下:
第一種方式:根據(jù)最后一幀所對應的視頻時間戳,在執(zhí)行指定切換操作后所對應的視頻中確定與所述最后一幀對應的視頻幀,將與所述最后一幀對應的視頻幀的前一視頻幀之后的所有視頻幀作為待同步的視頻,并獲取該待同步的視頻,根據(jù)最后一幀所對應的音頻時間戳,在執(zhí)行指定切換操作后所對應的音頻中確定與所述最后一幀對應的音頻幀,將與所述最后一幀對應的音頻幀前一音頻幀之后的所有音頻幀作為待同步的音頻,并獲取該待同步的音頻。
第二種方式:將最后一幀所對應的視頻時間戳前n秒內(nèi)的所有視頻幀以及最后一幀所對應的視頻時間戳之后的所有視頻幀作為待同步的視頻,并獲取該待同步的視頻,將最后一幀所對應的音頻時間戳前n秒內(nèi)的所有音頻幀以及最后一幀所對應的音頻時間戳之后的所有音頻幀作為待同步的音頻,并獲取該待同步的音頻,其中所述n為大于0的任何數(shù)。
在此需要說明的是,n的具體數(shù)值可以根據(jù)實際情況來設(shè)定,如,可以根據(jù)切換清晰度時視音頻加載的實際延遲時間來設(shè)定,而實際延遲時間跟服務(wù)器返回速度,用戶的網(wǎng)絡(luò)速度以及用戶的機器響應速度均有關(guān)系。
s104:對獲取到的待同步的視頻與音頻進行同步。
服務(wù)器在獲取到執(zhí)行指定切換操作后所對應的待同步的視頻與音頻,需要對待同步的視頻與音頻進行同步。
進一步的,針對步驟s103中的第一種獲取執(zhí)行指定切換操作后所對應的待同步的視頻與音頻的方式,本申請在對待同步的視頻與音頻進行同步的具體方式為:根據(jù)與所述最后一幀對應的視頻幀的前一視頻幀以及與所述最后一幀對應的音頻幀的前一音頻幀,對獲取到的待同步的視頻與音頻進行同步。
針對步驟s103中的第二種獲取執(zhí)行指定切換操作后所對應的待同步的視頻與音頻的方式,本申請在對待同步的視頻與音頻進行同步的具體方式為:根據(jù)最后一幀所對應的視頻時間戳前n秒內(nèi)的視頻幀以及最后一幀所對應的音頻時間戳前n秒內(nèi)音頻幀,對獲取到的待同步的視頻與音頻進行同步。
在此需要說明的是,在第一種對待同步的視頻與音頻進行同步的方式中,將與所述最后一幀對應的視頻幀的前一視頻幀以及與所述最后一幀對應的音頻幀的前一音頻幀進行匹配,當與所述最后一幀對應的視頻幀的前一視頻幀以及與所述最后一幀對應的音頻幀的前一音頻幀匹配完成之后,位于最后一幀對應的視頻幀的前一幀之后的所有視頻幀與位于最后一幀對應的音頻幀的前一幀后的所有音頻幀也實現(xiàn)了同步匹配,另外,在本申請中,也不僅僅局限于匹配緊挨最后一幀的前一幀,也可以獲取最后一幀對應的視頻幀的前倒數(shù)第二幀的視頻幀以及最后一幀對應的音頻幀的前倒數(shù)第二幀的音頻幀,并進行匹配,總之只要是使用最后一幀對應的視頻幀前的視頻幀以及最后一幀對應的音頻幀前的音頻幀即可。
在第二種對待同步的視頻與音頻進行同步的方式中,具體是,匹配最后一幀所對應的視頻時間戳前n秒內(nèi)的視頻幀以及最后一幀所對應的音頻時間戳前n秒內(nèi)音頻幀,也就是,根據(jù)最后一幀所對應的視頻時間戳前n秒內(nèi)的視頻幀,在最后一幀所對應的音頻時間戳前n秒內(nèi)音頻幀中,找到視頻幀相應的音頻幀,可以只先在最后一幀所對應的視頻時間戳前n秒內(nèi)的視頻中確定某一個視頻幀,并根據(jù)該視頻幀,在最后一幀所對應的音頻時間戳前n秒內(nèi)音頻幀中,找到該視頻幀相應的音頻幀,這樣該視頻幀前后的每一個視頻幀也會與相應音頻完成同步匹配,當然,在本申請中,也可以在最后一幀所對應的視頻時間戳前n秒內(nèi)的視頻中確定某兩個視頻幀,并進行匹配,具體找?guī)讉€視頻幀可以根據(jù)實際情況來確定。
在執(zhí)行完成上述同步匹配操作后,執(zhí)行指定切換操作后所對應的視頻與音頻就完成了同步匹配。
s105:獲取彈幕,并對所述彈幕與同步后的視頻和音頻進行同步。
進一步的,在對執(zhí)行指定切換操作后所對應的視頻與音頻完成同步匹配之后,需要獲取彈幕以及同步匹配完成的視音頻幀,并對同步匹配完成的視音頻以及彈幕進行同步。
進一步,由于需要知道獲取哪些彈幕以及視音頻,因此,在本申請中,在停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻的同時,還需要記錄最后一幀所對應的視頻時間戳。
在此需要說明的是,由于同步后的視音頻每一個視音頻幀都是相對應的,是相同的,因此,在本申請中,所記錄的最后一幀所對應的視頻時間戳與視音頻幀的時間戳是對應的。
進一步的,本申請在獲取彈幕以及同步匹配完成的視音頻幀的過程中,具體如下:
獲取最后一幀所對應的視頻時間戳后n秒內(nèi)的所有視音頻幀,從彈幕服務(wù)器中獲取最后一幀所對應的視頻時間戳后n秒內(nèi)的所有彈幕,其中,所述彈幕攜帶有彈幕時間戳,所述n為大于0的任何數(shù)。
在此需要說明的是,本申請中的n是同一個數(shù)值。
進一步的,在獲取到彈幕以及同步匹配完成的視音頻幀后,需要對獲取到的彈幕以及同步匹配完成的視音頻幀進行同步匹配,具體的,當獲取到的彈幕的數(shù)量超過預設(shè)閾值時,按照獲取到的視頻幀和音頻幀的播放順序,依次針對獲取到的每個視頻幀和音頻幀,計算該視頻幀和音頻幀與所獲取的每個彈幕時間戳的差值,確定各差值中最小的差值所對應的彈幕時間戳,將該視頻幀和音頻幀與確定出的彈幕時間戳所對應的彈幕進行匹配。
當獲取到的彈幕的數(shù)量未超過預設(shè)閾值時,直接從最后一幀對應的視音頻幀開始播放同步后的視音頻。
在此需要說明的是,預設(shè)的閾值是根據(jù)實際情況來設(shè)定的。另外,彈幕的數(shù)量未超過預設(shè)閾值包括兩種情況,第一種情況是彈幕的數(shù)量為零,也就是,在n秒內(nèi)并未獲取到彈幕,第二種情況是在n秒內(nèi)有彈幕,但是彈幕的數(shù)量沒有超過預設(shè)的閾值。
在此還需要說明的是,取視頻的50ms間隔的視頻幀最接近的彈幕,誤差在10ms均可,也可以精確到1ms內(nèi),具體看彈幕的密度。
通過上述方法,在將同步后的視音頻通過客戶端展示給觀眾之前,需要將同步后的視音頻與彈幕進行同步,從而使得彈幕、音頻與視頻三者之間一一對應匹配。
以上執(zhí)行步驟可由服務(wù)器完成,也可由客戶端完成。
以上為本申請實施例提供的視音頻與彈幕同步方法,基于同樣的思路,本申請實施例還提供一種視音頻與彈幕同步裝置。
如圖2所示,本申請實施例提供的一種視音頻與彈幕同步裝置包括:
接收模塊201,用于接收用戶執(zhí)行的指定切換操作;
停止發(fā)送模塊202,用于停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻;
獲取模塊203,用于獲取執(zhí)行指定切換操作后所對應的待同步的視頻與音頻;
第一同步模塊204,用于對獲取到的待同步的視頻與音頻進行同步;
第二同步模塊205,用于獲取彈幕,并對所述彈幕與同步后的視頻和音頻進行同步。
所述指定切換操作包括:清晰度切換操作或線路切換操作中的一個。
所述裝置還包括:
記錄模塊206,用于當所述停止發(fā)送模塊202停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻時,記錄最后一幀所對應的視頻時間戳以及音頻時間戳;所述獲取模塊203具體用于,根據(jù)最后一幀所對應的視頻時間戳,在執(zhí)行指定切換操作后所對應的視頻中確定與所述最后一幀對應的視頻幀,將與所述最后一幀對應的視頻幀的前一視頻幀之后的所有視頻幀作為待同步的視頻,并獲取該待同步的視頻;根據(jù)最后一幀所對應的音頻時間戳,在執(zhí)行指定切換操作后所對應的音頻中確定與所述最后一幀對應的音頻幀,將與所述最后一幀對應的音頻幀前一音頻幀之后的所有音頻幀作為待同步的音頻,并獲取該待同步的音頻。
所述第一同步模塊204具體用于,根據(jù)與所述最后一幀對應的視頻幀的前一視頻幀以及與所述最后一幀對應的音頻幀的前一音頻幀,對獲取到的待同步的視頻與音頻進行同步。
所述記錄模塊206還用于,當所述停止發(fā)送模塊202停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻時,記錄最后一幀所對應的視頻時間戳以及音頻時間戳;所述獲取模塊203具體用于,將最后一幀所對應的視頻時間戳前n秒內(nèi)的所有視頻幀以及最后一幀所對應的視頻時間戳之后的所有視頻幀作為待同步的視頻,并獲取該待同步的視頻,將最后一幀所對應的音頻時間戳前n秒內(nèi)的所有音頻幀以及最后一幀所對應的音頻時間戳之后的所有音頻幀作為待同步的音頻,并獲取該待同步的音頻,其中所述n為大于0的任何數(shù)。
所述第一同步模塊204具體用于,根據(jù)最后一幀所對應的視頻時間戳前n秒內(nèi)的視頻幀以及最后一幀所對應的音頻時間戳前n秒內(nèi)音頻幀,對獲取到的待同步的視頻與音頻進行同步。
所述記錄模塊206還用于,當所述停止發(fā)送模塊202停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻時,記錄最后一幀所對應的視頻時間戳;所述第二同步模塊205具體用于,獲取最后一幀所對應的視頻時間戳后n秒內(nèi)的所有視音頻幀,獲取最后一幀所對應的視頻時間戳后n秒內(nèi)的所有彈幕,其中,所述彈幕攜帶有彈幕時間戳,所述n為大于0的任何數(shù)。
所述第二同步模塊205具體用于,當獲取到的彈幕的數(shù)量超過預設(shè)閾值時,按照獲取到的視頻幀和音頻幀的播放順序,依次針對獲取到的每個視頻幀和音頻幀,計算該視頻幀和音頻幀與所獲取的每個彈幕時間戳的差值,確定各差值中最小的差值所對應的彈幕時間戳,將該視頻幀和音頻幀與確定出的彈幕時間戳所對應的彈幕進行匹配。
所述第二同步模塊205還用于,當獲取到的彈幕的數(shù)量未超過預設(shè)閾值時,直接從最后一幀對應的視音頻幀開始播放同步后的視音頻。
另外,本申請實施例還提供一種視音頻與彈幕同步系統(tǒng),該系統(tǒng)包括:
處理器、計算機可讀存儲器、和計算機可讀存儲介質(zhì);
程序,用于接收用戶執(zhí)行的指定切換操作,停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻,獲取執(zhí)行指定切換操作后所對應的待同步的視頻與音頻,對獲取到的待同步的視頻與音頻進行同步,獲取彈幕,并對所述彈幕與同步后的視頻和音頻進行同步。
所述程序存儲在所述計算機可讀存儲介質(zhì)上,用于由所述處理器經(jīng)由所述計算機可讀存儲器執(zhí)行。
所述處理器、計算機可讀存儲器以及所述計算機可讀存儲介質(zhì)可以用圖3中的處理器、內(nèi)部存儲器、外部存儲器來實現(xiàn)。
其中,圖3為視音頻與彈幕同步系統(tǒng)組成結(jié)構(gòu)框圖,其中示出了視音頻與彈幕同步系統(tǒng)的主要部件。圖3中,處理器310、內(nèi)部存儲器305、總線橋320以及網(wǎng)絡(luò)接口315接入系統(tǒng)總線340,總線橋320用于橋接系統(tǒng)總線340和i/o總線345,i/o接口接入i/o總線345,usb接口以及外部存儲器與i/o接口連接。圖3中,處理器310可以為一個或多個處理器,每個處理器可以具有一個或者多個處理器內(nèi)核;內(nèi)部存儲器305為易失性存儲器,例如寄存器、緩存器、各種類型的隨機存取存儲器等;在視音頻與彈幕同步系統(tǒng)運行的時候,內(nèi)部存儲器305中的數(shù)據(jù)包括操作系統(tǒng)和應用程序;網(wǎng)絡(luò)接口315可以為以太網(wǎng)接口、光纖接口等;系統(tǒng)總線340可以用來傳送數(shù)據(jù)信息、地址信息、以及控制信息;總線橋320可以用來進行協(xié)議轉(zhuǎn)換,將系統(tǒng)總線協(xié)議轉(zhuǎn)換為i/o協(xié)議或者將i/o協(xié)議轉(zhuǎn)換為系統(tǒng)總線協(xié)議以實現(xiàn)數(shù)據(jù)傳輸;i/o總線345用來數(shù)據(jù)信息和控制信息,還可以總線終結(jié)電阻或電路來降低信號反射干擾;i/o接口330主要與各種外部設(shè)備連接,例如鍵盤、鼠標、傳感器等等,閃存可以通過usb接口接入i/o總線,外部存儲器為非易失性存儲器,例如硬盤、光盤等。在視音頻與彈幕同步系統(tǒng)運行之后,處理器可以將存儲于外部存儲其中的數(shù)據(jù)讀取到內(nèi)部存儲器中,并對內(nèi)部存儲其中的系統(tǒng)指令進行處理,完成操作系統(tǒng)以及應用程序的功能。該示例視音頻與彈幕同步系統(tǒng)可以為位于臺式機、筆記本電腦、平板電腦、智能手機等。
優(yōu)選地,所述指定切換操作包括:清晰度切換操作或線路切換操作中的一個。
優(yōu)選地,所述程序還用于,當停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻時,所述方法還包括:記錄最后一幀所對應的視頻時間戳以及音頻時間戳。獲取執(zhí)行指定切換操作后所對應的待同步的視頻與音頻,具體包括:根據(jù)最后一幀所對應的視頻時間戳,在執(zhí)行指定切換操作后所對應的視頻中確定與所述最后一幀對應的視頻幀,將與所述最后一幀對應的視頻幀的前一視頻幀之后的所有視頻幀作為待同步的視頻,并獲取該待同步的視頻,根據(jù)最后一幀所對應的音頻時間戳,在執(zhí)行指定切換操作后所對應的音頻中確定與所述最后一幀對應的音頻幀,將與所述最后一幀對應的音頻幀前一音頻幀之后的所有音頻幀作為待同步的音頻,并獲取該待同步的音頻。
優(yōu)選地,所述程序還用于,根據(jù)與所述最后一幀對應的視頻幀的前一視頻幀以及與所述最后一幀對應的音頻幀的前一音頻幀,對獲取到的待同步的視頻與音頻進行同步。
優(yōu)選地,所述程序還用于,當停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻時,所述方法還包括:記錄最后一幀所對應的視頻時間戳以及音頻時間戳;獲取執(zhí)行指定切換操作后所對應的待同步的視頻與音頻,具體包括:將最后一幀所對應的視頻時間戳前n秒內(nèi)的所有視頻幀以及最后一幀所對應的視頻時間戳之后的所有視頻幀作為待同步的視頻,并獲取該待同步的視頻,將最后一幀所對應的音頻時間戳前n秒內(nèi)的所有音頻幀以及最后一幀所對應的音頻時間戳之后的所有音頻幀作為待同步的音頻,并獲取該待同步的音頻,其中所述n為大于0的任何數(shù)。
優(yōu)選地,所述程序還用于,根據(jù)最后一幀所對應的視頻時間戳前n秒內(nèi)的視頻幀以及最后一幀所對應的音頻時間戳前n秒內(nèi)音頻幀,對獲取到的待同步的視頻與音頻進行同步。
優(yōu)選地,所述程序還用于,當停止發(fā)送執(zhí)行指定切換操作前所對應的視頻與音頻時,所述方法還包括:記錄最后一幀所對應的視頻時間戳;獲取彈幕具體包括:獲取最后一幀所對應的視頻時間戳后n秒內(nèi)的所有視音頻幀,獲取最后一幀所對應的視頻時間戳后n秒內(nèi)的所有彈幕,其中,所述彈幕攜帶有彈幕時間戳,所述n為大于0的任何數(shù)。
優(yōu)選地,所述程序還用于,當獲取到的彈幕的數(shù)量超過預設(shè)閾值時,按照獲取到的視頻幀和音頻幀的播放順序,依次針對獲取到的每個視頻幀和音頻幀,計算該視頻幀和音頻幀與所獲取的每個彈幕時間戳的差值,確定各差值中最小的差值所對應的彈幕時間戳,將該視頻幀和音頻幀與確定出的彈幕時間戳所對應的彈幕進行匹配。
優(yōu)選地,所述程序還用于,所述方法還包括:當獲取到的彈幕的數(shù)量未超過預設(shè)閾值時,直接從最后一幀對應的視音頻幀開始播放同步后的視音頻。
在一個典型的配置中,計算設(shè)備包括一個或多個處理器(cpu)、輸入/輸出接口、網(wǎng)絡(luò)接口和內(nèi)存。
內(nèi)存可能包括計算機可讀介質(zhì)中的非永久性存儲器,隨機存取存儲器(ram)和/或非易失性內(nèi)存等形式,如只讀存儲器(rom)或閃存(flashram)。內(nèi)存是計算機可讀介質(zhì)的示例。
計算機可讀介質(zhì)包括永久性和非永久性、可移動和非可移動媒體可以由任何方法或技術(shù)來實現(xiàn)信息存儲。信息可以是計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序的模塊或其他數(shù)據(jù)。計算機的存儲介質(zhì)的例子包括,但不限于相變內(nèi)存(pram)、靜態(tài)隨機存取存儲器(sram)、動態(tài)隨機存取存儲器(dram)、其他類型的隨機存取存儲器(ram)、只讀存儲器(rom)、電可擦除可編程只讀存儲器(eeprom)、快閃記憶體或其他內(nèi)存技術(shù)、只讀光盤只讀存儲器(cd-rom)、數(shù)字多功能光盤(dvd)或其他光學存儲、磁盒式磁帶,磁帶磁磁盤存儲或其他磁性存儲設(shè)備或任何其他非傳輸介質(zhì),可用于存儲可以被計算設(shè)備訪問的信息。按照本文中的界定,計算機可讀介質(zhì)不包括暫存電腦可讀媒體(transitorymedia),如調(diào)制的數(shù)據(jù)信號和載波。
還需要說明的是,術(shù)語“包括”、“包含”或者其任何其他變體意在涵蓋非排他性的包含,從而使得包括一系列要素的過程、方法、商品或者設(shè)備不僅包括那些要素,而且還包括沒有明確列出的其他要素,或者是還包括為這種過程、方法、商品或者設(shè)備所固有的要素。在沒有更多限制的情況下,由語句“包括一個……”限定的要素,并不排除在包括所述要素的過程、方法、商品或者設(shè)備中還存在另外的相同要素。
本領(lǐng)域技術(shù)人員應明白,本申請的實施例可提供為方法、系統(tǒng)或計算機程序產(chǎn)品。因此,本申請可采用完全硬件實施例、完全軟件實施例或結(jié)合軟件和硬件方面的實施例的形式。而且,本申請可采用在一個或多個其中包含有計算機可用程序代碼的計算機可用存儲介質(zhì)(包括但不限于磁盤存儲器、cd-rom、光學存儲器等)上實施的計算機程序產(chǎn)品的形式。
以上所述僅為本申請的實施例而已,并不用于限制本申請。對于本領(lǐng)域技術(shù)人員來說,本申請可以有各種更改和變化。凡在本申請的精神和原理之內(nèi)所作的任何修改、等同替換、改進等,均應包含在本申請的權(quán)利要求范圍之內(nèi)。