,獲取該碼率的子m3u8文件的URL。
[0083]作為一種可實(shí)施的方式,客戶端可根據(jù)下載切片文件的速度、播放切片文件的速度以及帶寬等因素選擇609120比特每秒的碼率,其對應(yīng)的子m3u8文件為TEST_500。
[0084]S203,根據(jù)確定的子m3u8文件的文件信息向所述⑶N服務(wù)器獲取所述確定的子m3u8文件。
[0085]具體實(shí)現(xiàn)中,客戶端根據(jù)獲取的該碼率的子m3u8文件的URL向CDN服務(wù)器請求獲取碼率為609120比特每秒的子m3u8文件TEST_500。⑶N服務(wù)器接收到客戶端發(fā)送的獲取該碼率的子m3u8文件的請求后,查找是否存在存儲切片文件的P2P節(jié)點(diǎn)。若查找到存儲切片文件的P2P節(jié)點(diǎn),則提取存儲切片文件的P2P節(jié)點(diǎn)的標(biāo)識信息,最后根據(jù)切片文件的標(biāo)識信息以及切片文件的P2P節(jié)點(diǎn)的標(biāo)識信息等數(shù)據(jù)生成子m3u8文件。標(biāo)識信息用于提示存儲切片文件的P2P節(jié)點(diǎn),以使客戶端在解析子m3u8文件之后,根據(jù)P2P節(jié)點(diǎn)的標(biāo)識信息直接向該P(yáng)2P節(jié)點(diǎn)獲取切片文件。
[0086]作為一種可實(shí)施的方式,⑶N服務(wù)器根據(jù)客戶端的請求生成子m3u8文件TEST_500,其子m3u8文件TEST_500的內(nèi)容可如下所示:
[0087]#EXTM3U
[0088]#EXT-X-VERS1N:3
[0089]#EXT-X-TARGETDURAT1N:11
[0090]#EXT-X-MEDIA-SEQUENCE:1
[0091]#EXTINF:10,
[0092]TEST_500_1.ts/peerl/peer2/peer3
[0093]#EXTINF:10,
[0094]TEST_500_2.ts/peerl/peer2/peer3
[0095]#EXTINF:10,
[0096]TEST_500_3.ts
[0097]…
[0098]…
[0099]…
[0100]#EXT-X-ENDLIST
[0101]其中,TEST_500_1、TEST_500_2以及TEST_500_3為切片文件的標(biāo)識信息,因此子 m3u8 文件 TEST_500 包括 TEST_500_1、TEST_500_2 以及 TEST_500_3 三個切片文件。peerU peer2以及peer3用于標(biāo)識包括切片文件的P2P節(jié)點(diǎn)。以切片文件TEST_500_1為例,TEST_500_1.ts/peerl/peer2/peer3 用于指示存儲切片文件 TEST_500_1.ts 的 P2P 節(jié)點(diǎn)包括節(jié)點(diǎn)peer 1、節(jié)點(diǎn)peer2以及節(jié)點(diǎn)peer3。而對于切片文件TEST_500_3.ts后沒有包含P2P節(jié)點(diǎn)的標(biāo)識信息則說明沒有P2P節(jié)點(diǎn)存儲切片文件TEST_500_3.ts。
[0102]作為一種可實(shí)施的方式,⑶N服務(wù)器可在P2P服務(wù)器查找存儲切片文件的P2P節(jié)點(diǎn),從數(shù)據(jù)庫或者索弓I服務(wù)器獲取P2P節(jié)點(diǎn)的信息。
[0103]S204,若所述確定的子m3u8文件還包括存儲所述切片文件的至少一個客戶端節(jié)點(diǎn)的標(biāo)識信息,則根據(jù)所述切片文件的標(biāo)識信息向各個客戶端節(jié)點(diǎn)分別獲取所述切片文件。
[0104]具體實(shí)現(xiàn)中,客戶端解析子m3u8文件TEST_500后,瀏覽切片文件的標(biāo)識信息,判斷切片文件的標(biāo)識信息是否攜帶存儲該切片文件的P2P節(jié)點(diǎn)的標(biāo)識信息。具體的,由于切片文件TEST_500_1和切片文件TEST_500_2均攜帶節(jié)點(diǎn)peer 1、節(jié)點(diǎn)peer2以及節(jié)點(diǎn)peer3的標(biāo)識信息,因此可直接向節(jié)點(diǎn)peerl、節(jié)點(diǎn)peer2或者節(jié)點(diǎn)peer3中的至少一個P2P節(jié)點(diǎn)獲取切片文件TEST_500_1和切片文件TEST_500_2。以獲取切片文件TEST_500_1為例,為了加快下載速度,客戶端可向節(jié)點(diǎn)peerl、節(jié)點(diǎn)peer2或者節(jié)點(diǎn)peer3中的至少一個P2P節(jié)點(diǎn)下載切片文件TEST_500_1,當(dāng)客戶端向其中一個P2P節(jié)點(diǎn)(如節(jié)點(diǎn)peerl)下載完成時,可中斷其他節(jié)點(diǎn)(節(jié)點(diǎn)peer2或節(jié)點(diǎn)peer3)的下載流程。
[0105]S205,若所述確定的子m3u8文件還包括存儲所述切片文件的至少一個客戶端節(jié)點(diǎn)的標(biāo)識信息,其中每個客戶端節(jié)點(diǎn)還存儲所述切片文件的子切片文件,則根據(jù)所述切片文件的標(biāo)識信息向各個客戶端節(jié)點(diǎn)獲取所述切片文件的子切片文件。
[0106]具體實(shí)現(xiàn)中,還可將切片文件TEST_500_1繼續(xù)切分,切分為多個子切片文件,并存儲在節(jié)點(diǎn)peerl、節(jié)點(diǎn)peer2以及節(jié)點(diǎn)peer3中,即節(jié)點(diǎn)口661"1、節(jié)點(diǎn)口6612以及節(jié)點(diǎn)peer3均存儲切片文件TEST_500_1的所有子切片文件。由此當(dāng)客戶端獲取切片文件TEST_500_1時,可從存儲切片文件TEST_500_1的子切片文件的P2P節(jié)點(diǎn)下載選擇的子切片文件,例如從節(jié)點(diǎn)peerl下載第一部分的子切片文件,從節(jié)點(diǎn)peerf下載第二部分的子切片文件,再從節(jié)點(diǎn)peerf下載剩余部分的子切片文件,從而加快下載速度,提高下載切片文件的成功率。
[0107]S206,若所述確定的子m3u8文件沒有包括所述存儲所述切片文件的客戶端節(jié)點(diǎn)的標(biāo)識信息,則根據(jù)所述切片文件的標(biāo)識信息向所述CDN服務(wù)器獲取所述切片文件。
[0108]具體實(shí)現(xiàn)中,子m3u8文件中的部分切片文件的標(biāo)識信息可能沒有攜帶存儲該切片文件的至少一個P2P節(jié)點(diǎn)的標(biāo)識信息,例如子m3u8文件TEST_500中的切片文件TEST_500_3.ts后并沒有攜帶存儲切片文件TEST_500_3.ts的P2P節(jié)點(diǎn)的標(biāo)識信息,則客戶端可向⑶N服務(wù)器獲取切片文件TEST_500_3.ts,從而加快下載切片文件的效率。
[0109]可選的,客戶端存儲切片文件,并向P2P服務(wù)器發(fā)送已存儲切片文件的通知。
[0110]具體實(shí)現(xiàn)中,在客戶端獲取到切片文件后,存儲該切片文件,向P2P服務(wù)器發(fā)送已存儲切片文件的通知,以使P2P服務(wù)器記錄客戶端存儲了該切片文件的情況。當(dāng)其他客戶端需要獲取該切片文件時,也可直接向該客戶端獲取切片文件。
[0111]采用本發(fā)明實(shí)施例,接收視頻文件的點(diǎn)播請求,根據(jù)點(diǎn)播請求向CDN服務(wù)器獲取視頻文件的主m3u8文件,主m3u8文件包括不同碼率的子m3u8文件的文件信息,每個子m3u8文件包括視頻文件的切片文件的標(biāo)識信息;根據(jù)選取的碼率確定對應(yīng)的子m3u8文件,根據(jù)確定的子m3u8文件的文件信息向CDN服務(wù)器獲取確定的子m3u8文件,若確定的子m3u8文件還包括存儲切片文件的客戶端節(jié)點(diǎn)的標(biāo)識信息,則根據(jù)切片文件的標(biāo)識信息向客戶端節(jié)點(diǎn)獲取切片文件,若確定的子m3u8文件沒有包括存儲切片文件的P2P節(jié)點(diǎn)的標(biāo)識信息,則根據(jù)切片文件的標(biāo)識信息向CDN服務(wù)器獲取切片文件,從而減少客戶端向索引服務(wù)器請求獲取存儲切片文件的P2P節(jié)點(diǎn)的標(biāo)識信息的流程,減少請求獲取切片文件的次數(shù),節(jié)省請求下載視頻文件的時間,提高了下載視頻文件速度。
[0112]請參閱圖3,圖3是本發(fā)明實(shí)施例的一種獲取切片文件的方法的第三實(shí)施例的流程示意圖。本實(shí)施例對CDN服務(wù)器根據(jù)客戶端發(fā)送的各個請求生成子m3u8文件的實(shí)施步驟進(jìn)行解釋說明。
[0113]如圖3所示,本發(fā)明實(shí)施例的一種獲取切片文件的方法的第三實(shí)施例可以包括以下步驟。
[0114]S300,⑶N服務(wù)器根據(jù)客戶端發(fā)送的請求,向所述客戶端發(fā)送視頻文件的主m3u8文件,所述主m3u8文件包括不同碼率的子m3u8文件的文件信息,每個子m3u8文件包括所述視頻文件的切片文件的標(biāo)識信息。
[0115]具體實(shí)現(xiàn)中,當(dāng)⑶N服務(wù)器接收到客戶端發(fā)送的獲取視頻文件A的主m3u8文件后,將視頻文件A對應(yīng)的主m3u8文件發(fā)送給客戶端,以使客戶端解析主m3u8文件,得到不同碼率的子m3u8文件的文件信息,其中,子m3u8文件的文件信息可為子m3u8文件的URL。具體的,主m3u8文件的內(nèi)容可參照實(shí)施例圖2的步驟S201,本實(shí)施例則不再贅述。
[0116]S301,所述⑶N服務(wù)器接收所述客戶端根據(jù)選取的碼率對應(yīng)的所述子m3u8文件的文件信息發(fā)送的請求。
[0117]具體實(shí)現(xiàn)中,客戶端可根據(jù)下載切片文件的速度、播放切片文件的速度以及帶寬等因素選擇相應(yīng)碼率的子m3u8文件,根據(jù)獲取的該碼率的子m3u8文件的URL向CDN服務(wù)器請求獲取該碼率的子m3u8文件。
[0118]S302,若所述CDN服務(wù)器查找到存儲所述視頻文件的切片文件的客戶端節(jié)點(diǎn),則所述CDN服務(wù)器根據(jù)所述客戶端節(jié)點(diǎn)的標(biāo)識信息以及所述切片文件的標(biāo)識信息生成所述子m3u8文件。
[0119]具體實(shí)現(xiàn)中,⑶N服務(wù)器接收到客戶端發(fā)送的獲取該碼率的子m3u8文件的請求后,查找是否存在存儲切片文件的P2P節(jié)點(diǎn)。若查找到存儲切片文件的P2P節(jié)點(diǎn),則提取存儲切片文件的P2P節(jié)點(diǎn)的標(biāo)識信息,最后根據(jù)切片文件的標(biāo)識信息以及存儲切片文件的P2P節(jié)點(diǎn)的標(biāo)識信息等數(shù)據(jù)生成子m3u8文件。
[0120]作為一種可實(shí)施的方式,⑶N服務(wù)器可在P2P服務(wù)器查找存儲切片文件的P2P節(jié)點(diǎn),從數(shù)據(jù)庫或者索弓I服務(wù)器獲取P2P節(jié)點(diǎn)的信息。
[0121]S303,所述⑶N服務(wù)器向所述客戶端發(fā)送生成的子m3u8文件,以使所述客戶端根據(jù)所述切片文件的標(biāo)識信息向所述客戶端節(jié)點(diǎn)獲取所述切片文件。
[0122]具體實(shí)現(xiàn)中,CDN服務(wù)器向客戶端發(fā)送生成的子m3u8文件,以使客戶端在解析子m3u8文件之后,根據(jù)P2P節(jié)點(diǎn)的標(biāo)識信息直接向該P(yáng)2P節(jié)點(diǎn)獲取切片文件。
[0123]可選的,若所述CDN服務(wù)器沒有查找到存儲所述視頻文件的切片文件的客戶端節(jié)點(diǎn),則所述CDN服務(wù)器根據(jù)所述切片文件的標(biāo)識信息