本發(fā)明涉及視頻直播中的啟動(dòng)播放領(lǐng)域,具體來講是一種直播客戶端快速啟動(dòng)播放的方法及系統(tǒng)。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的迅速發(fā)展,越來越多的用戶可以使用電腦、手機(jī)等終端通過網(wǎng)絡(luò)觀看在線視頻直播。在線視頻直播是指利用互聯(lián)網(wǎng)網(wǎng)絡(luò)資源進(jìn)行的現(xiàn)場視頻直播服務(wù),通過現(xiàn)場的視頻拍攝同步發(fā)布到網(wǎng)絡(luò)上,用戶可以同一時(shí)間在網(wǎng)絡(luò)上看到實(shí)時(shí)的現(xiàn)場情況。
目前,隨著網(wǎng)絡(luò)傳輸技術(shù)的迅猛發(fā)展以及人們生活節(jié)奏的不斷加快,用戶在利用直播客戶端(如電腦、手機(jī)等)進(jìn)行直播視頻的觀看時(shí),對啟動(dòng)播放的速度提出了越來高的要求。而現(xiàn)有的啟動(dòng)直播的方法通常采用的是一種等待流媒體數(shù)據(jù)(音頻流數(shù)據(jù)、視頻流數(shù)據(jù))獲取后,再進(jìn)行播放器的初始化和音視頻數(shù)據(jù)的軟解碼的方式。現(xiàn)有的方式中由于等待流媒體數(shù)據(jù)的時(shí)間較長,從而使得開啟直播時(shí)的等待時(shí)間較長,無法達(dá)到即開即播的效果,使得用戶體驗(yàn)較差。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明的目的是為了克服上述背景技術(shù)的不足,提供一種直播客戶端快速啟動(dòng)播放的方法及系統(tǒng),能在直播客戶端實(shí)現(xiàn)視頻播放的快速啟動(dòng),達(dá)到即開即播的效果,用戶體驗(yàn)好。
為達(dá)到以上目的,本發(fā)明提供一種直播客戶端快速啟動(dòng)播放的方法,包括以下步驟:
A、當(dāng)用戶點(diǎn)擊進(jìn)入某直播房間后,直播客戶端獲取該直播房間的房間信息,并從房間信息中解析出相應(yīng)的視頻播放的鏈接地址,轉(zhuǎn)入步驟B;
B、直播客戶端根據(jù)解析出的鏈接地址向媒體服務(wù)器發(fā)出媒體數(shù)據(jù)流請求,轉(zhuǎn)入步驟C;
C、媒體服務(wù)器收到直播客戶端發(fā)來的請求后,向直播客戶端下發(fā)媒體數(shù)據(jù)流,所述媒體數(shù)據(jù)流包括媒體描述信息和音視頻數(shù)據(jù),且媒體描述信息位于媒體數(shù)據(jù)流的前1000~2000個(gè)字節(jié)內(nèi),轉(zhuǎn)入步驟D;
D、直播客戶端一收到直播客戶端發(fā)來媒體數(shù)據(jù)流,就判斷前1000~2000個(gè)字節(jié)內(nèi)是否有媒體描述信息,若是,根據(jù)解析后的媒體描述信息初始化直播客戶端的播放器,轉(zhuǎn)入步驟E;否則,需等待獲取到完整的媒體數(shù)據(jù)流后,再根據(jù)解析后的媒體描述信息初始化直播客戶端的播放器,轉(zhuǎn)入步驟E;
E、利用初始化后的播放器對媒體數(shù)據(jù)流中的音視頻數(shù)據(jù)進(jìn)行解碼并輸出,結(jié)束。
在上述技術(shù)方案的基礎(chǔ)上,步驟C中,媒體服務(wù)器向直播客戶端下發(fā)媒體數(shù)據(jù)流,具體包括以下步驟:媒體服務(wù)器首先下發(fā)媒體描述信息;待媒體描述信息下發(fā)結(jié)束后,再下發(fā)音視頻數(shù)據(jù)。
在上述技術(shù)方案的基礎(chǔ)上,步驟C中所述音視頻數(shù)據(jù)包括視頻流和音頻流;所述媒體描述信息包括播放器所需的配置參數(shù):視頻分辨率、視頻格式、音頻采樣率、音頻通道數(shù)以及音頻格式。
在上述技術(shù)方案的基礎(chǔ)上,步驟D中,根據(jù)解析后的媒體描述信息初始化直播客戶端的播放器,具體包括以下步驟:根據(jù)媒體編碼標(biāo)準(zhǔn)對媒體描述信息進(jìn)行解析,從中提取出播放器所需的配置參數(shù);根據(jù)提取出的配置參數(shù)進(jìn)行相關(guān)參數(shù)的配置并實(shí)例化直播客戶端的播放器。
在上述技術(shù)方案的基礎(chǔ)上,步驟E具體包括以下步驟:步驟E1、媒體流解復(fù)用:利用初始化后的播放器從媒體數(shù)據(jù)流中分離出視頻流和音頻流,轉(zhuǎn)入步驟E2;步驟E2、音視頻流解碼:通過軟/硬解碼方式,分別對視頻流和音頻流進(jìn)行視頻流解碼和音頻流解碼,轉(zhuǎn)入步驟E3;步驟E3、音視頻輸出或顯示:將解碼后的音頻流輸出到外部硬件設(shè)備中;將解碼后的視頻流通過OpenGL接口繪制到屏幕上顯示。
本發(fā)明同時(shí)還提供一種直播客戶端快速啟動(dòng)播放的系統(tǒng),包括直播客戶端和媒體服務(wù)器;所述直播客戶端包括信息獲取模塊、請求發(fā)送模塊、播放器初始化模塊和音視頻解碼輸出模塊;所述媒體服務(wù)器包括媒體數(shù)據(jù)流下發(fā)模塊;
所述信息獲取模塊用于:當(dāng)用戶點(diǎn)擊進(jìn)入某直播房間后,獲取該直播房間的房間信息,并從房間信息中解析出相應(yīng)的視頻播放的鏈接地址;
所述請求發(fā)送模塊用于:根據(jù)信息獲取模塊解析出的鏈接地址,向媒體服務(wù)器發(fā)出媒體數(shù)據(jù)流請求;
所述媒體數(shù)據(jù)流下發(fā)模塊用于:收到直播客戶端發(fā)來的請求后,向直播客戶端下發(fā)媒體數(shù)據(jù)流,所述媒體數(shù)據(jù)流包括媒體描述信息和音視頻數(shù)據(jù),且媒體描述信息位于媒體數(shù)據(jù)流的前1000~2000個(gè)字節(jié)內(nèi);
所述播放器初始化模塊用于:一旦收到直播客戶端發(fā)來媒體數(shù)據(jù)流,就判斷前1000~2000個(gè)字節(jié)內(nèi)是否有媒體描述信息,若是,根據(jù)解析后的媒體描述信息初始化直播客戶端的播放器;否則,需等待獲取到完整的媒體數(shù)據(jù)流后,再根據(jù)解析后的媒體描述信息初始化直播客戶端的播放器;
所述音視頻解碼輸出模塊用于:利用初始化后的播放器對媒體數(shù)據(jù)流中的音視頻數(shù)據(jù)進(jìn)行解碼并輸出。
在上述技術(shù)方案的基礎(chǔ)上,所述媒體數(shù)據(jù)流下發(fā)模塊向直播客戶端下發(fā)媒體數(shù)據(jù)流的具體流程為:所述媒體數(shù)據(jù)流下發(fā)模塊首先下發(fā)媒體描述信息;待媒體描述信息下發(fā)結(jié)束后,再下發(fā)音視頻數(shù)據(jù)。
在上述技術(shù)方案的基礎(chǔ)上,所述音視頻數(shù)據(jù)包括視頻流和音頻流;所述媒體描述信息包括播放器所需的配置參數(shù):視頻分辨率、視頻格式、音頻采樣率、音頻通道數(shù)以及音頻格式。
在上述技術(shù)方案的基礎(chǔ)上,所述播放器初始化模塊根據(jù)解析后的媒體描述信息初始化直播客戶端的播放器,具體包括以下操作:所述播放器初始化模塊根據(jù)媒體編碼標(biāo)準(zhǔn)對媒體描述信息進(jìn)行解析,從中提取出播放器所需的配置參數(shù);根據(jù)提取出的配置參數(shù)進(jìn)行相關(guān)參數(shù)的配置并實(shí)例化直播客戶端的播放器。
在上述技術(shù)方案的基礎(chǔ)上,所述音視頻解碼輸出模塊進(jìn)行解碼并輸出的具體流程為:利用初始化后的播放器從媒體數(shù)據(jù)流中分離出視頻流和音頻流;再通過軟/硬解碼方式,分別對視頻流和音頻流進(jìn)行視頻流解碼和音頻流解碼;將解碼后的音頻流輸出到外部硬件設(shè)備中,將解碼后的視頻流通過OpenGL接口繪制到屏幕上顯示。
本發(fā)明的有益效果在于:
(1)本發(fā)明中,媒體服務(wù)器與直播客戶端進(jìn)行RTMP協(xié)議交互時(shí)(即下發(fā)媒體數(shù)據(jù)流時(shí)),在前1000~2000個(gè)字節(jié)內(nèi)下發(fā)的是媒體描述信息onMetaData,,其中包含播放器所需的配置參數(shù);在播放器初始化時(shí),若在前1000~2000個(gè)字節(jié)內(nèi)讀取到onMetaData數(shù)據(jù),則直接解析onMetaData數(shù)據(jù),獲取配置參數(shù)詳情后直接初始化播放器,而不需要等待真正的音視頻數(shù)據(jù)獲取后,再進(jìn)行播放器的初始化和音視頻數(shù)據(jù)的軟解碼。與現(xiàn)有技術(shù)的相比,本發(fā)明能在直播客戶端實(shí)現(xiàn)視頻播放的快速啟動(dòng),達(dá)到即開即播的效果,用戶體驗(yàn)佳。
(2)本發(fā)明中,在進(jìn)行視頻顯示時(shí),是將解碼后的視頻流通過OpenGL接口繪制到屏幕上顯示。由于解碼后的視頻幀數(shù)據(jù)一般為YUV格式,需要轉(zhuǎn)換成RGB格式后才能在終端屏幕顯示,而GPU具備并行計(jì)算能力,其格式轉(zhuǎn)換的速度要比CPU直接處理要快,所以輸出顯示時(shí)直接調(diào)用OpenGL接口進(jìn)行解碼后的數(shù)據(jù)繪制顯示,能達(dá)到快速渲染的效果。
附圖說明
圖1為本發(fā)明實(shí)施例中直播客戶端快速啟動(dòng)播放的方法流程圖;
圖2為媒體服務(wù)器向直播客戶端下發(fā)媒體數(shù)據(jù)流的示意圖;
圖3為步驟S6的具體流程圖;
圖4為本發(fā)明實(shí)施例中直播客戶端快速啟動(dòng)播放的系統(tǒng)的結(jié)構(gòu)框圖。
具體實(shí)施方式
下面結(jié)合附圖及具體實(shí)施例對本發(fā)明作進(jìn)一步的詳細(xì)描述。
參見圖1所示,本發(fā)明實(shí)施例提供一種直播客戶端快速啟動(dòng)播放的方法,包括以下步驟:
步驟S1:當(dāng)用戶點(diǎn)擊進(jìn)入某直播房間后,直播客戶端獲取該直播房間的房間信息,并從房間信息中解析出相應(yīng)的視頻播放的鏈接地址,轉(zhuǎn)入步驟S2。
步驟S2:直播客戶端根據(jù)解析出的鏈接地址向媒體服務(wù)器發(fā)出媒體數(shù)據(jù)流請求,轉(zhuǎn)入步驟S3。
步驟S3:媒體服務(wù)器收到直播客戶端發(fā)來的請求后,通過與直播客戶端進(jìn)行RTMP(Real Time Messaging Protocol,實(shí)時(shí)消息傳輸)協(xié)議交互的方式,向直播客戶端下發(fā)媒體數(shù)據(jù)流,所述媒體數(shù)據(jù)流包括媒體描述信息onMetaData和音視頻數(shù)據(jù),且媒體描述信息onMetaData位于媒體數(shù)據(jù)流的前1000~2000個(gè)字節(jié)內(nèi)(優(yōu)選為1000字節(jié)內(nèi)),如圖2所示,轉(zhuǎn)入步驟S4。
其中,所述音視頻數(shù)據(jù)包括視頻流Video和音頻流Audio;所述媒體描述信息onMetaData包括播放器所需的配置參數(shù),該配置參數(shù)包括但不限于:視頻分辨率、視頻格式、音頻采樣率、音頻通道數(shù)以及音頻格式。
實(shí)際操作時(shí),媒體服務(wù)器向直播客戶端下發(fā)媒體數(shù)據(jù)流,具體包括以下步驟:媒體服務(wù)器首先下發(fā)簡短而必要的媒體描述信息onMetaData;待媒體描述信息onMetaData下發(fā)結(jié)束后,然后再下發(fā)正常的音視頻數(shù)據(jù)。
步驟S4:直播客戶端一收到直播客戶端發(fā)來媒體數(shù)據(jù)流,就判斷前1000~2000個(gè)字節(jié)內(nèi)是否有媒體描述信息onMetaData,若是,直接轉(zhuǎn)入步驟S5;否則,需等待獲取到完整的媒體數(shù)據(jù)流后,再轉(zhuǎn)入步驟S5。
步驟S5:根據(jù)解析后的媒體描述信息onMetaData,初始化直播客戶端的播放器,轉(zhuǎn)入步驟S6。
實(shí)際操作時(shí),步驟S5具體包括以下操作:根據(jù)媒體編碼標(biāo)準(zhǔn)對媒體描述信息onMetaData進(jìn)行解析,從中提取出播放器所需的配置參數(shù)(包括但不限于視頻分辨率,視頻格式,音頻采樣率,音頻通道數(shù),音頻格式);根據(jù)提取出的配置參數(shù)進(jìn)行相關(guān)參數(shù)的配置并實(shí)例化直播客戶端的播放器。
可以理解的是,直播客戶端包括電腦、手機(jī)等,由于不同的直播客戶端的播放器實(shí)例化存在一定的差異,因此,具體細(xì)節(jié)可參考各直播客戶端的具體要求。
步驟S6:利用初始化后的播放器對媒體數(shù)據(jù)流中的音視頻數(shù)據(jù)進(jìn)行解碼并輸出,結(jié)束。
實(shí)際操作時(shí),如圖3所示,步驟S6具體包括以下操作:
步驟S601、媒體流解復(fù)用:初始化后的播放器通過專業(yè)軟件從媒體數(shù)據(jù)流中分離出視頻流和音頻流,轉(zhuǎn)入步驟S602;
步驟S602、音視頻流解碼:通過軟/硬解碼方式,分別對視頻流和音頻流進(jìn)行視頻流解碼和音頻流解碼,轉(zhuǎn)入步驟S603;
步驟S603、音視頻輸出或顯示:將解碼后的音頻流輸出到相應(yīng)的外部硬件設(shè)備中(如揚(yáng)聲器或耳機(jī));將解碼后的視頻流通過OpenGL(Open Graphics Library,是指一個(gè)跨編程語言、跨平臺的編程接口規(guī)格的專業(yè)圖形程序接口)接口繪制到當(dāng)前屏幕上顯示。
參見圖4所示,本發(fā)明實(shí)施例還提供一種直播客戶端快速啟動(dòng)播放的系統(tǒng),包括直播客戶端和媒體服務(wù)器。所述直播客戶端包括信息獲取模塊、請求發(fā)送模塊、播放器初始化模塊和音視頻解碼輸出模塊;所述媒體服務(wù)器包括媒體數(shù)據(jù)流下發(fā)模塊。
具體來說,所述信息獲取模塊用于:當(dāng)用戶點(diǎn)擊進(jìn)入某直播房間后,獲取該直播房間的房間信息,并從房間信息中解析出相應(yīng)的視頻播放的鏈接地址。
所述請求發(fā)送模塊用于:根據(jù)信息獲取模塊解析出的鏈接地址,向媒體服務(wù)器發(fā)出媒體數(shù)據(jù)流請求。
所述媒體數(shù)據(jù)流下發(fā)模塊用于:收到直播客戶端發(fā)來的請求后,向直播客戶端下發(fā)媒體數(shù)據(jù)流,所述媒體數(shù)據(jù)流包括媒體描述信息和音視頻數(shù)據(jù),且媒體描述信息位于媒體數(shù)據(jù)流的前1000~2000個(gè)字節(jié)內(nèi)(優(yōu)選為1000字節(jié)內(nèi))。其中,所述媒體數(shù)據(jù)流下發(fā)模塊向直播客戶端下發(fā)媒體數(shù)據(jù)流的具體流程為:所述媒體數(shù)據(jù)流下發(fā)模塊首先下發(fā)媒體描述信息;待媒體描述信息下發(fā)結(jié)束后,再下發(fā)音視頻數(shù)據(jù)。
所述播放器初始化模塊用于:一旦收到直播客戶端發(fā)來媒體數(shù)據(jù)流,就判斷前1000~2000個(gè)字節(jié)內(nèi)是否有媒體描述信息,若是,根據(jù)解析后的媒體描述信息初始化直播客戶端的播放器;否則,需等待獲取到完整的媒體數(shù)據(jù)流后,再根據(jù)解析后的媒體描述信息初始化直播客戶端的播放器;
其中,播放器初始化模塊根據(jù)解析后的媒體描述信息初始化直播客戶端的播放器,具體包括以下操作:所述播放器初始化模塊根據(jù)媒體編碼標(biāo)準(zhǔn)對媒體描述信息進(jìn)行解析,從中提取出播放器所需的配置參數(shù);根據(jù)提取出的配置參數(shù)進(jìn)行相關(guān)參數(shù)的配置并實(shí)例化直播客戶端的播放器。
所述音視頻解碼輸出模塊用于:利用初始化后的播放器對媒體數(shù)據(jù)流中的音視頻數(shù)據(jù)進(jìn)行解碼并輸出。具體流程為:利用初始化后的播放器從媒體數(shù)據(jù)流中分離出視頻流和音頻流;再通過軟/硬解碼方式,分別對視頻流和音頻流進(jìn)行視頻流解碼和音頻流解碼;將解碼后的音頻流輸出到外部硬件設(shè)備中,將解碼后的視頻流通過OpenGL接口繪制到屏幕上顯示。
需要說明的是:上述實(shí)施例提供的系統(tǒng)在進(jìn)行操作時(shí),僅以上述各功能模塊的劃分進(jìn)行舉例說明,實(shí)際應(yīng)用中,可以根據(jù)需要而將上述功能分配由不同的功能模塊完成,即將系統(tǒng)的內(nèi)部結(jié)構(gòu)劃分成不同的功能模塊,以完成以上描述的全部或者部分功能。
本發(fā)明不局限于上述實(shí)施方式,對于本技術(shù)領(lǐng)域的普通技術(shù)人員來說,在不脫離本發(fā)明原理的前提下,還可以做出若干改進(jìn)和潤飾,這些改進(jìn)和潤飾也視為本發(fā)明的保護(hù)范圍之內(nèi)。
本說明書中未作詳細(xì)描述的內(nèi)容屬于本領(lǐng)域?qū)I(yè)技術(shù)人員公知的現(xiàn)有技術(shù)。