分段內(nèi)容的流送的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及分段內(nèi)容的流送,并且具體地但不排他地,涉及用于實(shí)現(xiàn)將分段內(nèi)容從遞送節(jié)點(diǎn)流送到包括自適應(yīng)流送客戶端的設(shè)備的方法、包括用于流送分段內(nèi)容的自適應(yīng)流送客戶端的設(shè)備、用于與客戶端一起使用的網(wǎng)絡(luò)節(jié)點(diǎn)和數(shù)據(jù)結(jié)構(gòu)以及使用這樣的方法的計(jì)算機(jī)程序產(chǎn)品。
【背景技術(shù)】
[0002]目前,越來越多數(shù)量的視頻流送技術(shù)利用所謂的分段。例如,HTTP自適應(yīng)流送(HAS)、可縮放視頻編碼(SVC)和空間分段視頻(例如平鋪視頻)分別使用基于時(shí)間、質(zhì)量和空間的分段。在分段過程期間,將生成所謂的清單文件,其描述了在不同的分段文件和/或流與可以檢索分段的位置之間的關(guān)系。分段文件可以與包括與至少一個(gè)分段相關(guān)聯(lián)的數(shù)據(jù)的文件相關(guān),該至少一個(gè)分段可以通過例如HTTP或FTP的文件檢索協(xié)議來被檢索。類似地,分段流可以涉及包括與至少一個(gè)分段相關(guān)聯(lián)的數(shù)據(jù)的流,該至少一個(gè)分段可以通過例如RTSP/RTP或HAS的流送協(xié)議來檢索。下文中,分段文件或流將被稱為分段。此外,視頻,或者更一般地,通過分段方案呈現(xiàn)的內(nèi)容可以被稱為分段內(nèi)容。
[0003]為了播出(重放)清單文件中的分段,HAS客戶端(以下簡稱為客戶端)連續(xù)地向網(wǎng)絡(luò)請求分段,該網(wǎng)絡(luò)通常是所謂的內(nèi)容遞送網(wǎng)絡(luò)(CDN)。CDN可以被視為遞送節(jié)點(diǎn)的管理的網(wǎng)絡(luò),該管理網(wǎng)絡(luò)被配置為向客戶端遞送分段。客戶端可以使用清單文件中所定義的分段,以便例如通過從高質(zhì)量視頻流切換到低質(zhì)量視頻流或反之亦然,來針對改變帶寬要求和/或用戶輸入而動態(tài)地調(diào)整播出。此外,分段內(nèi)容還可以由內(nèi)容遞送系統(tǒng)(例如CDN)使用,以便在流行的和不太流行的視頻分段之間進(jìn)行區(qū)分。例如,與視頻的開始相關(guān)聯(lián)的內(nèi)容通常將比在視頻結(jié)束時(shí)的內(nèi)容更頻繁(更流行)地被觀看(下載/訪問/檢索)。類似地,低比特率較低質(zhì)量的視頻內(nèi)容(例如,最低分辨率HAS分段或所謂的SVC基本層)將比高質(zhì)量內(nèi)容(例如更高分辨率HAS分段或SVC增強(qiáng)層)更頻繁被觀看(下載/訪問/檢索)。
[0004]從單個(gè)(也)遠(yuǎn)程的服務(wù)器向客戶端遞送流行分段可能阻塞網(wǎng)絡(luò)帶寬。因此,配置為高效地向消費(fèi)者遞送內(nèi)容的內(nèi)容遞送網(wǎng)絡(luò)(CDN)可以將與更流行的內(nèi)容相關(guān)聯(lián)的分段存儲(高速緩存)在CDN中的多個(gè)遞送節(jié)點(diǎn)處,使得潛在的帶寬問題可以被減少,并且保證高效的遞送。此外,⑶N可以在遞送節(jié)點(diǎn)上存儲流行分段達(dá)更長的時(shí)段。⑶N內(nèi)容位置管理器可以集中管理分段可以被檢索的CDN內(nèi)的位置以及分段可以從那些位置被檢索多久。
[0005]為了使得客戶端能夠訪問存儲在CDN中的分段,客戶端提供有所謂的清單文件,清單文件標(biāo)識分段標(biāo)識符的列表以及可選地標(biāo)識指向網(wǎng)絡(luò)中的位置的分段定位符,這使得客戶端能夠檢索分段。典型地,客戶端被配置為檢索分段,使得與客戶端(設(shè)備)相關(guān)聯(lián)的分段緩沖器在開始播出之前被加載有預(yù)定數(shù)目的分段。此外,在播出期間,客戶端基于清單文件來從網(wǎng)絡(luò)持續(xù)檢索分段,使得足夠的分段被保持在緩沖器中。這樣,與分段檢索過程相關(guān)聯(lián)的時(shí)延不干擾分段的無縫播出。
[0006]然而,在一些情況下,清單文件中標(biāo)識的分段當(dāng)客戶端請求時(shí)可能(尚)未在遞送節(jié)點(diǎn)上可用。分段的非可用性可能具有不同的原因。例如,CDN可以被配置為在分段實(shí)際被請求之前在其遞送節(jié)點(diǎn)不預(yù)先放置分段。當(dāng)?shù)谝淮握埱蠓侄螘r(shí),CDN可以觸發(fā)吸取過程,其中內(nèi)容起源,例如媒體存儲裝置或另一⑶N,可以將分段遞送到⑶N (或⑶N中的一個(gè)或多個(gè)遞送節(jié)點(diǎn))。這樣的內(nèi)容吸取方案可以提供如下優(yōu)點(diǎn):僅當(dāng)存在對內(nèi)容的真實(shí)需求時(shí)分段被存儲在遞送節(jié)點(diǎn)上。此外,為了高效地管理在CDN中存儲的分段的量,分段可用(被高緩存)達(dá)預(yù)定時(shí)間。不太流行的分段可以在遞送節(jié)點(diǎn)上被存儲達(dá)相對短的高速緩存時(shí)段。在該時(shí)段之后,分段被移除,使得當(dāng)在該時(shí)段之后對其進(jìn)行請求時(shí),所請求的分段需要被重新吸取。在另一情況下,在例如實(shí)況轉(zhuǎn)播流中的分段的流行度可能突然急劇增加,使得在遞送節(jié)點(diǎn)接收對分段的請求的時(shí)刻,所請求的分段不在所有遞送節(jié)點(diǎn)上可用。
[0007]在上述情況下,分段請求可能導(dǎo)致分段的不可用(“高速緩存丟失”),這可能觸發(fā)一過程(例如,動態(tài)吸取過程),其中所請求的分段被提供給遞送節(jié)點(diǎn)。分段的吸取可能由于客戶端和可用于客戶端的帶寬的減少而在分段檢索過程中產(chǎn)生延遲。當(dāng)吸取過程需要針對多個(gè)分段被執(zhí)行時(shí),所請求的分段的遞送可以被大大減少。為了嘗試保持連續(xù)播出,HAS客戶端將該延遲視作帶寬問題,并且可以通過切換到消耗低(較低)質(zhì)量分段流的較小帶寬的播出來對這樣的情況進(jìn)行反應(yīng)。這可能導(dǎo)致用戶體驗(yàn)的大幅惡化。在最壞的情況下,客戶端無法保持分段的無縫播出。
[0008]US2009/0292819描述了一種方法,其中在媒體流的常規(guī)播出期間,客戶端可以從媒體服務(wù)器預(yù)先取得“先行”分段。這樣,客戶端可以容易地跳到先行分段,而沒有任何明顯延遲。在實(shí)踐中,這樣的預(yù)先取得方案將導(dǎo)致一種情況,其中在正常的流送過程期間,額外的“先行”分段被檢索,使得在客戶端和媒體服務(wù)器之間存在較小帶寬可用于常規(guī)分段。如果人們將在自適應(yīng)流送系統(tǒng)中使用這樣的方案,則HAS客戶端將通過切換到較低質(zhì)量的分段流來對帶寬減小進(jìn)行反應(yīng)。
[0009]因此,本領(lǐng)域需要用于將分段內(nèi)容流送到客戶端的改進(jìn)方法和系統(tǒng)。具體地,需要甚至在客戶端接收清單文件的時(shí)刻不是清單文件中的所有分段都可用于遞送到客戶端的情況下也提供對分段內(nèi)容的無縫播出的方法和系統(tǒng)。
【發(fā)明內(nèi)容】
[0010]本發(fā)明的目的是減少或消除現(xiàn)有技術(shù)中已知的缺點(diǎn)中的至少一個(gè),并且在本發(fā)明的第一方面中提供一種用于實(shí)現(xiàn)基于清單文件從遞送節(jié)點(diǎn)向自適應(yīng)流送客戶端流送分段內(nèi)容的方法,所述清單文件包括一個(gè)或多個(gè)分段標(biāo)識符,所述方法包括:從所述清單文件中選擇至少一個(gè)分段標(biāo)識符,所述分段標(biāo)識符與在執(zhí)行所述選擇時(shí)所述客戶端尚未請求的分段相關(guān)聯(lián);以及向遞送節(jié)點(diǎn)或與所述遞送節(jié)點(diǎn)相關(guān)聯(lián)的內(nèi)容遞送網(wǎng)絡(luò)預(yù)先發(fā)送預(yù)先通告信息以用于通告所述分段可以通過所述客戶端來請求,所述預(yù)先通告信息包括所述至少一個(gè)分段標(biāo)識符,所述預(yù)先通告信息進(jìn)一步被布置用于觸發(fā)所述遞送節(jié)點(diǎn)或所述內(nèi)容遞送網(wǎng)絡(luò),以確保在所述至少一個(gè)分段被請求時(shí)所述分段的可用性。該方法可以在簡單的客戶端-服務(wù)器模型中被使用,客戶端-服務(wù)器模型包括用于向客戶端或在一個(gè)或多個(gè)內(nèi)容遞送網(wǎng)絡(luò)中遞送分段的一個(gè)遞送節(jié)點(diǎn)(媒體服務(wù)器),其中多個(gè)遞送節(jié)點(diǎn)可以向客戶端遞送分段。
[0011]根據(jù)本發(fā)明的方法允許自適應(yīng)流送客戶端選擇清單文件中列出的下述分段的一個(gè)或多個(gè)分段標(biāo)識符:該分段(尚)未被所述客戶端請求,但是其可能(即,預(yù)計(jì)或預(yù)測)被所述客戶端請求。分段標(biāo)識符可以用于當(dāng)客戶端請求分段時(shí)向遞送節(jié)點(diǎn)預(yù)先通告該分段應(yīng)當(dāng)對客戶端可用。因此,預(yù)先通告信息被發(fā)送到遞送節(jié)點(diǎn)或內(nèi)容遞送網(wǎng)絡(luò),以預(yù)期客戶端對所述分段可能或未來的請求。如果分段在內(nèi)容遞送網(wǎng)絡(luò)中不可用,則網(wǎng)絡(luò)可以啟動一過程以用于檢索這些分段并將其存儲在遞送節(jié)點(diǎn)上或存儲在內(nèi)容遞送網(wǎng)絡(luò)中。這樣,分段可以容易地被遞送到請求該分段的客戶端。由于分段丟失而導(dǎo)致的延遲可以被大幅減少,使得自適應(yīng)流送客戶端將不切換到低質(zhì)量分段,從而確保高質(zhì)量分段被遞送到客戶端。
[0012]在實(shí)施例中,所述預(yù)先通告信息可以包括定義時(shí)段的時(shí)間段,其中預(yù)計(jì)所述分段請求將被所述客戶端請求。因此,預(yù)先通告信息包括關(guān)于不久的將來(即在預(yù)定時(shí)間段內(nèi))可能被請求的分段的信息。該時(shí)間段可以基于用戶統(tǒng)計(jì)等來確定(預(yù)測)。
[0013]在一個(gè)實(shí)施例中,確保所述分段的可用性進(jìn)一步可以包括:驗(yàn)證與所述至少一個(gè)分段標(biāo)識符相關(guān)聯(lián)的分段是否被存儲在所述遞送節(jié)點(diǎn)上;以及如果所述分段沒有被存儲在所述遞送節(jié)點(diǎn)上,則在所述遞送節(jié)點(diǎn)上存儲所述分段;或者
如果所述分段被存儲在所述遞送節(jié)點(diǎn)上,則在預(yù)定時(shí)間段中保持所述分段的存儲,優(yōu)選地所述預(yù)定時(shí)段如預(yù)計(jì)所述分段請求要被所述客戶端請求的時(shí)段那么長。因此,預(yù)先通告信息可以觸發(fā)遞送節(jié)點(diǎn)或內(nèi)容遞送網(wǎng)絡(luò)來驗(yàn)證分段的可用性。如果該分段不可用,則分段檢索過程可以被觸發(fā),該分段檢索過程檢索分段并且將該分段存儲在遞送節(jié)點(diǎn)或內(nèi)容遞送網(wǎng)絡(luò)上,這樣的分段檢索過程可以包括例如吸取過程。如果分段僅被存儲達(dá)預(yù)定時(shí)間,并且例如高速緩存算法將在特定時(shí)間段內(nèi)從高速緩存移除分段,則這些分段的存儲時(shí)間可以被延長,使得分段的可用性被保持。
[0014]在實(shí)施例中,所述方法可以進(jìn)一步包括在預(yù)先通告消息中向所述內(nèi)容遞送節(jié)點(diǎn)、所述內(nèi)容遞送網(wǎng)絡(luò)或在所述內(nèi)容遞送網(wǎng)絡(luò)中的(請求路由)節(jié)點(diǎn)發(fā)送所述預(yù)先通告信息。在實(shí)施例中,所述預(yù)先通告消息可以是(HTTP)消息。在又另一實(shí)施例中,(HTTP)消息的報(bào)頭可以包括預(yù)先通告指示符,其用信號通知所述遞送節(jié)點(diǎn)或所述內(nèi)容遞送網(wǎng)絡(luò)該消息是預(yù)先通告消息(或者應(yīng)當(dāng)被解釋為預(yù)先通告消息)。在另一實(shí)施例中,所述消息可以包括與所述至少一個(gè)分段相關(guān)聯(lián)的至少一個(gè)分段定位符(URL)。在又另一實(shí)施例中,至少部分的所述預(yù)先通告信息可以被插入所述消息的報(bào)頭中;和/或在所述消息的主體中。在另一實(shí)施例中,所述消息可以是HTTP HEAD、HTTP GET或HTTP POST消息中的一個(gè)。
[0015]因此,為了使內(nèi)容遞送網(wǎng)絡(luò),更具體地CDN中的請求路由節(jié)點(diǎn)或遞送節(jié)點(diǎn)在標(biāo)準(zhǔn)(HTTP)消息和用作預(yù)先通告消息的(HTTP)消息之間進(jìn)行區(qū)分,(HTTP)消息的報(bào)頭可以包括字段,該字段包括預(yù)先通告指示符,該預(yù)先通告指示符用信號通知遞送節(jié)點(diǎn)或內(nèi)容遞送網(wǎng)絡(luò)該消息應(yīng)當(dāng)被解釋為預(yù)先通告消息。在本申請中描述了這樣的預(yù)先通告指示符的各種實(shí)現(xiàn)方式,包括可以被插入(HTTP)消息的報(bào)頭中的標(biāo)志、令牌或預(yù)先通告cookie值。
[0016]在另一實(shí)施例中,所述發(fā)送可以進(jìn)一步包括:在HTTP請求消息中向內(nèi)容遞送網(wǎng)絡(luò)的請求路由節(jié)點(diǎn)發(fā)送所述預(yù)先通告信息;(隨后)從所述請求路由節(jié)點(diǎn)接收HTTP重新定向消息,所述重新定向消息包括與所述內(nèi)容遞送節(jié)點(diǎn)中的由所述客戶端可以向其請求所述分段的遞送的遞送節(jié)點(diǎn)相關(guān)聯(lián)的地址或分段定位符;以及所述客戶端或所述請求路由節(jié)點(diǎn)基于所述地址或分段定位符來在HTTP請求消息中向所述遞送節(jié)點(diǎn)發(fā)送所述預(yù)先通告信息。在另一實(shí)施例中,所述客戶端可以將所述地址或分段定位符寫入(插入)所述清單文件中。因此,用于處理預(yù)先通告HTTP消息的信息,包括HTTP重新定向消息中的信息,可以用于至少部分地解析存儲在包括自適應(yīng)流送客戶端的設(shè)備的高速緩存中的清單文件的一個(gè)或多個(gè)分段定位符。這樣,預(yù)先通告和預(yù)先解析可以被組合以甚至進(jìn)一步減小在客戶端請求分段期間的延遲。
[0017]在另一實(shí)施例中,所述方法可以包括:向所述遞送節(jié)點(diǎn)或內(nèi)容遞送網(wǎng)絡(luò)發(fā)送預(yù)先通告支持消息,以驗(yàn)證由所述遞送節(jié)點(diǎn)或所述內(nèi)容遞送網(wǎng)絡(luò)進(jìn)行的、用于確保所述分段的可用性的所述觸發(fā)是否得到所述遞送節(jié)點(diǎn)或所述內(nèi)容遞送網(wǎng)絡(luò)支持。在另一實(shí)施例中,所述方法可以包括:如果所述遞送節(jié)點(diǎn)或所述內(nèi)容遞送網(wǎng)絡(luò)支持客戶端的預(yù)先通告信息的處理,則從所述遞送節(jié)點(diǎn)或所述內(nèi)容遞送網(wǎng)絡(luò)接收指示所述觸發(fā)得到支持的支持確認(rèn)消息。
[0018]在實(shí)施例中,選擇所述至少一個(gè)分段標(biāo)識符可以進(jìn)一步包括:使用來自所述客戶端中的用戶導(dǎo)航功能的用戶導(dǎo)航信息和/或所述清單文件中的一般導(dǎo)航信息,來預(yù)測在預(yù)定時(shí)間段內(nèi)可能被請求的所述分段。
[0019]在實(shí)施例中,所述預(yù)先通告信息可以通過分離的通信信道被發(fā)送到所述遞送節(jié)點(diǎn)或所述內(nèi)容遞送網(wǎng)絡(luò)。在另一實(shí)施例中,所述分離的通信信道可以由所述遞送節(jié)點(diǎn)或所述內(nèi)容遞送網(wǎng)絡(luò)使用,以激活或去激活所述客戶端中的預(yù)先通告功能和/或向所述客戶端發(fā)送更新的清單文件。在另一實(shí)施例中,通信信道可以是(雙向)WebS0Cket通信信道。因此,分離的雙向WebSocket信道可以在客戶端和遞送節(jié)點(diǎn)或CDN之間建立,以允許預(yù)先通告消息的高效處理。此外,這允許網(wǎng)絡(luò)動態(tài)地激活(去激活)和/或調(diào)整預(yù)先通告功能。
[0020]在實(shí)施例中,所述遞送節(jié)點(diǎn)或所述內(nèi)容遞送網(wǎng)絡(luò)可以保持跟蹤在預(yù)定時(shí)段內(nèi)它已經(jīng)存儲的分段。在實(shí)施例中,如果所述內(nèi)容遞送網(wǎng)絡(luò)接收到與在所述預(yù)定時(shí)段內(nèi)已經(jīng)存儲的分段(標(biāo)識符)相關(guān)聯(lián)的預(yù)先通告信息,則所述遞送節(jié)點(diǎn)或內(nèi)容遞送網(wǎng)絡(luò)不由所述預(yù)先通告信息觸發(fā)。因此,這些實(shí)施例暗示了,如果預(yù)先通告信息中的分段標(biāo)識符被確定為與在預(yù)定時(shí)段期間存儲的分段的分段標(biāo)識符相同,則確保機(jī)制不被觸發(fā)。確保機(jī)制消耗資源,尤其在非