本申請涉及視頻播放技術(shù)領(lǐng)域,具體涉及一種彈幕加載方法及系統(tǒng)。
背景技術(shù):
目前在視頻播放中,為了吸引用戶互動、增加趣味,通常會對視頻增加彈幕功能,用戶可以自由發(fā)送彈幕,并且播放進度和彈幕顯示做到大致同步。
通常情況下,應用軟件的播放界面中只有一個視頻在播放,一次性可以加載該視頻的所有彈幕,然后把這些彈幕按時間軸展示在視頻上面。但是在某些特殊情況下,一次性加載所有彈幕的方案會導致占用內(nèi)存過多以及耗費流量過多等問題,例如當一個頁面含有大量視頻,并且每個視頻都帶彈幕時,一次性加載所有彈幕的方案難以滿足減少內(nèi)存占用、降低流量開銷的需求,可能會導致內(nèi)存溢出、手機卡頓、手機無響應,乃至于彈幕實時性效果不好等問題。
除了上述一次性加載所有彈幕的方案外,還存在將所有彈幕壓制到原視頻中的方案,即對原視頻進行重新制作,將所有彈幕按照時間軸壓入到原視頻中,成為視頻的一部分,壓制出新的帶彈幕的視頻。該類方案的缺陷在于,壓制成本高昂,并且由于必須提前進行壓制,無法保證彈幕的實時性。
技術(shù)實現(xiàn)要素:
鑒于現(xiàn)有技術(shù)中的上述缺陷或不足,期望提供一種無需耗費高昂的壓制成本和犧牲彈幕的實時性,即可實現(xiàn)降低彈幕加載的內(nèi)存和流量開銷的彈幕加載方法及系統(tǒng)。
第一方面,本發(fā)明提供一種彈幕加載方法,該方法包括:
在播放視頻的下一播放時段前的預加載時段中,對該下一播放時段的彈幕數(shù)據(jù)進行預加載;
在播放該下一播放時段時同步顯示所預加載的彈幕數(shù)據(jù),返回上一步驟。
第二方面,本發(fā)明提供一種彈幕加載系統(tǒng),該系統(tǒng)包括:
彈幕分段預加載單元,配置用于在播放視頻的下一播放時段前的預加載時段中,對該下一播放時段的彈幕數(shù)據(jù)進行預加載;
彈幕顯示單元,配置用于在播放該下一播放時段時同步顯示所預加載的彈幕數(shù)據(jù)。
第三方面,本發(fā)明還提供一種視頻彈幕同步顯示系統(tǒng),包括上述彈幕加載系統(tǒng),以及視頻播放系統(tǒng)。
第四方面,本發(fā)明還提供一種設備,包括一個或多個處理器和存儲器,其中存儲器包含可由該一個或多個處理器執(zhí)行的指令以使得該一個或多個處理器執(zhí)行根據(jù)本發(fā)明各實施例提供的彈幕加載方法。
第五方面,本發(fā)明還提供一種存儲有計算機程序的計算機可讀存儲介質(zhì),該計算機程序使計算機執(zhí)行根據(jù)本發(fā)明各實施例提供的彈幕加載方法。
本發(fā)明諸多實施例提供的彈幕加載方法及系統(tǒng)通過按照預配置的播放時段和預加載時段,在各播放時段之前的預加載時段中對彈幕數(shù)據(jù)進行分段預加載,使得每一預加載時段中只需加載對應的少量彈幕數(shù)據(jù),大幅降低了內(nèi)存和流量開銷,同時無需耗費高昂的壓制成本和犧牲彈幕的實時性;
本發(fā)明一些實施例提供的彈幕加載方法及系統(tǒng)進一步通過在播放下一播放時段時定時循環(huán)檢查對應的彈幕數(shù)據(jù)是否已緩存至內(nèi)存中,若未緩存則繼續(xù)進行預加載,從而對彈幕的加載施加保障。
附圖說明
通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本申請的其它特征、目的和優(yōu)點將會變得更明顯:
圖1為本發(fā)明一實施例提供的彈幕加載方法的流程圖。
圖2為圖1所示方法中彈幕數(shù)據(jù)預加載的時序示意圖。
圖3為圖1所示方法的一種優(yōu)選實施方式中步驟S20的流程圖。
圖4為圖1所示方法的一種優(yōu)選實施方式中步驟S40的流程圖。
圖5為圖1所示方法的一種優(yōu)選實施方式的流程圖。
圖6為圖5所示方法的一種優(yōu)選實施方式中步驟S60的流程圖。
圖7為本發(fā)明一實施例提供的彈幕加載系統(tǒng)的結(jié)構(gòu)示意圖。
圖8為圖7所示系統(tǒng)的一種優(yōu)選實施方式的結(jié)構(gòu)示意圖。
圖9為本發(fā)明一實施例提供的一種設備的結(jié)構(gòu)示意圖。
具體實施方式
下面結(jié)合附圖和實施例對本申請作進一步的詳細說明。可以理解的是,此處所描述的具體實施例僅僅用于解釋相關(guān)發(fā)明,而非對該發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與發(fā)明相關(guān)的部分。
需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。下面將參考附圖并結(jié)合實施例來詳細說明本申請。
圖1為本發(fā)明一實施例提供的彈幕加載方法的流程圖。圖2為圖1所示方法中彈幕數(shù)據(jù)預加載的時序示意圖。
如圖1所示,在本實施例中,本發(fā)明提供的彈幕加載方法包括:
S20:在播放視頻的下一播放時段前的預加載時段中,對該下一播放時段的彈幕數(shù)據(jù)進行預加載;
S40:在播放該下一播放時段時同步顯示所預加載的彈幕數(shù)據(jù),返回上一步驟。
在本實施例中,各播放時段根據(jù)預配置的播放時段時長確定,各預加載時段根據(jù)預配置的預加載時段時長確定。在更多實施例中,各播放時段和各預加載時段還可根據(jù)實際需求配置為根據(jù)不同條件確定,例如,根據(jù)用戶輸入的參數(shù)確定,或,根據(jù)彈幕數(shù)據(jù)在云端的存儲方式(例如是否按時長分段以及每段的數(shù)據(jù)量等),等,可實現(xiàn)相同的技術(shù)效果。
具體地,如圖1-2所示,在本實施例中,播放時段時長配置為15秒,預加載時段時長配置為5秒。各播放時段分別為(0秒-15秒)、(15秒-30秒)、(30秒-45秒)、……,依此類推;對應于各播放時段的各預加載時段分別為(-5秒-0秒)、(10秒-15秒)、(25秒-30秒)、……,依此類推。在本實施例中,播放時段時長配置為15秒,預加載時段時長配置為5秒,各播放時段和各預加載時段配置為固定時長,在更多實施例中還可根據(jù)實際需求將播放時段時長和預加載時段時長配置為不同的取值的時長,將各播放時段和各預加載時段配置為固定時長或不固定時長,可實現(xiàn)相同的技術(shù)效果。
當收到播放視頻的指令信息時,執(zhí)行步驟S20,在(-5秒-0秒)的預加載時段內(nèi)對第一播放時段(0秒-15秒)的彈幕數(shù)據(jù)進行預加載,將(0秒-15秒)的彈幕數(shù)據(jù)緩存至內(nèi)存中;
當彈幕加載時間軸到達0秒時,執(zhí)行步驟S40,在播放第一播放時段(0秒-15秒)時同步顯示所緩存的(0秒-15秒)的彈幕數(shù)據(jù);
當彈幕加載時間軸到達10秒時,返回執(zhí)行步驟S20,在(10秒-15秒)的預加載時段內(nèi)對第二播放時段(15秒-30秒)的彈幕數(shù)據(jù)進行預加載,將(15秒-30秒)的彈幕數(shù)據(jù)緩存至內(nèi)存中;
當彈幕加載時間軸到達15秒時,繼續(xù)執(zhí)行步驟S40,在播放第二播放時段(15秒-30秒)時同步顯示所緩存的(15秒-30秒)的彈幕數(shù)據(jù);……,依此類推,反復循環(huán)步驟S20-S40,直至播放最后一播放時段時,不再返回執(zhí)行步驟S20。
優(yōu)選地,如圖1所示,在本實施例中,步驟S40中還配置有一項循環(huán)中斷機制,通過判斷當前播放的該下一播放時段是否最后一播放時段,選擇是否返回步驟S20進行循環(huán)。在更多實施例中,還可根據(jù)實際需求為本發(fā)明提供的彈幕加載方法配置不同的循環(huán)中斷機制,例如,還可以在滿足以下任一項條件時中斷循環(huán):對下一播放時段的彈幕數(shù)據(jù)預加載失敗時,連續(xù)若干次預加載失敗時,接收到視頻播放系統(tǒng)發(fā)送的播放終止信號時,等,均可實現(xiàn)相同的技術(shù)效果。
圖3為圖1所示方法的一種優(yōu)選實施方式中步驟S20的流程圖。
如圖3所示,在一優(yōu)選實施方式中,步驟S20包括:
S21:在進入預加載時段時下載下一播放時段的彈幕數(shù)據(jù);
S23:將所下載的下一播放時段的彈幕數(shù)據(jù)緩存至內(nèi)存中。
具體地,在上述播放時段時長配置為15秒,預加載時段時長配置為5秒的實施例中,在(-5秒-0秒)的預加載時段內(nèi)下載(0秒-15秒)的彈幕數(shù)據(jù)并緩存至內(nèi)存中,在(0秒-15秒)的預加載時段內(nèi)下載(15秒-30秒)的彈幕數(shù)據(jù)并緩存至內(nèi)存中,……,依此類推。
在更多實施例中,還可根據(jù)實際需求將步驟S21配置成下載后續(xù)若干播放時段,可實現(xiàn)相同的技術(shù)效果。例如,在(10秒-15秒)的預加載時段內(nèi)下載(15秒-30秒)以及(30秒-45秒)的彈幕數(shù)據(jù),并將所下載的(15秒-30秒)的彈幕數(shù)據(jù)緩存至內(nèi)存中;在(25秒-30秒)的預加載時段內(nèi)檢查(30秒-45秒)的彈幕數(shù)據(jù)是否下載完畢:若未下載完則繼續(xù)下載,以及,下載(45秒-60秒)的彈幕數(shù)據(jù),并將所下載的(30秒-45秒)的彈幕數(shù)據(jù)緩存至內(nèi)存中,……,依此類推。
圖4為圖1所示方法的一種優(yōu)選實施方式中步驟S40的流程圖。
如圖4所示,在一優(yōu)選實施方式中,步驟S40包括:
S41:檢查彈幕加載時間軸與視頻播放時間軸是否同步:否,則獲取視頻播放時間軸以同步時間軸;
S43:根據(jù)彈幕加載時間軸同步顯示所預加載的彈幕數(shù)據(jù)。
具體地,在步驟S41中,視頻每播放1秒即進行1次檢查,彈幕加載時間軸與視頻播放時間軸是否同步,若兩者的時間差距超過2秒,則獲取視頻播放時間軸以校準彈幕加載時間軸。在更多實施例中,可以將時間軸是否同步的檢查配置為在不同的時間以不同頻率進行,并可將時間差距的閾值配置為不同大小,均可實現(xiàn)相同的技術(shù)效果。
在步驟S43中,根據(jù)彈幕加載時間軸,與所播放的視頻同步顯示緩存在內(nèi)存中的彈幕數(shù)據(jù)。
上述各實施例通過按照預配置的播放時段和預加載時段,在各播放時段之前的預加載時段中對彈幕數(shù)據(jù)進行分段預加載,使得每一預加載時段中只需加載對應的少量彈幕數(shù)據(jù),大幅降低了內(nèi)存和流量開銷,同時無需耗費高昂的壓制成本和犧牲彈幕的實時性。
圖5為圖1所示方法的一種優(yōu)選實施方式的流程圖。
如圖5所示,在一優(yōu)選實施方式中,圖1-圖4所示的任一項方法進一步還包括:
S60:在播放該下一播放時段時檢查該下一播放時段的彈幕數(shù)據(jù)是否已緩存至內(nèi)存中:否,則在下一預加載時段前繼續(xù)對該下一播放時段的彈幕數(shù)據(jù)進行預加載。
具體地,同樣在上述播放時段時長配置為15秒,預加載時段時長配置為5秒的實施例中,開始播放第一播放時段(0秒-15秒)時,檢查(0秒-15秒)的彈幕數(shù)據(jù)是否已緩存至內(nèi)存中,若未緩存,則在下一預加載時段(10秒-15秒)前,即在(0秒-10秒)的時段中,繼續(xù)對(0秒-15秒)的彈幕數(shù)據(jù)進行預加載;開始播放第二播放時段(15秒-30秒)時,檢查(15秒-30秒)的彈幕數(shù)據(jù)是否已緩存至內(nèi)存中,若未緩存,則在下一預加載時段(25秒-30秒)前,即在(15秒-25秒)的時段中,繼續(xù)對(15秒-30秒)的彈幕數(shù)據(jù)進行預加載;……,依此類推。
圖6為圖5所示方法的一種優(yōu)選實施方式中步驟S60的流程圖。
如圖6所示,在一優(yōu)選實施例中,步驟S60包括:
S61:在播放該下一播放時段時定時檢查該下一播放時段的彈幕數(shù)據(jù)是否已緩存至內(nèi)存中:
是,則停止檢查;
否,則執(zhí)行步驟S63:在下一預加載時段前繼續(xù)對所述下一播放時段的彈幕數(shù)據(jù)進行預加載;以及,S65:判斷檢查次數(shù)是否小于預配置次數(shù):
是,則繼續(xù)定時檢查;
否,則停止檢查。
具體地,在本實施例中,定時檢查的時間間隔為1秒,預配置的檢查次數(shù)閾值為3次,在更多實施例中,還可根據(jù)實際需求將上述兩項參數(shù)配置為不同的取值,只要不影響下一預加載時段所進行的彈幕數(shù)據(jù)預加載,即可實現(xiàn)相同的技術(shù)效果。
上述實施例進一步通過在播放下一播放時段時定時循環(huán)檢查對應的彈幕數(shù)據(jù)是否已緩存至內(nèi)存中,若未緩存則繼續(xù)進行預加載,從而對彈幕的加載施加保障。
圖7為本發(fā)明一實施例提供的彈幕加載系統(tǒng)的結(jié)構(gòu)示意圖。圖7所示系統(tǒng)可對應執(zhí)行圖1-6所示的任一項方法。
如圖7所示,在本實施例中,本發(fā)明提供的彈幕加載系統(tǒng)10包括:
彈幕分段預加載單元11,配置用于在播放視頻的下一播放時段前的預加載時段中,對該下一播放時段的彈幕數(shù)據(jù)進行預加載;
彈幕顯示單元13,配置用于在播放該下一播放時段時同步顯示所預加載的彈幕數(shù)據(jù)。
與上述方法相對應地,在本實施例提供的彈幕加載系統(tǒng)10中,各播放時段根據(jù)預配置的播放時段時長確定,各預加載時段根據(jù)預配置的預加載時段時長確定。在更多實施例中,各播放時段和各預加載時段還可根據(jù)實際需求配置為根據(jù)不同條件確定,可實現(xiàn)相同的技術(shù)效果。
具體地,在本實施例中,彈幕加載系統(tǒng)10配置為安裝在手機中的軟件程序,彈幕分段預加載單元11通過4G或WIFI等無線通信方式從服務端30分段下載需要進行預加載的彈幕數(shù)據(jù),彈幕顯示單元13從同樣配置為軟件程序的視頻播放系統(tǒng)20獲取視頻播放時間軸,從而將預加載的彈幕數(shù)據(jù)與播放的視頻同步顯示。
在另一實施例中,視頻播放系統(tǒng)20配置為專用于進行視頻播放的硬件裝置,彈幕加載系統(tǒng)10配置為安裝在該硬件裝置中的軟件程序。
在又一實施例中,彈幕加載系統(tǒng)10還可配置為專用于進行彈幕加載的硬件裝置,該硬件裝置可與配置為硬件的視頻播放系統(tǒng)20通過有線或無線連接,或,與安裝有配置為軟件的視頻播放系統(tǒng)20的手機等終端通過有線或無線連接,為其加載彈幕。
在一些實施例中,還可將彈幕加載系統(tǒng)10和視頻播放系統(tǒng)20配置為一體集成的視頻彈幕同步顯示系統(tǒng)。該一體集成的系統(tǒng)可以將彈幕加載系統(tǒng)10和視頻播放系統(tǒng)20配置為集成的軟件,或,一體集成的硬件,或,配置為軟件的彈幕加載系統(tǒng)10安裝在配置為硬件的視頻播放系統(tǒng)20中,乃至于其它本領(lǐng)域技術(shù)人員可以理解的不同配置方式。
圖8為圖7所示系統(tǒng)的一種優(yōu)選實施方式的結(jié)構(gòu)示意圖。圖8所示系統(tǒng)中的彈幕分段預加載單元11和彈幕顯示單元13可分別對應執(zhí)行圖3所示的步驟S20和圖4所示的步驟S40。
如圖8所示,在一優(yōu)選實施例中,彈幕分段預加載單元11包括:
彈幕拉取子單元111,配置用于在進入該預加載時段時下載下一播放時段的彈幕數(shù)據(jù);
彈幕緩存子單元113,配置用于將所下載的下一播放時段的彈幕數(shù)據(jù)緩存至內(nèi)存中。
在一優(yōu)選實施例中,彈幕拉取子單元111進一步配置用于判斷所述下一播放時段是否最后一播放時段:否,則在下一預加載時段中進行所述下載;是,則在下一預加載時段中不再進行所述下載。
在更多優(yōu)選實施例中,還可采用以下任意一種配置方式中斷對彈幕數(shù)據(jù)進行預加載和顯示的循環(huán):彈幕拉取子單元111接收到不存在下一播放時段的彈幕數(shù)據(jù)的下載反饋信息,則停止下載;彈幕拉取子單元111連續(xù)若干次接收到下載失敗的下載反饋信息,則停止下載;等,均可實現(xiàn)相同的技術(shù)效果。
同樣如圖8所示,在一優(yōu)選實施例中,彈幕顯示單元13包括:
彈幕顯示控制子單元131,配置用于檢查彈幕加載時間軸與視頻播放時間軸是否同步:否,則獲取視頻播放時間軸以同步時間軸;
彈幕顯示子單元133,配置用于根據(jù)彈幕加載時間軸同步顯示所預加載的彈幕數(shù)據(jù)。
在一優(yōu)選實施例中,彈幕顯示控制子單元131進一步配置用于在播放該下一播放時段時檢查該下一播放時段的彈幕數(shù)據(jù)是否已緩存至內(nèi)存中:否,則控制彈幕分段預加載單元111在下一預加載時段前繼續(xù)對該下一播放時段的彈幕數(shù)據(jù)進行預加載。具體原理參照上述圖5所示的方法,此處不再贅述。
在一優(yōu)選實施例中,彈幕顯示控制子單元131進一步配置用于在檢查結(jié)果為否且檢查次數(shù)小于預配置次數(shù)時定時循環(huán)檢查。具體原理參照上述圖6所示的方法,此處不再贅述。
圖9為本發(fā)明一實施例提供的一種設備的結(jié)構(gòu)示意圖。
如圖9所示,作為另一方面,本申請還提供了一種設備900,包括一個或多個中央處理單元(CPU)901,其可以根據(jù)存儲在只讀存儲器(ROM)902中的程序或者從存儲部分908加載到隨機訪問存儲器(RAM)903中的程序而執(zhí)行各種適當?shù)膭幼骱吞幚?。在RAM903中,還存儲有設備900操作所需的各種程序和數(shù)據(jù)。CPU901、ROM902以及RAM903通過總線904彼此相連。輸入/輸出(I/O)接口905也連接至總線904。
以下部件連接至I/O接口905:包括鍵盤、鼠標等的輸入部分906;包括諸如陰極射線管(CRT)、液晶顯示器(LCD)等以及揚聲器等的輸出部分907;包括硬盤等的存儲部分908;以及包括諸如LAN卡、調(diào)制解調(diào)器等的網(wǎng)絡接口卡的通信部分909。通信部分909經(jīng)由諸如因特網(wǎng)的網(wǎng)絡執(zhí)行通信處理。驅(qū)動器910也根據(jù)需要連接至I/O接口905??刹鹦督橘|(zhì)911,諸如磁盤、光盤、磁光盤、半導體存儲器等等,根據(jù)需要安裝在驅(qū)動器910上,以便于從其上讀出的計算機程序根據(jù)需要被安裝入存儲部分908。
特別地,根據(jù)本公開的實施例,上述任一實施例描述的彈幕加載方法可以被實現(xiàn)為計算機軟件程序。例如,本公開的實施例包括一種計算機程序產(chǎn)品,其包括有形地包含在機器可讀介質(zhì)上的計算機程序,所述計算機程序包含用于執(zhí)行彈幕加載方法的程序代碼。在這樣的實施例中,該計算機程序可以通過通信部分909從網(wǎng)絡上被下載和安裝,和/或從可拆卸介質(zhì)911被安裝。
附圖中的流程圖和框圖,圖示了按照本發(fā)明各種實施例的系統(tǒng)、方法和計算機程序產(chǎn)品的可能實現(xiàn)的體系架構(gòu)、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段、或代碼的一部分,該模塊、程序段、或代碼的一部分包含一個或多個用于實現(xiàn)規(guī)定的邏輯功能的可執(zhí)行指令。也應當注意,在有些作為替換的實現(xiàn)中,方框中所標注的功能也可以以不同于附圖中所標注的順序發(fā)生。例如,兩個接連地表示的方框?qū)嶋H上可以基本并行地執(zhí)行,它們有時也可以按相反的順序執(zhí)行,這根據(jù)所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以通過執(zhí)行規(guī)定的功能或操作的專用的基于硬件的系統(tǒng)來實現(xiàn),或者可以通過專用硬件與計算機指令的組合來實現(xiàn)。
描述于本申請實施例中所涉及到的單元或模塊可以通過軟件的方式實現(xiàn),也可以通過硬件的方式來實現(xiàn)。所描述的單元或模塊也可以設置在處理器中,例如,各所述單元可以是設置在計算機或移動智能設備中的軟件程序,也可以是單獨配置的硬件裝置。其中,這些單元或模塊的名稱在某種情況下并不構(gòu)成對該單元或模塊本身的限定。
作為又一方面,本申請還提供了一種計算機可讀存儲介質(zhì),該計算機可讀存儲介質(zhì)可以是上述實施例的裝置中所包含的計算機可讀存儲介質(zhì);也可以是單獨存在,未裝配入設備中的計算機可讀存儲介質(zhì)。計算機可讀存儲介質(zhì)存儲有一個或者一個以上程序,該程序被一個或者一個以上的處理器用來執(zhí)行描述于本申請的彈幕加載方法。
以上描述僅為本申請的較佳實施例以及對所運用技術(shù)原理的說明。本領(lǐng)域技術(shù)人員應當理解,本申請中所涉及的發(fā)明范圍,并不限于上述技術(shù)特征的特定組合而成的技術(shù)方案,同時也應涵蓋在不脫離本申請構(gòu)思的情況下,由上述技術(shù)特征或其等同特征進行任意組合而形成的其它技術(shù)方案。例如上述特征與本申請中公開的(但不限于)具有類似功能的技術(shù)特征進行互相替換而形成的技術(shù)方案。