本發(fā)明涉及網(wǎng)絡(luò)技術(shù)領(lǐng)域,尤其是涉及一種視頻數(shù)據(jù)下載方法及裝置。
背景技術(shù):
現(xiàn)有的通過網(wǎng)絡(luò)實(shí)現(xiàn)視頻數(shù)據(jù)下載,一般基于超文本傳輸協(xié)議(hypertexttransferprotocol,http)協(xié)議實(shí)現(xiàn)。
http客戶端,例如該客戶端可以是瀏覽器,或者是其它下載工具,在下載某一視頻資源時向http服務(wù)器發(fā)送http請求,然后通過http協(xié)議進(jìn)行后續(xù)的數(shù)據(jù)傳輸。目前還提出了一種點(diǎn)對點(diǎn)(peer-to-peer,p2p)技術(shù),又稱對等互聯(lián)網(wǎng)絡(luò)技術(shù),該技術(shù)依賴網(wǎng)絡(luò)中大量參與者的計算能力和帶寬進(jìn)行傳輸,而不是僅依賴較少的幾臺服務(wù)器上。p2p技術(shù)的產(chǎn)生使得互聯(lián)網(wǎng)用戶之間的數(shù)據(jù)傳輸性能得到了很大提升。
但是,目前視頻數(shù)據(jù)下載時,一般都是點(diǎn)對點(diǎn)進(jìn)行傳輸,還沒有提出一種有效的實(shí)施方案,在基于http協(xié)議的基礎(chǔ)上實(shí)現(xiàn)多連接且多服務(wù)器請求的方式傳輸視頻數(shù)據(jù),提高下載速度。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種視頻數(shù)據(jù)下載方法及裝置,用于實(shí)現(xiàn)基于http協(xié)議的基礎(chǔ)上實(shí)現(xiàn)多連接且多服務(wù)器請求的方式傳輸數(shù)據(jù),提高下載速度。
一種視頻數(shù)據(jù)下載方法,包括:接收基于超文本傳輸協(xié)議http的視頻數(shù)據(jù)下載請求;在所述視頻數(shù)據(jù)下載請求中,獲得請求下載的視頻數(shù)據(jù)對應(yīng)的統(tǒng)一資源定位符url地址;根據(jù)所述url地址,確定下載所述視頻數(shù)據(jù)對應(yīng)的協(xié)議;按照所述協(xié)議,在用于存儲視頻數(shù)據(jù)的服務(wù)器中獲取所述url地址對 應(yīng)的視頻數(shù)據(jù)。
接收基于http的視頻數(shù)據(jù)下載請求,包括:建立套接字socket監(jiān)聽設(shè)定端口;在所述設(shè)定端口,接收基于http的視頻數(shù)據(jù)下載請求。
所述視頻數(shù)據(jù)下載請求包含直播形式的視頻數(shù)據(jù)下載,所述協(xié)議包含兼容在http中的第一協(xié)議;按照所述協(xié)議,在用于存儲視頻數(shù)據(jù)的服務(wù)器中獲取所述url地址對應(yīng)的視頻數(shù)據(jù),包括:調(diào)用第一協(xié)議的應(yīng)用程序接口api,連接內(nèi)容分發(fā)網(wǎng)絡(luò)cdn,獲取至少一個存儲所述標(biāo)識對應(yīng)的視頻數(shù)據(jù)的服務(wù)器;選擇所述至少一個所述服務(wù)器中的任意一個服務(wù)器下載url地址對應(yīng)的視頻流。
下載url地址對應(yīng)的視頻流,包括:若所述視頻流出現(xiàn)異常時,在所述至少一個所述服務(wù)器中,選擇除當(dāng)前下載視頻流的服務(wù)器之外的其它服務(wù)器繼續(xù)下載url地址對應(yīng)的視頻流。
所述視頻數(shù)據(jù)下載請求包含直播形式的視頻數(shù)據(jù)下載,所述協(xié)議包含兼容在http中的第二協(xié)議;按照所述協(xié)議,在用于存儲視頻數(shù)據(jù)的服務(wù)器中獲取url地址對應(yīng)的視頻數(shù)據(jù),包括:調(diào)用第二協(xié)議的應(yīng)用程序接口api,連接cdn,獲取至少一個存儲所述url地址對應(yīng)的視頻數(shù)據(jù)的服務(wù)器和至少一個客戶端地址;在至少一個所述服務(wù)器中獲取所述url地址對應(yīng)的第一長度的視頻數(shù)據(jù),以及在所述客戶端地址對應(yīng)的客戶端中,獲取所述url地址對應(yīng)的除第一長度之外的其他視頻數(shù)據(jù)。
所述視頻數(shù)據(jù)下載請求包含直播形式的視頻數(shù)據(jù)下載,所述協(xié)議包含兼容在http中的第三協(xié)議;按照所述協(xié)議,在用于存儲視頻數(shù)據(jù)的服務(wù)器中獲取url地址對應(yīng)的視頻數(shù)據(jù),包括:調(diào)用第三協(xié)議的應(yīng)用程序接口api,連接cdn,獲取至少一個存儲所述url地址對應(yīng)的視頻數(shù)據(jù)的服務(wù)器;選擇所述至少一個所述服務(wù)器中的至少兩個服務(wù)器,分段下載url地址對應(yīng)的m3u8格式的視頻數(shù)據(jù)。
所述視頻數(shù)據(jù)下載請求包含點(diǎn)播形式的視頻數(shù)據(jù)下載,所述協(xié)議包含兼容 在http中的第二協(xié)議,或第三協(xié)議;按照所述協(xié)議,在用于存儲視頻數(shù)據(jù)的服務(wù)器中獲取所述url地址對應(yīng)的視頻數(shù)據(jù),包括:調(diào)用第二協(xié)議或第三協(xié)議的應(yīng)用程序接口api,連接cdn,獲取至少一個存儲url地址對應(yīng)的視頻數(shù)據(jù)的服務(wù)器;選擇所述至少一個所述服務(wù)器中的至少兩個服務(wù)器,在所述至少兩個服務(wù)器中分段并發(fā)下載所述標(biāo)識對應(yīng)的點(diǎn)播形式的視頻數(shù)據(jù)。
在獲取url地址對應(yīng)的視頻數(shù)據(jù)之后,還包括:若所述視頻數(shù)據(jù)在播放時,預(yù)先下載播放中的所述視頻數(shù)據(jù)之后的設(shè)定時長內(nèi)的視頻數(shù)據(jù)。
一種視頻數(shù)據(jù)下載裝置,包括:接收單元,用于接收基于超文本傳輸協(xié)議http的視頻數(shù)據(jù)下載請求;處理單元,用于在所述視頻數(shù)據(jù)下載請求中,獲得請求下載的視頻數(shù)據(jù)對應(yīng)的統(tǒng)一資源定位符url地址;根據(jù)所述url地址,確定下載所述視頻數(shù)據(jù)對應(yīng)的協(xié)議;按照所述協(xié)議,在用于存儲視頻數(shù)據(jù)的服務(wù)器中獲取所述url地址對應(yīng)的視頻數(shù)據(jù)。
所述接收單元,具體用于建立套接字socket監(jiān)聽設(shè)定端口;在所述設(shè)定端口,接收基于http的視頻數(shù)據(jù)下載請求。
所述視頻數(shù)據(jù)下載請求包含直播形式的視頻數(shù)據(jù)下載,所述協(xié)議包含兼容在http中的第一協(xié)議;所述處理單元,具體用于調(diào)用第一協(xié)議的應(yīng)用程序接口api,連接內(nèi)容分發(fā)網(wǎng)絡(luò)cdn,獲取至少一個存儲所述url地址對應(yīng)的視頻數(shù)據(jù)的服務(wù)器;選擇所述至少一個所述服務(wù)器中的任意一個服務(wù)器下載所述標(biāo)識對應(yīng)的視頻流。
所述處理單元,具體用于若所述視頻流出現(xiàn)異常時,在所述至少一個所述服務(wù)器中,選擇除當(dāng)前下載視頻流的服務(wù)器之外的其它服務(wù)器繼續(xù)下載所述url地址對應(yīng)的視頻流。
所述視頻數(shù)據(jù)下載請求包含直播形式的視頻數(shù)據(jù)下載,所述協(xié)議包含兼容在http中的第二協(xié)議;所述處理單元,具體用于調(diào)用第二協(xié)議的應(yīng)用程序接口api,連接cdn,獲取至少一個存儲所述url地址對應(yīng)的視頻數(shù)據(jù)的服務(wù)器和至少一個客戶端地址;在至少一個所述服務(wù)器中獲取所述url地址對應(yīng) 的第一長度的視頻數(shù)據(jù),以及在所述客戶端地址對應(yīng)的客戶端中,獲取所述url地址對應(yīng)的除第一長度之外的其他視頻數(shù)據(jù)。
所述視頻數(shù)據(jù)下載請求包含直播形式的視頻數(shù)據(jù)下載,所述協(xié)議包含兼容在http中的第三協(xié)議;所述處理單元,具體用于調(diào)用第三協(xié)議的應(yīng)用程序接口api,連接cdn,獲取至少一個存儲所述url地址對應(yīng)的視頻數(shù)據(jù)的服務(wù)器;選擇所述至少一個所述服務(wù)器中的至少兩個服務(wù)器,分段下載所述url地址對應(yīng)的m3u8格式的視頻數(shù)據(jù)。
所述視頻數(shù)據(jù)下載請求包含點(diǎn)播形式的視頻數(shù)據(jù)下載,所述協(xié)議包含兼容在http中的第二協(xié)議,或第三協(xié)議;所述處理單元,具體用于調(diào)用第二協(xié)議或第三協(xié)議的應(yīng)用程序接口api,連接cdn,獲取至少一個存儲所述url地址對應(yīng)的視頻數(shù)據(jù)的服務(wù)器;選擇所述至少一個所述服務(wù)器中的至少兩個服務(wù)器,在所述至少兩個服務(wù)器中分段并發(fā)下載所述url地址對應(yīng)的點(diǎn)播形式的視頻數(shù)據(jù)。
所述處理單元,還用于若所述視頻數(shù)據(jù)在播放時,預(yù)先下載播放中的所述視頻數(shù)據(jù)之后的設(shè)定時長內(nèi)的視頻數(shù)據(jù)。
通過采用上述技術(shù)方案,在接收到的視頻數(shù)據(jù)下載請求,獲得請求下載的視頻數(shù)據(jù)對應(yīng)的url地址,根據(jù)url地址,確定下載視頻數(shù)據(jù)對應(yīng)的協(xié)議;在用于存儲視頻數(shù)據(jù)的服務(wù)器中獲取url地址對應(yīng)的視頻數(shù)據(jù),用于實(shí)現(xiàn)基于http協(xié)議的基礎(chǔ)上實(shí)現(xiàn)多連接且多服務(wù)器請求的方式傳輸數(shù)據(jù),提高下載速度。
附圖說明
圖1為本發(fā)明實(shí)施例中,提出的下載系統(tǒng)結(jié)構(gòu)組成示意圖;
圖2為本發(fā)明實(shí)施例中,提出的下載方法流程圖;
圖3為本發(fā)明實(shí)施例中,提出的下載裝置結(jié)構(gòu)組成示意圖。
具體實(shí)施方式
針對目前視頻數(shù)據(jù)下載時,一般都是點(diǎn)對點(diǎn)進(jìn)行傳輸,還沒有提出一種有效的實(shí)施方案,在基于http協(xié)議的基礎(chǔ)上實(shí)現(xiàn)多連接且多服務(wù)器請求的方式傳輸視頻數(shù)據(jù),提高視頻數(shù)據(jù)的下載速度的問題,本發(fā)明提出的技術(shù)方案中,在進(jìn)行視頻數(shù)據(jù)下載時,按照不同的協(xié)議,在存儲視頻數(shù)據(jù)的多個服務(wù)器中下載視頻數(shù)據(jù),從而實(shí)現(xiàn)基于http協(xié)議的基礎(chǔ)上實(shí)現(xiàn)多連接且多服務(wù)器請求的方式傳輸數(shù)據(jù),提高下載速度。
下面將結(jié)合各個附圖對本發(fā)明實(shí)施例技術(shù)方案的主要實(shí)現(xiàn)原理、具體實(shí)施方式及其對應(yīng)能夠達(dá)到的有益效果進(jìn)行詳細(xì)地闡述。
本發(fā)明實(shí)施例提出一種視頻數(shù)據(jù)下載裝置以及視頻數(shù)據(jù)下載方法,其中,該視頻數(shù)據(jù)下載裝置基于http協(xié)議,該下載裝置可以是以客戶端形式與播放器位于同一個終端中,也可以是集成在終端中的某個模塊中,在此不做具體的限定。如圖1所示,本發(fā)明實(shí)施例提出的視頻數(shù)據(jù)下載系統(tǒng),包括終端、終端中設(shè)置有播放視頻數(shù)據(jù)的播放器、以及視頻數(shù)據(jù)下載裝置。在本發(fā)明實(shí)施例提出的視頻數(shù)據(jù)下載系統(tǒng)中,包含多個存儲視頻數(shù)據(jù)的服務(wù)器,或者是存儲視頻數(shù)據(jù)的云端。如圖2所示,基于圖1所示的視頻數(shù)據(jù)下載系統(tǒng),本發(fā)明實(shí)施例提出的視頻數(shù)據(jù)下載方法具體處理流程如下述:
步驟21,用戶通過終端中的播放器,發(fā)送播放某一視頻的播放請求。
其中,該播放請求可以是用戶請求播放直播形式的視頻數(shù)據(jù),也可以是用戶請求播放點(diǎn)播形式的視頻數(shù)據(jù)。
直播形式的視頻數(shù)據(jù),可以是與電視頻道同步的視頻數(shù)據(jù)。點(diǎn)播形式的視頻數(shù)據(jù)可以是已經(jīng)存儲在服務(wù)器中或云端的視頻數(shù)據(jù)。
步驟22,播放器接收用戶發(fā)送的播放請求。
步驟23,播放器在接收到播放請求時,請求下載視頻數(shù)據(jù)。
步驟24,視頻數(shù)據(jù)下載裝置建立套接字(socket)監(jiān)聽設(shè)定端口。
例如,設(shè)定端口可以是8888,建立socket,監(jiān)聽端口8888。
本發(fā)明實(shí)施例提出的技術(shù)方案中,在具體實(shí)施時,視頻數(shù)據(jù)下載裝置設(shè)置在終端中,可以是終端啟動運(yùn)行,就觸發(fā)啟動視頻數(shù)據(jù)下載裝置,終端在運(yùn)行其它應(yīng)用時,視頻數(shù)據(jù)下載裝置可以始終保持后臺運(yùn)行。還可以是客戶端側(cè)的播放器觸發(fā)視頻數(shù)據(jù)下載裝置,以實(shí)現(xiàn)視頻數(shù)據(jù)下載裝置運(yùn)行。本發(fā)明實(shí)施例提出的技術(shù)方案中,將以終端在運(yùn)行其它應(yīng)用時,視頻數(shù)據(jù)下載裝置可以始終保持后臺運(yùn)行為例進(jìn)行詳細(xì)闡述。
步驟25,播放器向視頻數(shù)據(jù)下載裝置發(fā)送基于http的視頻數(shù)據(jù)下載請求。
在該基于http的視頻數(shù)據(jù)下載請求中包含設(shè)定格式的統(tǒng)一資源定位符(uniformresourelocator,url)地址。在url地址中,可以包含監(jiān)聽的端口號、視頻數(shù)據(jù)的標(biāo)識(filename)、存儲視頻數(shù)據(jù)的服務(wù)器地址等參數(shù)。例如,在視頻數(shù)據(jù)下載請求中可以包含下述格式的url地址:
http://127.0.0.1監(jiān)聽端口號/filename?服務(wù)器地址等參數(shù)...
步驟26,視頻數(shù)據(jù)下載裝置接收基于http的視頻數(shù)據(jù)下載請求。
步驟27,視頻數(shù)據(jù)下載裝置在視頻數(shù)據(jù)下載請求中,獲得請求下載的視頻數(shù)據(jù)對應(yīng)的url地址。
在上述步驟25~步驟27中,視頻數(shù)據(jù)下載裝置通過建立的套接字,監(jiān)聽端口8888,獲得視頻數(shù)據(jù)下載請求,進(jìn)而可以獲得:http://127.0.0.1:8888/filename?....
步驟28,根據(jù)url地址,確定下載視頻數(shù)據(jù)對應(yīng)的協(xié)議。
步驟29,按照協(xié)議,在用于存儲視頻數(shù)據(jù)的服務(wù)器中獲取url地址對應(yīng)的視頻數(shù)據(jù)。
其中,視頻數(shù)據(jù)下載請求包含直播形式的視頻數(shù)據(jù)下載,按照不同的協(xié)議,在服務(wù)器中獲取url地址對應(yīng)的視頻數(shù)據(jù)的具體實(shí)施方式可以包含下述幾種方式:
第一種方式:協(xié)議包含兼容在http中的第一協(xié)議。
該第一協(xié)議是一種私有協(xié)議,可以根據(jù)不同的需求進(jìn)行命名,例如實(shí)時流協(xié)議。
調(diào)用第一協(xié)議的應(yīng)用程序接口(applicationprogramminginterface,api),連接內(nèi)容分發(fā)網(wǎng)絡(luò)(contentdeliverynetwork,cdn),獲取至少一個存儲該標(biāo)識對應(yīng)的視頻數(shù)據(jù)的服務(wù)器,選擇至少一個服務(wù)器中的任意一個服務(wù)器下載url地址對應(yīng)的視頻流,若視頻流出現(xiàn)異常時,在至少一個服務(wù)器中,選擇除當(dāng)前下載視頻流的服務(wù)器之外的其它服務(wù)器繼續(xù)下載所述標(biāo)識對應(yīng)的視頻流。
具體實(shí)施中,可以按照負(fù)載均衡原則,在多個服務(wù)器中選擇其中一個服務(wù)器下載url地址對應(yīng)的視頻流。
舉一例進(jìn)行詳細(xì)闡述:
假設(shè)該直播形式的視頻數(shù)據(jù)是某電視頻道,該電視頻道標(biāo)識為cccccc。視頻數(shù)據(jù)下載裝置接收到cccccc的視頻數(shù)據(jù)下載請求。視頻數(shù)據(jù)下載裝置獲得該視頻下載請求中的url地址,確定url地址中包含的該視頻數(shù)據(jù)對應(yīng)的協(xié)議為第一協(xié)議,以及該視頻數(shù)據(jù)的標(biāo)識為cccccc。視頻數(shù)據(jù)下載裝置調(diào)用第一協(xié)議的api,確定存儲視頻數(shù)據(jù)的cccccc服務(wù)器。
在發(fā)明實(shí)施例提出的技術(shù)方案中,存儲視頻數(shù)據(jù)的cccccc服務(wù)器可是是多個,多個服務(wù)器的地址和/或服務(wù)器的標(biāo)識可以存儲在服務(wù)器列表中。
具體地,視頻數(shù)據(jù)下載裝置可以調(diào)用第一協(xié)議的api,解析url,獲得入口服務(wù)器地址,視頻數(shù)據(jù)下載裝置根據(jù)入口服務(wù)器地址,連接入口服務(wù)器,在入口服務(wù)器中獲得用于存儲該視頻數(shù)據(jù)cccccc的服務(wù)器的服務(wù)器列表。視頻數(shù)據(jù)下載裝置在服務(wù)器列表中,選擇任意一個服務(wù)器,下載視頻數(shù)據(jù)cccccc對應(yīng)的傳輸流(transportstream,ts)。
進(jìn)一步地,如果在視頻數(shù)據(jù)裝置在下載過程中,如果該連接的服務(wù)器出現(xiàn)異常,視頻下載裝置在服務(wù)器列表中,選擇除異常的服務(wù)器之外的其它服務(wù)器,繼續(xù)下載cccccc對應(yīng)的ts。
具體地,通過直接調(diào)用基于http的第一協(xié)議實(shí)現(xiàn)直播形式的視頻數(shù)據(jù)下 載,相比直接使用http協(xié)議下載視頻數(shù)據(jù),安全性更好,相對http傳輸?shù)淖侄胃?,速度更快,面向連接的穩(wěn)定性更好。
第二種方式:協(xié)議包含兼容在http中的第二協(xié)議。
第二協(xié)議可以是兼容在http中的一種私有協(xié)議,該私有協(xié)議可以是點(diǎn)對點(diǎn)(peertopeer,p2p)協(xié)議,也可以是根據(jù)不同的需求進(jìn)行定義的私有協(xié)議。
調(diào)用第二協(xié)議的api,連接cdn,獲取至少一個存儲url地址對應(yīng)的視頻數(shù)據(jù)的服務(wù)器和至少一個客戶端地址;在至少一個服務(wù)器中獲取url地址對應(yīng)的第一長度的視頻數(shù)據(jù),以及在客戶端地址對應(yīng)的客戶端中,獲取url地址對應(yīng)的除第一長度之外的其他視頻數(shù)據(jù)。
一種較佳地實(shí)施方式,具體實(shí)施中,視頻數(shù)據(jù)下載裝置調(diào)用第二協(xié)議的api,解析獲得的url地址,獲得服務(wù)器入口地址,視頻數(shù)據(jù)下載裝置根據(jù)服務(wù)器入口地址連接cdn,獲得存儲該url地址對應(yīng)的視頻數(shù)據(jù)的服務(wù)器的服務(wù)器列表。以及獲得同時通過該服務(wù)器入口地址連接cdn,且請求下載同一視頻數(shù)據(jù)的其它客戶端地址。視頻數(shù)據(jù)下載裝置在服務(wù)器列表中,按照負(fù)載均衡原則選取其中一個服務(wù)器下載url地址對應(yīng)的第一長度的視頻數(shù)據(jù),然后視頻數(shù)據(jù)下載裝置根據(jù)獲得的客戶端地址,在客戶端地址對應(yīng)的客戶端中分別下載url地址對應(yīng)的除第一長度之外的其他視頻數(shù)據(jù)。
進(jìn)一步地,若客戶端地址對應(yīng)的客戶端中不包含該url地址對應(yīng)的視頻數(shù)據(jù)時,視頻數(shù)據(jù)下載裝置重新在選取其中一個服務(wù)器下載url地址對應(yīng)的視頻數(shù)據(jù)。
通過在服務(wù)器中下載第一長度的視頻數(shù)據(jù),可以加快視頻數(shù)據(jù)的下載速度,在下載第一長度的視頻數(shù)據(jù)之后,轉(zhuǎn)向客戶端中獲得url地址對應(yīng)的視頻數(shù)據(jù),可以節(jié)省網(wǎng)絡(luò)資源。
在上述第二種方式中,舉一例進(jìn)行詳細(xì)闡述:
假設(shè)該直播形式的視頻數(shù)據(jù)是某電視頻道,該電視頻道標(biāo)識為cccccc。 視頻數(shù)據(jù)下載裝置接收到cccccc的視頻數(shù)據(jù)下載請求。視頻數(shù)據(jù)下載裝置獲得該視頻下載請求中的url地址,確定url地址中包含的該視頻數(shù)據(jù)對應(yīng)的協(xié)議為p2p協(xié)議,以及該視頻數(shù)據(jù)的標(biāo)識為cccccc。視頻數(shù)據(jù)下載裝置調(diào)用p2p協(xié)議的api,根據(jù)url地址確定存儲視頻數(shù)據(jù)的cccccc服務(wù)器。以及確定同時通過該服務(wù)器入口地址連接cdn,且請求下載同一視頻數(shù)據(jù)的其它客戶端地址。
在發(fā)明實(shí)施例提出的技術(shù)方案中,存儲視頻數(shù)據(jù)的cccccc服務(wù)器可以是多個,多個服務(wù)器的地址和/或服務(wù)器的標(biāo)識可以存儲在服務(wù)器列表中。同時通過該服務(wù)器入口地址連接cdn,且請求下載同一視頻數(shù)據(jù)的其它客戶端地址可以是多個,多個客戶端地址可以存儲在客戶端列表中。
具體地,視頻數(shù)據(jù)下載裝置可以調(diào)用p2p協(xié)議的api,解析url,獲得入口服務(wù)器地址,視頻數(shù)據(jù)下載裝置根據(jù)入口服務(wù)器地址,連接入口服務(wù)器,在入口服務(wù)器中獲得用于存儲該視頻數(shù)據(jù)cccccc的服務(wù)器的服務(wù)器列表視頻數(shù)據(jù)下載裝置在入口服務(wù)器中獲取鄰近的客戶端地址。視頻數(shù)據(jù)下載裝置在服務(wù)器列表中,選擇任意一個服務(wù)器,下載一段時長的視頻數(shù)據(jù)cccccc對應(yīng)的視頻數(shù)據(jù),以及視頻數(shù)據(jù)下載裝置在客戶端地址對應(yīng)的客戶端中下載其他該視頻數(shù)據(jù)。
在上述第二種方式中,視頻數(shù)據(jù)下載裝置通過在服務(wù)器和周圍客戶端配合的方式下獲得視頻數(shù)據(jù),可以較好地節(jié)省服務(wù)器帶寬,并且可以在多個服務(wù)器中分塊或分包并發(fā)下載視頻數(shù)據(jù),節(jié)省了傳輸控制協(xié)議建立連接的過程,并且通過在客戶端的配合下,能夠充分利用普通客戶端的閑置上行流量,提供下載加速。
第三種方式:協(xié)議包含兼容在http中的第三協(xié)議。
第三協(xié)議可以是一種私有協(xié)議,可以根據(jù)不同的需求進(jìn)行命名,例如多點(diǎn)傳輸協(xié)議(clienttomultipleserver,c2ms)。
調(diào)用第三協(xié)議的api,連接cdn獲取至少一個存儲url地址對應(yīng)的視頻 數(shù)據(jù)的服務(wù)器,選擇至少一個所述服務(wù)器中的至少兩個服務(wù)器,分段下載標(biāo)識對應(yīng)的m3u8格式的視頻數(shù)據(jù)。
其中,連接cdn獲取與存儲url地址對應(yīng)的視頻數(shù)據(jù)的服務(wù)器有且只有一個服務(wù)器時,則僅在該服務(wù)器中下載與url地址對應(yīng)的m3u8格式的視頻數(shù)據(jù)。
在上述第二種方式中,舉一例進(jìn)行詳細(xì)闡述:
假設(shè)該直播形式的視頻數(shù)據(jù)是某電視頻道,該電視頻道標(biāo)識為cccccc。視頻數(shù)據(jù)下載裝置接收到cccccc的視頻數(shù)據(jù)下載請求。視頻數(shù)據(jù)下載裝置獲得該視頻下載請求中的url地址,確定url地址中包含的該視頻數(shù)據(jù)對應(yīng)的協(xié)議為c2ms協(xié)議,以及該視頻數(shù)據(jù)的標(biāo)識為cccccc。視頻數(shù)據(jù)下載裝置調(diào)用c2ms協(xié)議的api,根據(jù)url地址,確定存儲視頻數(shù)據(jù)的cccccc服務(wù)器。
在發(fā)明實(shí)施例提出的技術(shù)方案中,存儲視頻數(shù)據(jù)的cccccc服務(wù)器可是是多個,多個服務(wù)器的地址和/或服務(wù)器的標(biāo)識可以存儲在服務(wù)器列表中。
具體地,視頻數(shù)據(jù)下載裝置可以調(diào)用c2ms協(xié)議的api,解析url,獲得入口服務(wù)器地址,視頻數(shù)據(jù)下載裝置根據(jù)入口服務(wù)器地址,連接入口服務(wù)器,在入口服務(wù)器中獲得用于存儲該視頻數(shù)據(jù)cccccc的服務(wù)器的服務(wù)器列表。視頻數(shù)據(jù)下載裝置在服務(wù)器列表中,選擇多個服務(wù)器,分段下載視頻數(shù)據(jù)cccccc對應(yīng)的m3u8格式的視頻數(shù)據(jù)。
在上述第三種方式中,視頻數(shù)據(jù)下載裝置在服務(wù)器中獲得視頻數(shù)據(jù),可以較好地提高后續(xù)視頻數(shù)據(jù)的播放速度,視頻數(shù)據(jù)下載速度較快、效率高、視頻數(shù)據(jù)傳輸穩(wěn)定,即時性較好。
視頻數(shù)據(jù)下載請求還可以包含點(diǎn)播形式的視頻數(shù)據(jù)下載。針對點(diǎn)播形式的視頻數(shù)據(jù)下載,可以應(yīng)用的協(xié)議包含上述第二協(xié)議或第三協(xié)議。視頻數(shù)據(jù)下載裝置調(diào)用第二協(xié)議或第三協(xié)議的應(yīng)用程序接口api,連接cdn,獲取至少一個存儲url地址對應(yīng)的視頻數(shù)據(jù)的服務(wù)器,選擇至少一個服務(wù)器中的至少兩個 服務(wù)器,在至少兩個服務(wù)器中分段并發(fā)下載url地址對應(yīng)的點(diǎn)播形式的視頻數(shù)據(jù)。下面舉例進(jìn)行詳細(xì)闡述:
假設(shè)點(diǎn)播的視頻數(shù)據(jù)的標(biāo)識為vvvvv,視頻數(shù)據(jù)下載裝置調(diào)用第二協(xié)議或第三協(xié)議的api,連接cdn,獲取存儲vvvvv對應(yīng)的視頻數(shù)據(jù)的服務(wù)器的服務(wù)器列表,在服務(wù)器列表中選擇至少兩個服務(wù)器,視頻數(shù)據(jù)下載裝置根據(jù)待下載的視頻數(shù)據(jù)信息,將待下載的視頻數(shù)據(jù)分塊或分包,然后在至少兩個服務(wù)器中分段并發(fā)下載標(biāo)識對應(yīng)的點(diǎn)播形式的視頻數(shù)據(jù)。
可選地,在上述步驟29之后,還可以包括:
視頻數(shù)據(jù)下載裝置將下載的分段數(shù)據(jù)拼接并基于http發(fā)送給播放器以播放該視頻數(shù)據(jù)。
具體實(shí)施中,視頻數(shù)據(jù)下載裝置將從服務(wù)器中獲得的視頻數(shù)據(jù)的長度、截止類型等信息,寫入http報頭中通過請求連接的socket發(fā)送給播放器,視頻數(shù)據(jù)下載裝置將分段下載好的視頻數(shù)據(jù)按照正確順序拼接好作為入http報體,依次通過請求連接的socket發(fā)送給播放器。
進(jìn)一步地,視頻數(shù)據(jù)下載裝置可以將下載完成的視頻數(shù)據(jù)按照正確順序,一邊下載一邊發(fā)送給播放器,視頻數(shù)據(jù)下載裝置可以將全部下載完畢的視頻數(shù)據(jù)發(fā)送給播放器。
可選地,本發(fā)明實(shí)施例提出的技術(shù)方案中,視頻數(shù)據(jù)下載裝置還可以對獲取的url地址進(jìn)行校正。
網(wǎng)絡(luò)技術(shù)的不同,各種播放器的播放視頻數(shù)據(jù)或音頻數(shù)據(jù)時所使用的協(xié)議也不完全相同,不同的運(yùn)營商會提供不同格式的播放器。針對基于http的播放器所發(fā)送的數(shù)據(jù)下載請求,采用本發(fā)明實(shí)施例提出的技術(shù)方案,可以對錯誤的http格式進(jìn)行校正。
具體實(shí)施中,視頻數(shù)據(jù)下載裝置可以預(yù)先存儲標(biāo)準(zhǔn)的http模板,例如,http的報文中,報體和報頭各包含的字節(jié)數(shù)或者字節(jié)內(nèi)容等。將接收到的基于http的視頻數(shù)據(jù)下載請求和標(biāo)準(zhǔn)的http模板相比較,若格式不相同時, 視頻數(shù)據(jù)下載裝置對錯誤的格式進(jìn)行校正。
可選地,在本發(fā)明實(shí)施例提出的技術(shù)方案中,針對每個設(shè)備,或每個用戶,可以包含不同的用戶標(biāo)識,視頻數(shù)據(jù)下載裝置可以針對每個用戶,在設(shè)定時長內(nèi)的下載速率、占用資源、下載內(nèi)容進(jìn)行統(tǒng)計,統(tǒng)計結(jié)果可以實(shí)時上報,也可以等待網(wǎng)絡(luò)資源釋放時上報。
相應(yīng)地,本發(fā)明實(shí)施例還提出一種視頻數(shù)據(jù)下載裝置,如圖3所示,包括:
接收單元301,用于接收基于超文本傳輸協(xié)議http的視頻數(shù)據(jù)下載請求。
處理單元302,用于在所述視頻數(shù)據(jù)下載請求中,獲得請求下載的視頻數(shù)據(jù)對應(yīng)的統(tǒng)一資源定位符url地址;根據(jù)所述url地址,確定下載所述視頻數(shù)據(jù)對應(yīng)的協(xié)議;按照所述協(xié)議,在用于存儲視頻數(shù)據(jù)的服務(wù)器中獲取所述url地址對應(yīng)的視頻數(shù)據(jù)。
具體地,上述接收單元301,具體用于建立套接字socket監(jiān)聽設(shè)定端口;在所述設(shè)定端口,接收基于http的視頻數(shù)據(jù)下載請求。
所述視頻數(shù)據(jù)下載請求包含直播形式的視頻數(shù)據(jù)下載,所述協(xié)議包含兼容在http中的第一協(xié)議;具體地,上述處理單元302,具體用于調(diào)用第一協(xié)議的應(yīng)用程序接口api,連接內(nèi)容分發(fā)網(wǎng)絡(luò)cdn,獲取至少一個存儲所述url地址對應(yīng)的視頻數(shù)據(jù)的服務(wù)器;選擇所述至少一個所述服務(wù)器中的任意一個服務(wù)器下載所述標(biāo)識對應(yīng)的視頻流。
具體地,上述處理單元302,具體用于若所述視頻流出現(xiàn)異常時,在所述至少一個所述服務(wù)器中,選擇除當(dāng)前下載視頻流的服務(wù)器之外的其它服務(wù)器繼續(xù)下載所述url地址對應(yīng)的視頻流。
所述視頻數(shù)據(jù)下載請求包含直播形式的視頻數(shù)據(jù)下載,所述協(xié)議包含兼容在http中的第二協(xié)議;具體地,上述處理單元302,具體用于調(diào)用第二協(xié)議的應(yīng)用程序接口api,連接cdn,獲取至少一個存儲所述url地址對應(yīng)的視頻數(shù)據(jù)的服務(wù)器和至少一個客戶端地址;在至少一個所述服務(wù)器中獲取所述url地址對應(yīng)的第一長度的視頻數(shù)據(jù),以及在所述客戶端地址對應(yīng)的客戶端 中,獲取所述url地址對應(yīng)的除第一長度之外的其他視頻數(shù)據(jù)。
所述視頻數(shù)據(jù)下載請求包含直播形式的視頻數(shù)據(jù)下載,所述協(xié)議包含兼容在http中的第三協(xié)議;具體地,上述處理單元302,具體用于調(diào)用第三協(xié)議的應(yīng)用程序接口api,連接cdn,獲取至少一個存儲所述url地址對應(yīng)的視頻數(shù)據(jù)的服務(wù)器;選擇所述至少一個所述服務(wù)器中的至少兩個服務(wù)器,分段下載所述url地址對應(yīng)的m3u8格式的視頻數(shù)據(jù)。
所述視頻數(shù)據(jù)下載請求包含點(diǎn)播形式的視頻數(shù)據(jù)下載,所述協(xié)議包含兼容在http中的第二協(xié)議,或第三協(xié)議;具體地,上述處理單元302,具體用于調(diào)用第二協(xié)議或第三協(xié)議的應(yīng)用程序接口api,連接cdn,獲取至少一個存儲所述url地址對應(yīng)的視頻數(shù)據(jù)的服務(wù)器;選擇所述至少一個所述服務(wù)器中的至少兩個服務(wù)器,在所述至少兩個服務(wù)器中分段并發(fā)下載所述url地址對應(yīng)的點(diǎn)播形式的視頻數(shù)據(jù)。
可選地,上述處理單元302,還用于若所述視頻數(shù)據(jù)在播放時,預(yù)先下載播放中的所述視頻數(shù)據(jù)之后的設(shè)定時長內(nèi)的視頻數(shù)據(jù)。
在本發(fā)明實(shí)施例上述提出的視頻數(shù)據(jù)下載裝置中,處理單元302具體可以通過觸發(fā)不同的協(xié)議模塊,調(diào)用不同協(xié)議的api,下載視頻數(shù)據(jù)。
本領(lǐng)域的技術(shù)人員應(yīng)明白,本發(fā)明的實(shí)施例可提供為方法、裝置(設(shè)備)、或計算機(jī)程序產(chǎn)品。因此,本發(fā)明可采用完全硬件實(shí)施例、完全軟件實(shí)施例、或結(jié)合軟件和硬件方面的實(shí)施例的形式。而且,本發(fā)明可采用在一個或多個其中包含有計算機(jī)可用程序代碼的計算機(jī)可用存儲介質(zhì)(包括但不限于磁盤存儲器、只讀光盤、光學(xué)存儲器等)上實(shí)施的計算機(jī)程序產(chǎn)品的形式。
本發(fā)明是參照根據(jù)本發(fā)明實(shí)施例的方法、裝置(設(shè)備)和計算機(jī)程序產(chǎn)品的流程圖和/或方框圖來描述的。應(yīng)理解可由計算機(jī)程序指令實(shí)現(xiàn)流程圖和/或方框圖中的每一流程和/或方框、以及流程圖和/或方框圖中的流程和/或方框的結(jié)合??商峁┻@些計算機(jī)程序指令到通用計算機(jī)、專用計算機(jī)、嵌入式處理機(jī)或其他可編程數(shù)據(jù)處理設(shè)備的處理器以產(chǎn)生一個機(jī)器,使得通過計算機(jī)或其他 可編程數(shù)據(jù)處理設(shè)備的處理器執(zhí)行的指令產(chǎn)生用于實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的裝置。
這些計算機(jī)程序指令也可存儲在能引導(dǎo)計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備以特定方式工作的計算機(jī)可讀存儲器中,使得存儲在該計算機(jī)可讀存儲器中的指令產(chǎn)生包括指令裝置的制造品,該指令裝置實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能。
這些計算機(jī)程序指令也可裝載到計算機(jī)或其他可編程數(shù)據(jù)處理設(shè)備上,使得在計算機(jī)或其他可編程設(shè)備上執(zhí)行一系列操作步驟以產(chǎn)生計算機(jī)實(shí)現(xiàn)的處理,從而在計算機(jī)或其他可編程設(shè)備上執(zhí)行的指令提供用于實(shí)現(xiàn)在流程圖一個流程或多個流程和/或方框圖一個方框或多個方框中指定的功能的步驟。
盡管已描述了本發(fā)明的優(yōu)選實(shí)施例,但本領(lǐng)域內(nèi)的技術(shù)人員一旦得知了基本創(chuàng)造性概念,則可對這些實(shí)施例作出另外的變更和修改。所以,所附權(quán)利要求意欲解釋為包括優(yōu)選實(shí)施例以及落入本發(fā)明范圍的所有變更和修改。
顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進(jìn)行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。