本申請涉及互聯(lián)網(wǎng)技術領域,特別涉及一種直播暫停方法、系統(tǒng)、直播暫停裝置及直播服務器。
背景技術:
隨著互聯(lián)網(wǎng)技術的不斷發(fā)展,視頻直播行業(yè)越來越多地受到人們關注。當前,在視頻直播時,主播通常通過采集端采集需要直播的視頻數(shù)據(jù),然后采集端可以將視頻數(shù)據(jù)發(fā)送至直播平臺的服務器。這樣,當用戶的客戶端中打開直播平臺的網(wǎng)站或者應用時,便可以向直播平臺的服務器發(fā)送直播視頻獲取請求。直播平臺的服務器在接收到所述直播視頻獲取請求時,便可以向用戶的客戶端推送所述采集端上傳的視頻數(shù)據(jù),從而實現(xiàn)從主播到用戶的直播過程。
在直播過程中,主播有時候會不可避免地出現(xiàn)突發(fā)事件,從而會使得直播過程中止。例如,主播需要臨時處理其它事情,便會暫停直播的過程。在暫停過程中,主播的采集端通常會中斷向直播平臺的服務器推送直播的數(shù)據(jù)流。在恢復直播后,采集端便需要再次與直播平臺的服務器重新建立連接,以繼續(xù)推送數(shù)據(jù)流。由此可見,當前這種通過中斷數(shù)據(jù)流的方式來暫停直播過程,在重新開始直播時,需要花費較多的時間與直播服務器重新建立連接。
技術實現(xiàn)要素:
本申請實施方式的目的是提供一種直播暫停方法、系統(tǒng)、直播暫停裝置及直播服務器,能夠在重新開始直播時,提高直播的效率。
為實現(xiàn)上述目的,本申請實施方式提供一種直播暫停方法,所述方法包括:在數(shù)據(jù)采集客戶端向直播服務器提供采集的直播數(shù)據(jù),以使得所述直播服務器將所述直播數(shù)據(jù)推送給用戶客戶端的情況下,接收主播下達的暫停指令;響應于所述暫停指令,所述數(shù)據(jù)采集客戶端在與所述直播服務器保持通信連接的情況下,暫停采集直播數(shù)據(jù)。
為實現(xiàn)上述目的,本申請實施方式還提供一種直播暫停裝置,所述裝置包括:暫停指令接收單元,用于接收數(shù)據(jù)采集客戶端發(fā)來的暫停指令;所述數(shù)據(jù)采集客戶端用于向直播服務器提供采集的直播數(shù)據(jù);插播視頻數(shù)據(jù)獲取單元,用于響應于所述暫停指令,獲取插播視頻數(shù)據(jù);推送單元,用于將所述插播視頻數(shù)據(jù)推送至所述直播服務器,以使得所述直播服務器暫停向用戶客戶端發(fā)送所述數(shù)據(jù)采集客戶端當前采集的直播數(shù)據(jù),并在暫停期間向所述用戶客戶端發(fā)送所述插播視頻數(shù)據(jù)。
為實現(xiàn)上述目的,本申請實施方式還提供一種直播暫停方法,所述方法包括:接收用戶客戶端發(fā)來的直播數(shù)據(jù)請求,并向所述用戶客戶端發(fā)送所述直播數(shù)據(jù)請求指向的直播數(shù)據(jù);其中,所述直播數(shù)據(jù)由數(shù)據(jù)采集客戶端采集并上傳;當接收到直播暫停裝置發(fā)來的插播視頻數(shù)據(jù)時,暫停向所述用戶客戶端發(fā)送所述直播數(shù)據(jù),并在暫停期間向所述用戶客戶端推送所述插播視頻數(shù)據(jù)。
為實現(xiàn)上述目的,本申請實施方式還提供一種直播服務器,所述直播服務器包括:直播數(shù)據(jù)發(fā)送單元,用于接收用戶客戶端發(fā)來的直播數(shù)據(jù)請求,并向所述用戶客戶端發(fā)送所述直播數(shù)據(jù)請求指向的直播數(shù)據(jù);其中,所述直播數(shù)據(jù)由數(shù)據(jù)采集客戶端采集并上傳;插播視頻數(shù)據(jù)發(fā)送單元,用于當接收到直播暫停裝置發(fā)來的插播視頻數(shù)據(jù)時,暫停向所述用戶客戶端發(fā)送所述直播數(shù)據(jù),并在暫停期間向所述用戶客戶端推送所述插播視頻數(shù)據(jù)。
為實現(xiàn)上述目的,本申請實施方式還提供一種直播暫停系統(tǒng),所述系統(tǒng)包括數(shù)據(jù)采集客戶端、直播暫停裝置、直播服務器以及用戶客戶端,其中:所述數(shù)據(jù)采集客戶端,用于向所述直播服務器提供采集的直播數(shù)據(jù),并向所述直播暫停裝置發(fā)送暫停指令;所述直播暫停裝置,用于響應于所述暫停指令,獲取插播視頻數(shù)據(jù);將所述插播視頻數(shù)據(jù)推送至所述直播服務器;所述直播服務器,用于在接收到所述直播暫停裝置發(fā)送的插播視頻數(shù)據(jù)后,暫停向所述用戶客戶端發(fā)送所述數(shù)據(jù)采集客戶端當前采集的直播數(shù)據(jù),并在暫停期間向所述用戶客戶端發(fā)送所述插播視頻數(shù)據(jù)。
由上可見,本申請的數(shù)據(jù)采集客戶端在下達暫停指令后,數(shù)據(jù)采集客戶端可以繼續(xù)與直播服務器保持通信連接,而不會與直播服務器斷開連接。這樣,當再次恢復直播時,數(shù)據(jù)采集客戶端可以按照之前的通信連接向直播服務器提供采集的直播數(shù)據(jù),從而減少了與直播服務器重新建立連接的時間,提高了直播的效率。此外,直播暫停裝置可以獲取用于替代直播數(shù)據(jù)流的插播視頻數(shù)據(jù)。然后,所述直播暫停裝置可以將所述插播視頻數(shù)據(jù)向直播服務器推送。這樣,當直播服務器接收到推送至的插播視頻數(shù)據(jù)時,便可以向用戶客戶端推送該插播視頻數(shù)據(jù),從而使得在數(shù)據(jù)采集客戶端暫停從主播的攝像頭和麥克風獲取直播數(shù)據(jù)流時,可以由所述直播暫停裝置向直播服務器推送插播視頻數(shù)據(jù),以保證用戶客戶端中播放的直播畫面不會中斷。
附圖說明
為了更清楚地說明本申請實施方式或現(xiàn)有技術中的技術方案,下面將對實施方式或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本申請中記載的一些實施方式,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本申請實施方式中直播暫停方法的步驟圖;
圖2為本申請實施方式中直播暫停方法的流程圖;
圖3為本申請實施方式中直播暫停方法的交互圖;
圖4為本申請實施方式中插播視頻數(shù)據(jù)的存儲示意圖;
圖5為本申請實施方式中直播暫停裝置的結構示意圖;
圖6為本申請另一個實施方式中直播暫停方法的步驟圖;
圖7為本申請實施方式中直播服務器的結構示意圖;
圖8為本申請實施方式中直播暫停系統(tǒng)的交互圖。
具體實施方式
為了使本技術領域的人員更好地理解本申請中的技術方案,下面將結合本申請實施方式中的附圖,對本申請實施方式中的技術方案進行清楚、完整地描述,顯然,所描述的實施方式僅僅是本申請一部分實施方式,而不是全部的實施方式?;诒旧暾堉械膶嵤┓绞剑绢I域普通技術人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其他實施方式,都應當屬于本申請保護的范圍。
本申請實施方式提供一種直播暫停方法,所述方法可以應用于服務器和客戶端的系統(tǒng)架構中。所述服務器可以是直播平臺的業(yè)務服務器,所述客戶端可以是用于采集主播的直播數(shù)據(jù)的數(shù)據(jù)采集客戶端,還可以是用于向用戶展示直播畫面的用戶客戶端。其中,所述直播平臺例如可以是斗魚、虎牙、戰(zhàn)旗等平臺。在本實施方式中,所述服務器可以為一個具有數(shù)據(jù)運算、存儲功能以及網(wǎng)絡交互功能的電子設備;也可以為運行于該電子設備中,為數(shù)據(jù)處理、存儲和網(wǎng)絡交互提供支持的軟件。在本實施方式中并不具體限定所述服務器的數(shù)量。所述服務器可以為一個服務器,還可以為幾個服務器,或者,若干服務器形成的服務器集群。
在本實施方式中,所述客戶端可以是具備數(shù)據(jù)采集功能、數(shù)據(jù)播放功能以及網(wǎng)絡通信功能的電子設備。具體地,所述客戶端例如可以是臺式電腦、平板電腦、筆記本電腦、智能手機、數(shù)字助理、智能可穿戴設備、導購終端、具有網(wǎng)絡訪問功能的電視機等。或者,所述客戶端也可以為能夠運行于上述電子設備中的軟件。具體的,所述客戶端可以為直播平臺提供的在電子設備中運行的愛奇藝、acfun、斗魚等應用。
本申請?zhí)峁┮环N直播暫停方法,所述方法可以應用于數(shù)據(jù)采集客戶端中,所述方法包括以下步驟。
s10:在數(shù)據(jù)采集客戶端向直播服務器提供采集的直播數(shù)據(jù),以使得所述直播服務器將所述直播數(shù)據(jù)推送給用戶客戶端的情況下,接收主播下達的暫停指令。
s20:響應于所述暫停指令,所述數(shù)據(jù)采集客戶端在與所述直播服務器保持通信連接的情況下,暫停采集直播數(shù)據(jù)。
在本實施方式中,數(shù)據(jù)采集客戶端可以采集與主播相關的直播數(shù)據(jù),該直播數(shù)據(jù)在采集之后可以由數(shù)據(jù)采集客戶端推送至直播平臺的直播服務器中。這樣,當用戶客戶端向直播服務器發(fā)送指向該主播的直播加載請求時,直播服務器便可以將該主播的數(shù)據(jù)采集客戶端當前采集的直播數(shù)據(jù)推送給用戶客戶端,從而在用戶客戶端上進行展示主播的直播畫面。
在本實施方式中,當主播需要暫停直播時,可以在數(shù)據(jù)采集客戶端中下達暫停指令。數(shù)據(jù)采集客戶端在接收到主播下達的暫停指令后,可以暫停采集與主播相關的直播數(shù)據(jù)。但是,數(shù)據(jù)采集客戶端可以繼續(xù)保持與所述直播服務器之間的通信連接。此時,數(shù)據(jù)采集客戶端可以不向直播服務器推送直播數(shù)據(jù),這樣直播服務器便無法向用戶客戶端提供對應的直播數(shù)據(jù),用戶客戶端中可能顯示的是黑屏。當然,在實際應用場景中,當主播下達了暫停指令后,數(shù)據(jù)采集客戶端可以向直播服務器發(fā)送該暫停指令,這樣,直播服務器便可以按照已經(jīng)設置的播放規(guī)則,向用戶客戶端持續(xù)提供數(shù)據(jù)采集客戶端提供的最后一幀畫面。當然,直播服務器還可以向用戶客戶端發(fā)送用于表征主播暫離的視頻信息。例如,用戶客戶端中可以顯示為主播直播的最后一幀畫面或者黑屏,在該畫面或者黑屏中可以顯示“主播暫離,請稍等”的字樣。
在本實施方式中,當主播結束暫離過程,可以向數(shù)據(jù)采集客戶端下達取消暫停指令,這樣,在接收到所述主播下達的取消暫停指令后,所述數(shù)據(jù)采集客戶端可以重新采集直播數(shù)據(jù),并通過之前保持的所述通信連接向所述直播服務器提供重新采集的直播數(shù)據(jù),從而可以減少與直播服務器重新建立連接所耗費的時間,提高了直播的效率。
本申請實施方式提供的直播暫停方法,還可以應用于直播暫停裝置中。需要說明的是,在本實施方式中,所述直播暫停裝置可以是與所述數(shù)據(jù)采集客戶端保持數(shù)據(jù)通信的獨立設備,所述直播暫停裝置通??梢耘c所述數(shù)據(jù)采集客戶端處于同一個局域網(wǎng)絡中,從而使得所述直播暫停裝置與所述數(shù)據(jù)采集客戶端之間能夠具備較好的網(wǎng)絡環(huán)境以及較快的數(shù)據(jù)傳輸速度。此外,所述直播暫停裝置還可以是集成于所述數(shù)據(jù)采集客戶端中的一個模塊,這樣,所述數(shù)據(jù)采集客戶端在向直播服務器推送直播數(shù)據(jù)時,可以先判斷是否從攝像頭和麥克風中獲取主播的直播數(shù)據(jù)。如果當前沒有暫停直播,便可以直接從攝像頭和麥克風中獲取主播的直播數(shù)據(jù),并將獲取的直播數(shù)據(jù)推送給直播服務器。如果當前處于暫停直播的狀態(tài),便可以通過直播暫停裝置獲取插播視頻數(shù)據(jù),并向直播服務器推送該插播視頻數(shù)據(jù)。這樣,數(shù)據(jù)采集客戶端便可以在暫停過程中,不需要中斷向直播服務器發(fā)送數(shù)據(jù)流。
請參閱圖1和圖2,在接收主播下達的暫停指令之后,所述方法還可以包括以下步驟。
s11:響應于所述暫停指令,獲取插播視頻數(shù)據(jù)。
在本實施方式中,所述數(shù)據(jù)采集客戶端可以與用于采集直播數(shù)據(jù)的攝像頭、麥克風等設備相連,或者所述數(shù)據(jù)采集客戶端本身可以包括攝像頭、麥克風等設備。主播在開始直播時,數(shù)據(jù)采集客戶端可以與直播服務器建立流連接。由于直播過程中數(shù)據(jù)采集客戶端需要持續(xù)向直播服務器推送直播數(shù)據(jù),因此所述流連接可以是長連接。
在本實施方式中,數(shù)據(jù)采集客戶端在向直播服務器推送直播數(shù)據(jù)時,可以預先進行判斷,是否從攝像頭和麥克風中獲取直播數(shù)據(jù)。如果主播當前在數(shù)據(jù)采集客戶端中沒有下達暫停指令,數(shù)據(jù)采集客戶端便可以從攝像頭和麥克風中獲取直播數(shù)據(jù)。數(shù)據(jù)采集客戶端便可以將獲取的直播數(shù)據(jù)轉(zhuǎn)換為直播數(shù)據(jù)流,并向直播服務器推送該轉(zhuǎn)換得到的直播數(shù)據(jù)流。這樣,用戶客戶端便可以從直播服務器中獲取到該主播的直播畫面。其中,所述直播數(shù)據(jù)流可以是遵循流媒體協(xié)議的數(shù)據(jù)流。所述流媒體協(xié)議例如可以是rtp(real-timetransportprotocol,實時傳輸協(xié)議)、rtcp(real-timetransportcontrolprotocol,實時傳輸控制協(xié)議)、srtp(securereal-timetransportprotocol,安全實時傳輸協(xié)議)等。
在本實施方式中,如果主播在數(shù)據(jù)采集客戶端中下達了暫停指令,數(shù)據(jù)采集客戶端便可以暫停從攝像頭和麥克風等設備中獲取直播數(shù)據(jù)。為了能夠向直播服務器繼續(xù)推送直播數(shù)據(jù)流,此時數(shù)據(jù)采集客戶端可以向直播暫停裝置發(fā)送該暫停指令,以使得所述直播暫停裝置可以提供用于直播的視頻數(shù)據(jù)。
在本實施方式中,所述暫停指令可以是主播在數(shù)據(jù)采集客戶端中下達的。此外,在其它應用場景中,數(shù)據(jù)采集客戶端還可以針對特定的情況,自動生成暫停指令。
在本申請一個實施方式中,數(shù)據(jù)采集客戶端可以優(yōu)先從攝像頭和麥克風中獲取直播數(shù)據(jù),然后可以對獲取的直播數(shù)據(jù)進行檢測,從而判斷當前是否生成暫停指令。具體地,當所述數(shù)據(jù)采集客戶端在第一指定時長內(nèi)采集的直播數(shù)據(jù)所展示的畫面均相同時,可以生成暫停指令。在本實施方式中,所述第一指定時長可以是數(shù)據(jù)采集客戶端中預先設定的時長,該時長可以根據(jù)實際場景進行調(diào)整。例如,所述第一指定時長可以是10秒,那么在10秒中內(nèi),如果攝像頭采集到的畫面都是相同的,則表明此時主播可能離開了攝像頭拍攝的范圍,當前已經(jīng)沒有實質(zhì)的直播內(nèi)容,那么數(shù)據(jù)采集客戶端便可以自動生成暫停指令。在本實施方式中,可以通過判斷第一指定時長內(nèi)采集的直播數(shù)據(jù)是否相同,從而判定所述第一指定時長內(nèi)展示的畫面是否相同。
在本申請一個實施方式中,如果攝像頭出現(xiàn)問題,無法采集到主播的直播數(shù)據(jù),那么數(shù)據(jù)采集客戶端就無法獲取到直播數(shù)據(jù)。這樣,在本實施方式中,當所述數(shù)據(jù)采集客戶端在第二指定時長內(nèi)均無法采集到直播數(shù)據(jù)時,也可以生成暫停指令。所述第二指定時長可以是數(shù)據(jù)采集客戶端中預先設定的時長,該時長可以根據(jù)實際場景進行調(diào)整。例如,所述第二指定時長可以是3秒,那么在3秒中內(nèi),數(shù)據(jù)采集客戶端一直無法采集到直播數(shù)據(jù)時,便可以生成暫停指令,以由直播暫停裝置提供直播數(shù)據(jù)。
請一并參閱圖3,在本實施方式中,當直播暫停裝置接收到所述暫停指令時,便可以獲取用于替代直播數(shù)據(jù)的插播視頻數(shù)據(jù)。所述插播視頻數(shù)據(jù)可以是主播預先在數(shù)據(jù)采集客戶端中存儲的視頻素材。所述視頻素材例如可以是視頻集錦、廣告、圖片集等資源。所述插播視頻數(shù)據(jù)可以統(tǒng)一存儲于指定資源庫中。所述指定資源庫可以是文件夾,也可以是基于數(shù)據(jù)結構建立的數(shù)據(jù)庫。所述數(shù)據(jù)庫例如可以是mysql、oracle、db2、sybase等。
在本實施方式中,直播暫停裝置除了可以從指定資源庫中獲取插播視頻數(shù)據(jù),還可以從本地緩存中讀取插播視頻數(shù)據(jù)。所述本地緩存中的插播視頻數(shù)據(jù)可以是上一次或者前幾次暫停時讀取的插播視頻數(shù)據(jù)。這樣,直播暫停裝置直接從本地緩存中讀取插播視頻數(shù)據(jù),能夠提高數(shù)據(jù)的讀取速度。
在本申請一個實施方式中,本地緩存或者指定資源庫中的插播視頻數(shù)據(jù)可以與時間節(jié)點相關聯(lián),所述時間節(jié)點用于表征所述插播視頻數(shù)據(jù)最近一次被讀取的時間節(jié)點。為了在暫停時播放的插播視頻數(shù)據(jù)不會在短時間內(nèi)重復,可以基于時間節(jié)點有選擇地讀取插播視頻數(shù)據(jù)。具體地,直播暫停裝置可以從距離當前時間節(jié)點超過指定時間閾值的時間節(jié)點關聯(lián)的插播視頻數(shù)據(jù)中獲取用于推送至所述直播服務器的插播視頻數(shù)據(jù)。所述指定時間閾值可以是預先設置的時長。例如,所述指定時間閾值可以為12小時。這樣,在12小時之內(nèi),同一個插播視頻數(shù)據(jù)便不會被重復播放。在指定資源庫或者本地緩存中,插播視頻數(shù)據(jù)可以按照時間節(jié)點進行排序,時間節(jié)點越接近當前時間節(jié)點,排序的位置可以越靠后。具體地,請參閱圖4,插播視頻數(shù)據(jù)可以按照數(shù)組進行存儲。在數(shù)組中,越靠前的插播視頻數(shù)據(jù),對應的時間節(jié)點距離當前時間節(jié)點越久。例如,如圖4所示,在本地緩存中共有3個插播視頻數(shù)據(jù),分別對應著2017年7月13日12點04分、2017年7月14日15點14分、2017年7月16日5點08分這三個時間節(jié)點。那么在從本地緩存中讀取插播視頻數(shù)據(jù)時,可以將數(shù)組中的第一個插播視頻數(shù)據(jù)讀取出來,作為即將向直播服務器推送的數(shù)據(jù)。此外,還可以根據(jù)當前時間節(jié)點與所述指定時間閾值,確定出候選的多個插播視頻數(shù)據(jù)。例如,當前時間節(jié)點為2017年7月16日12點,所述指定時間閾值為24小時,那么候選的插播視頻數(shù)據(jù)對應的最晚的時間節(jié)點為2017年7月15日12點,再晚于該時間節(jié)點的插播視頻數(shù)據(jù)便不可以重復播放。因此,如圖4所示中,只有第一插播視頻數(shù)據(jù)和第二插播視頻數(shù)據(jù)可以作為候選的插播視頻數(shù)據(jù)。然后,可以從候選的多個插播視頻數(shù)據(jù)中隨機讀取一個,作為即將向直播服務器推送的數(shù)據(jù)。
在本申請一個實施方式中,數(shù)據(jù)采集客戶端發(fā)來的暫停指令中,還可以包括時長信息。所述時長信息的作用在于:從當前時刻開始,經(jīng)過所述時長信息表征的時長后,所述直播服務器暫停播放所述數(shù)據(jù)采集客戶端采集的直播數(shù)據(jù)。例如,所述時長信息為10秒,那么就表明,從所述暫停指令生成的時刻開始,再經(jīng)過10秒鐘,數(shù)據(jù)采集客戶端便停止從攝像頭和麥克風處獲取直播數(shù)據(jù),相應地,直播服務器便暫停播放所述數(shù)據(jù)采集客戶端采集的直播數(shù)據(jù)。所述時長信息可以用于給直播暫停裝置預留出插播視頻數(shù)據(jù)的獲取時間,從而使得在暫停播放當前的直播視頻后,能夠無縫銜接上插播視頻數(shù)據(jù)。在本實施方式中,直播暫停裝置可以檢測當前的平均下載速度,所述平均下載速度可以是直播暫停裝置從指定資源庫中下載資源的平均速度。這樣,基于所述平均下載速度和所述時長信息表征的時長,從而可以確定在所述時長信息內(nèi),直播暫停裝置能夠下載的目標數(shù)據(jù)下載量。例如,所述平均下載速度可以是2m/s,所述時長信息可以是10秒,那么所述目標數(shù)據(jù)下載量可以是20mb。在本實施方式中,直播暫停裝置可以按照固定周期從指定資源庫中下載數(shù)據(jù)量較小的探測數(shù)據(jù)包。例如,直播暫停裝置可以每隔10秒,從指定資源庫中下載1mb的探測數(shù)據(jù)包,并根據(jù)下載探測數(shù)據(jù)包的速度,來計算當前的下載速度。然后,在接收到暫停指令后,可以將當前時刻之前計算的指定數(shù)據(jù)量個下載速度求取平均值,從而得到當前的平均下載速度。在本實施方式中,直播暫停裝置在確定了所述目標數(shù)據(jù)下載量后,可以獲取與所述目標數(shù)據(jù)下載量相適配的插播視頻數(shù)據(jù)。其中,插播視頻數(shù)據(jù)與目標數(shù)據(jù)下載量相適配可以指插播視頻數(shù)據(jù)的數(shù)據(jù)量小于或者等于所述目標數(shù)據(jù)下載量。當然,在實際應用場景中,為了充分利用預留的所述時長信息表征的時長,可以選擇下載數(shù)據(jù)量最接近所述目標數(shù)據(jù)下載量的插播視頻數(shù)據(jù)。
在本申請一個實施方式中,在主播下達暫停指令時,還可以一并指定暫停持續(xù)的時長。因此,所述暫停指令中還包括暫停時長信息,所述暫停時長信息用于表征暫停播放所述數(shù)據(jù)采集客戶端采集的直播數(shù)據(jù)所持續(xù)的時長。例如,所述暫停時長信息可以是5分鐘,那么在暫停5分鐘之后,可以繼續(xù)開始直播。這樣,直播暫停裝置在獲取到所述暫停指令后,可以根據(jù)其中包含的暫停時長信息,從指定資源庫中或者本地緩存中讀取至少一個插播視頻數(shù)據(jù);其中,所述至少一個插播視頻數(shù)據(jù)對應的播放時長之和與所述暫停時長信息表征的時長相匹配。其中,播放時長之和與所述暫停時長信息表征的時長相匹配可以指時長之和大于所述暫停時長信息表征的時長。例如,所述時長信息為5分鐘,那么從指定資源庫中或者本地緩存中讀取的至少一個插播視頻數(shù)據(jù)的時長之和可以大于5分鐘,從而能夠保證在暫停期間能夠持續(xù)不斷地播放插播視頻數(shù)據(jù)。
s13:將所述插播視頻數(shù)據(jù)推送至所述直播服務器,以使得所述直播服務器暫停向用戶客戶端發(fā)送所述數(shù)據(jù)采集客戶端當前采集的直播數(shù)據(jù),并在暫停期間向所述用戶客戶端發(fā)送所述插播視頻數(shù)據(jù)。
在本實施方式中,直播暫停裝置在獲取到插播視頻數(shù)據(jù)后,便可以將所述插播視頻數(shù)據(jù)推送至所述直播服務器。當然,在實際應用場景中,所述直播暫停裝置如果是數(shù)據(jù)采集客戶端中的一個模塊,那么在獲取到插播視頻數(shù)據(jù)后,可以由數(shù)據(jù)采集客戶端將所述插播視頻數(shù)據(jù)轉(zhuǎn)換為直播流數(shù)據(jù),并向所述直播服務器推送所述直播流數(shù)據(jù)。所述直播流數(shù)據(jù)可以是遵循流媒體協(xié)議的數(shù)據(jù)。所述流媒體協(xié)議例如可以是rtp(real-timetransportprotocol,實時傳輸協(xié)議)、rtcp(real-timetransportcontrolprotocol,實時傳輸控制協(xié)議)、srtp(securereal-timetransportprotocol,安全實時傳輸協(xié)議)等。
在一個應用場景中,直播暫停裝置可以是數(shù)據(jù)采集客戶端中的一個模塊,這樣,數(shù)據(jù)采集客戶端生成暫停指令后,便可以停止從攝像頭和麥克風處獲取直播數(shù)據(jù),而是從直播暫停裝置處獲取插播視頻數(shù)據(jù)。這樣,數(shù)據(jù)采集客戶端推送給直播服務器的便是插播視頻數(shù)據(jù)。此時,直播服務器可以按照流媒體協(xié)議,向用戶客戶端推送插播視頻數(shù)據(jù)。
在另一個應用場景中,直播暫停裝置可以是獨立的設備,此時,在生成暫停指令后,數(shù)據(jù)采集客戶端為了不與直播服務器斷開連接,可以依然向直播服務器提供直播數(shù)據(jù)。但是,此時直播暫停裝置也會一并向直播服務器發(fā)送插播視頻數(shù)據(jù)。在同時接收到兩個視頻數(shù)據(jù)的情況下,直播服務器可以暫停向用戶客戶端發(fā)送所述數(shù)據(jù)采集客戶端當前采集的直播數(shù)據(jù),并在暫停期間向所述用戶客戶端發(fā)送所述插播視頻數(shù)據(jù)。在具體實施時,插播視頻數(shù)據(jù)的播放優(yōu)先級可以高于數(shù)據(jù)采集客戶端采集的直播數(shù)據(jù)的播放優(yōu)先級,這樣,直播服務器在同時接收到這兩種數(shù)據(jù)時,可以優(yōu)先播放插播視頻數(shù)據(jù)。
在本申請一個實施方式中,在暫停結束之后,數(shù)據(jù)采集客戶端中可以生成取消暫停指令。該取消暫停指令可以發(fā)送至直播暫停裝置。在接收所述數(shù)據(jù)采集客戶端發(fā)來的取消暫停指令后,直播暫停裝置可以響應于所述取消暫停指令,停止向所述直播服務器推送插播視頻數(shù)據(jù),以使得所述直播服務器向所述用戶客戶端發(fā)送所述數(shù)據(jù)采集客戶端當前采集的直播數(shù)據(jù)。
請參閱圖5,本申請還提供一種直播暫停裝置,所述裝置可以包括以下單元。
暫停指令接收單元100,用于接收數(shù)據(jù)采集客戶端發(fā)來的暫停指令;所述數(shù)據(jù)采集客戶端用于向直播服務器提供采集的直播數(shù)據(jù);
插播視頻數(shù)據(jù)獲取單元200,用于響應于所述暫停指令,獲取插播視頻數(shù)據(jù);
推送單元300,用于將所述插播視頻數(shù)據(jù)推送至所述直播服務器,以使得所述直播服務器暫停向用戶客戶端發(fā)送所述數(shù)據(jù)采集客戶端當前采集的直播數(shù)據(jù),并在暫停期間向所述用戶客戶端發(fā)送所述插播視頻數(shù)據(jù)。
在本實施方式中,所述暫停指令中還包括時長信息;其中,從當前時刻開始,經(jīng)過所述時長信息表征的時長后,所述直播服務器暫停播放所述數(shù)據(jù)采集客戶端采集的直播數(shù)據(jù);相應地,所述插播視頻數(shù)據(jù)獲取單元包括:
目標數(shù)據(jù)下載量確定模塊,用于檢測當前的平均下載速度,并基于所述平均下載速度和所述時長信息表征的時長,確定目標數(shù)據(jù)下載量;
數(shù)據(jù)獲取模塊,用于獲取與所述目標數(shù)據(jù)下載量相適配的插播視頻數(shù)據(jù)。
在本實施方式中,所述暫停指令中還包括暫停時長信息;其中,所述暫停時長信息用于表征暫停播放所述數(shù)據(jù)采集客戶端采集的直播數(shù)據(jù)所持續(xù)的時長;相應地,所述插播視頻數(shù)據(jù)獲取單元包括:時長匹配模塊,用于從指定資源庫中或者本地緩存中讀取至少一個插播視頻數(shù)據(jù);其中,所述至少一個插播視頻數(shù)據(jù)對應的播放時長之和與所述暫停時長信息表征的時長相匹配。
在本實施方式中,所述裝置還包括:取消指令接收單元,用于接收所述數(shù)據(jù)采集客戶端發(fā)來的取消暫停指令;停止推送單元,用于響應于所述取消暫停指令,停止向所述直播服務器推送插播視頻數(shù)據(jù),以使得所述直播服務器向所述用戶客戶端發(fā)送所述數(shù)據(jù)采集客戶端當前采集的直播數(shù)據(jù)。
上述實施方式公開的直播暫停裝置,其實現(xiàn)的具體功能,可以與本申請中上述的直播暫停方法的實施方式相對照解釋,可以實現(xiàn)本申請的直播暫停方法的實施方式并達到該方法實施方式的技術效果。
本申請還提供一種直播暫停方法,所述方法可以應用于直播服務器中。請參閱圖6,所述方法可以包括以下步驟。
s21:接收用戶客戶端發(fā)來的直播數(shù)據(jù)請求,并向所述用戶客戶端發(fā)送所述直播數(shù)據(jù)請求指向的直播數(shù)據(jù);其中,所述直播數(shù)據(jù)由數(shù)據(jù)采集客戶端采集并上傳。
在本實施方式中,用戶客戶端在打開直播平臺的網(wǎng)站或者應用時,用戶可以通過點擊某個主播的房間或者點擊某個主播的直播畫面,來向直播服務器發(fā)送直播數(shù)據(jù)請求。該直播數(shù)據(jù)請求可以指向?qū)闹辈?shù)據(jù)。這樣,直播服務器便可以接收用戶客戶端發(fā)來的直播數(shù)據(jù)請求,并向所述用戶客戶端發(fā)送所述直播數(shù)據(jù)請求指向的直播數(shù)據(jù)。其中,所述直播數(shù)據(jù)由數(shù)據(jù)采集客戶端采集并上傳。所述數(shù)據(jù)采集客戶端可以與用于采集直播數(shù)據(jù)的攝像頭、麥克風等設備相連,或者所述數(shù)據(jù)采集客戶端本身可以包括攝像頭、麥克風等設備。主播在開始直播時,數(shù)據(jù)采集客戶端可以與直播服務器建立流連接。由于直播過程中數(shù)據(jù)采集客戶端需要持續(xù)向直播服務器推送直播數(shù)據(jù),因此所述流連接可以是長連接。
s23:當接收到直播暫停裝置發(fā)來的插播視頻數(shù)據(jù)時,暫停向所述用戶客戶端發(fā)送所述直播數(shù)據(jù),并在暫停期間向所述用戶客戶端推送所述插播視頻數(shù)據(jù)。
在本實施方式中,數(shù)據(jù)采集客戶端在向直播服務器推送直播數(shù)據(jù)時,可以預先進行判斷,是否從攝像頭和麥克風中獲取直播數(shù)據(jù)。如果主播當前在數(shù)據(jù)采集客戶端中沒有下達暫停指令,數(shù)據(jù)采集客戶端便可以從攝像頭和麥克風中獲取直播數(shù)據(jù)。數(shù)據(jù)采集客戶端便可以將獲取的直播數(shù)據(jù)轉(zhuǎn)換為直播數(shù)據(jù)流,并向直播服務器推送該轉(zhuǎn)換得到的直播數(shù)據(jù)流。這樣,用戶客戶端便可以從直播服務器中獲取到該主播的直播畫面。其中,所述直播數(shù)據(jù)流可以是遵循流媒體協(xié)議的數(shù)據(jù)流。所述流媒體協(xié)議例如可以是rtp(real-timetransportprotocol,實時傳輸協(xié)議)、rtcp(real-timetransportcontrolprotocol,實時傳輸控制協(xié)議)、srtp(securereal-timetransportprotocol,安全實時傳輸協(xié)議)等。
在本實施方式中,如果主播在數(shù)據(jù)采集客戶端中下達了暫停指令,數(shù)據(jù)采集客戶端便可以暫停從攝像頭和麥克風等設備中獲取直播數(shù)據(jù)。為了能夠向直播服務器繼續(xù)推送直播數(shù)據(jù)流,此時數(shù)據(jù)采集客戶端可以向直播暫停裝置發(fā)送該暫停指令,以使得所述直播暫停裝置可以提供用于直播的視頻數(shù)據(jù)。
在本實施方式中,當直播暫停裝置接收到所述暫停指令時,便可以獲取用于替代直播數(shù)據(jù)的插播視頻數(shù)據(jù)。所述插播視頻數(shù)據(jù)可以是主播預先在數(shù)據(jù)采集客戶端中存儲的視頻素材。所述視頻素材例如可以是視頻集錦、廣告、圖片集等資源。所述插播視頻數(shù)據(jù)可以統(tǒng)一存儲于指定資源庫中。所述指定資源庫可以是文件夾,也可以是基于數(shù)據(jù)結構建立的數(shù)據(jù)庫。所述數(shù)據(jù)庫例如可以是mysql、oracle、db2、sybase等。
在本實施方式中,直播暫停裝置在獲取到插播視頻數(shù)據(jù)后,便可以將所述插播視頻數(shù)據(jù)推送至所述直播服務器。這樣,當接收到直播暫停裝置發(fā)來的插播視頻數(shù)據(jù)時,直播服務器便可以暫停向所述用戶客戶端發(fā)送所述直播數(shù)據(jù),并在暫停期間向所述用戶客戶端推送所述插播視頻數(shù)據(jù)。
在本申請一個實施方式中,在暫停階段結束后,數(shù)據(jù)采集客戶端可以向直播暫停裝置發(fā)送取消暫停指令。這樣,直播暫停裝置可以響應于所述取消暫停指令,停止向所述直播服務器推送插播視頻數(shù)據(jù)。在本實施方式中,當直播服務器在指定時長內(nèi)無法接收到所述直播暫停裝置發(fā)來的插播視頻數(shù)據(jù)時,表明當前已經(jīng)結束了暫停階段,從而可以向所述用戶客戶端推送所述數(shù)據(jù)采集客戶端當前采集的直播數(shù)據(jù)。
在本申請一個實施方式中,直播服務器在接收到直播暫停裝置發(fā)來的插播視頻數(shù)據(jù)后,可以將接收到的所述插播視頻數(shù)據(jù)轉(zhuǎn)換為直播流數(shù)據(jù),并向所述用戶客戶端推送所述直播流數(shù)據(jù)。期貨總,所述直播流數(shù)據(jù)可以是遵循流媒體協(xié)議的數(shù)據(jù)流。所述流媒體協(xié)議例如可以是rtp(real-timetransportprotocol,實時傳輸協(xié)議)、rtcp(real-timetransportcontrolprotocol,實時傳輸控制協(xié)議)、srtp(securereal-timetransportprotocol,安全實時傳輸協(xié)議)等。
在本申請一個實施方式中,直播服務器還可以在數(shù)據(jù)采集客戶端出現(xiàn)異常時,無法提供直播數(shù)據(jù)時,自動向用戶客戶端推送插播視頻數(shù)據(jù)。具體地,當直播服務器在指定時長內(nèi)無法接收到所述數(shù)據(jù)采集客戶端上傳的直播數(shù)據(jù)時,表明數(shù)據(jù)采集客戶端出現(xiàn)了異常,直播過程需要暫停。此時,直播服務器可以讀取本地存儲的插播視頻數(shù)據(jù),并向所述用戶客戶端推送讀取的所述插播視頻數(shù)據(jù)。所述本地存儲的插播視頻數(shù)據(jù)可以是在之前的暫停過程中由直播暫停裝置發(fā)來的。直播服務器可以存儲最近一段時間內(nèi)直播暫停裝置發(fā)來的插播視頻數(shù)據(jù),為了節(jié)省存儲空間,可以將距離當前時間較遠的插播視頻數(shù)據(jù)自動刪除。例如,直播服務器可以僅保留最近24小時內(nèi)直播暫停裝置發(fā)來的插播視頻數(shù)據(jù)。
在本實施方式中,當數(shù)據(jù)采集客戶端恢復正常,能夠提供直播數(shù)據(jù)時,直播服務器便可以繼續(xù)向用戶客戶端推送數(shù)據(jù)采集客戶端上傳的直播數(shù)據(jù)。具體地,當直播服器在推送從本地讀取的所述插播視頻數(shù)據(jù)的過程中,接收到所述數(shù)據(jù)采集客戶端上傳的直播數(shù)據(jù)時,表明此時數(shù)據(jù)采集客戶端已經(jīng)恢復正常,從而可以停止向所述用戶客戶端推送所述插播視頻數(shù)據(jù),并開始向所述用戶客戶端推送所述數(shù)據(jù)采集客戶端上傳的直播數(shù)據(jù)。
請參閱圖7,本申請還提供一種直播服務器,所述直播服務器包括:
直播數(shù)據(jù)發(fā)送單元110,用于接收用戶客戶端發(fā)來的直播數(shù)據(jù)請求,并向所述用戶客戶端發(fā)送所述直播數(shù)據(jù)請求指向的直播數(shù)據(jù);其中,所述直播數(shù)據(jù)由數(shù)據(jù)采集客戶端采集并上傳;
插播視頻數(shù)據(jù)發(fā)送單元210,用于當接收到直播暫停裝置發(fā)來的插播視頻數(shù)據(jù)時,暫停向所述用戶客戶端發(fā)送所述直播數(shù)據(jù),并在暫停期間向所述用戶客戶端推送所述插播視頻數(shù)據(jù)。
在本實施方式中,所述直播服務器還包括:
直播數(shù)據(jù)重新發(fā)送單元,用于當在指定時長內(nèi)無法接收到所述直播暫停裝置發(fā)來的插播視頻數(shù)據(jù)時,向所述用戶客戶端推送所述數(shù)據(jù)采集客戶端當前采集的直播數(shù)據(jù)。
在本實施方式中,所述直播服務器還包括:
本地讀取單元,用于當在指定時長內(nèi)無法接收到所述數(shù)據(jù)采集客戶端上傳的直播數(shù)據(jù)時,讀取本地存儲的插播視頻數(shù)據(jù),并向所述用戶客戶端推送讀取的所述插播視頻數(shù)據(jù)。
上述實施方式公開的直播服務器,其實現(xiàn)的具體功能,可以與本申請中應用于直播服務器中的直播暫停方法的實施方式相對照解釋,可以實現(xiàn)本申請的該直播暫停方法的實施方式并達到該方法實施方式的技術效果。
請參閱圖8,本申請還提供一種直播暫停系統(tǒng),所述系統(tǒng)包括數(shù)據(jù)采集客戶端、直播暫停裝置、直播服務器以及用戶客戶端,其中:
所述數(shù)據(jù)采集客戶端,用于向所述直播服務器提供采集的直播數(shù)據(jù),并向所述直播暫停裝置發(fā)送暫停指令;
所述直播暫停裝置,用于響應于所述暫停指令,獲取插播視頻數(shù)據(jù);將所述插播視頻數(shù)據(jù)推送至所述直播服務器;
所述直播服務器,用于在接收到所述直播暫停裝置發(fā)送的插播視頻數(shù)據(jù)后,暫停向所述用戶客戶端發(fā)送所述數(shù)據(jù)采集客戶端當前采集的直播數(shù)據(jù),并在暫停期間向所述用戶客戶端發(fā)送所述插播視頻數(shù)據(jù)。
上述實施方式公開的系統(tǒng),其數(shù)據(jù)采集客戶端、直播暫停裝置、直播服務器以及用戶客戶端實現(xiàn)的具體功能,可以與本申請中上述的直播暫停方法的實施方式相對照解釋,可以實現(xiàn)本申請的直播暫停方法的實施方式并達到該方法實施方式的技術效果。
由上可見,本申請的數(shù)據(jù)采集客戶端在下達暫停指令后,數(shù)據(jù)采集客戶端可以繼續(xù)與直播服務器保持通信連接,而不會與直播服務器斷開連接。這樣,當再次恢復直播時,數(shù)據(jù)采集客戶端可以按照之前的通信連接向直播服務器提供采集的直播數(shù)據(jù),從而減少了與直播服務器重新建立連接的時間,提高了直播的效率。此外,直播暫停裝置便可以獲取用于替代直播數(shù)據(jù)流的插播視頻數(shù)據(jù)。然后,所述直播暫停裝置可以將所述插播視頻數(shù)據(jù)向直播服務器推送。這樣,當直播服務器接收到推送至的插播視頻數(shù)據(jù)時,便可以向用戶客戶端推送該插播視頻數(shù)據(jù),從而使得在數(shù)據(jù)采集客戶端暫停從主播的攝像頭和麥克風獲取直播數(shù)據(jù)流時,可以由所述直播暫停裝置向直播服務器推送插播視頻數(shù)據(jù),以保證用戶客戶端中播放的直播畫面不會中斷。
在20世紀90年代,對于一個技術的改進可以很明顯地區(qū)分是硬件上的改進(例如,對二極管、晶體管、開關等電路結構的改進)還是軟件上的改進(對于方法流程的改進)。然而,隨著技術的發(fā)展,當今的很多方法流程的改進已經(jīng)可以視為硬件電路結構的直接改進。設計人員幾乎都通過將改進的方法流程編程到硬件電路中來得到相應的硬件電路結構。因此,不能說一個方法流程的改進就不能用硬件實體模塊來實現(xiàn)。例如,可編程邏輯器件(programmablelogicdevice,pld)(例如現(xiàn)場可編程門陣列(fieldprogrammablegatearray,fpga))就是這樣一種集成電路,其邏輯功能由用戶對器件編程來確定。由設計人員自行編程來把一個數(shù)字系統(tǒng)“集成”在一片pld上,而不需要請芯片制造廠商來設計和制作專用的集成電路芯片。而且,如今,取代手工地制作集成電路芯片,這種編程也多半改用“邏輯編譯器(logiccompiler)”軟件來實現(xiàn),它與程序開發(fā)撰寫時所用的軟件編譯器相類似,而要編譯之前的原始代碼也得用特定的編程語言來撰寫,此稱之為硬件描述語言(hardwaredescriptionlanguage,hdl),而hdl也并非僅有一種,而是有許多種,如abel(advancedbooleanexpressionlanguage)、ahdl(alterahardwaredescriptionlanguage)、confluence、cupl(cornelluniversityprogramminglanguage)、hdcal、jhdl(javahardwaredescriptionlanguage)、lava、lola、myhdl、palasm、rhdl(rubyhardwaredescriptionlanguage)等,目前最普遍使用的是vhdl(very-high-speedintegratedcircuithardwaredescriptionlanguage)與verilog2。本領域技術人員也應該清楚,只需要將方法流程用上述幾種硬件描述語言稍作邏輯編程并編程到集成電路中,就可以很容易得到實現(xiàn)該邏輯方法流程的硬件電路。
本領域技術人員也知道,除了以純計算機可讀程序代碼方式實現(xiàn)客戶端、服務器以外,完全可以通過將方法步驟進行邏輯編程來使得客戶端、服務器以邏輯門、開關、專用集成電路、可編程邏輯控制器和嵌入微控制器等的形式來實現(xiàn)相同功能。因此這種客戶端、服務器可以被認為是一種硬件部件,而對其內(nèi)包括的用于實現(xiàn)各種功能的裝置也可以視為硬件部件內(nèi)的結構?;蛘呱踔?,可以將用于實現(xiàn)各種功能的裝置視為既可以是實現(xiàn)方法的軟件模塊又可以是硬件部件內(nèi)的結構。
通過以上的實施方式的描述可知,本領域的技術人員可以清楚地了解到本申請可借助軟件加必需的通用硬件平臺的方式來實現(xiàn)。基于這樣的理解,本申請的技術方案本質(zhì)上或者說對現(xiàn)有技術做出貢獻的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品可以存儲在存儲介質(zhì)中,如rom/ram、磁碟、光盤等,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網(wǎng)絡設備等)執(zhí)行本申請各個實施方式或者實施方式的某些部分所述的方法。
本說明書中的各個實施方式均采用遞進的方式描述,各個實施方式之間相同相似的部分互相參見即可,每個實施方式重點說明的都是與其他實施方式的不同之處。尤其,針對直播暫停裝置、直播服務器和系統(tǒng)的實施方式來說,均可以參照前述方法的實施方式的介紹對照解釋。
本申請可以在由計算機執(zhí)行的計算機可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結構等等。也可以在分布式計算環(huán)境中實踐本申請,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡而被連接的遠程處理設備來執(zhí)行任務。在分布式計算環(huán)境中,程序模塊可以位于包括存儲設備在內(nèi)的本地和遠程計算機存儲介質(zhì)中。
雖然通過實施方式描繪了本申請,本領域普通技術人員知道,本申請有許多變形和變化而不脫離本申請的精神,希望所附的權利要求包括這些變形和變化而不脫離本申請的精神。