直播內(nèi)容分發(fā)系統(tǒng)及方法
【專利摘要】本發(fā)明公開了一種直播內(nèi)容分發(fā)系統(tǒng)及方法,其中方法包括:片庫(kù)服務(wù)器將直播編碼器發(fā)送的上傳/刪除/更新文件的信令轉(zhuǎn)換成預(yù)定格式的直播碼流數(shù)據(jù)包;將轉(zhuǎn)換后的所述直播碼流數(shù)據(jù)包主動(dòng)推送或被動(dòng)發(fā)送到中間節(jié)點(diǎn)服務(wù)器,或者,由所述中間節(jié)點(diǎn)服務(wù)器從所述片庫(kù)服務(wù)器接收或主動(dòng)下拉所述直播碼流數(shù)據(jù)包;直至所述直播碼流數(shù)據(jù)主動(dòng)推送或被動(dòng)發(fā)送到邊緣節(jié)點(diǎn)服務(wù)器;收到所述直播碼流數(shù)據(jù)包的邊緣節(jié)點(diǎn)服務(wù)器將其恢復(fù)成所述直播編碼器之前發(fā)送的信令,并按信令的指示生成/刪除/更新相應(yīng)的媒體分段文件和播放列表描述文件;本發(fā)明可以減少用戶請(qǐng)求服務(wù)的響應(yīng)延遲,以及減少用戶所看內(nèi)容與傳統(tǒng)的實(shí)時(shí)直播內(nèi)容之間的延遲錯(cuò)位。
【專利說(shuō)明】直播內(nèi)容分發(fā)系統(tǒng)及方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及多媒體【技術(shù)領(lǐng)域】,尤其涉及一種直播內(nèi)容分發(fā)系統(tǒng)及方法。
【背景技術(shù)】
[0002]互聯(lián)網(wǎng)電視業(yè)務(wù)是一種基于HTTP協(xié)議的一種準(zhǔn)實(shí)時(shí)的流媒體業(yè)務(wù)。該業(yè)務(wù)將節(jié)目?jī)?nèi)容分成很多的小片段,例如10秒鐘或2秒鐘一個(gè)片段。然后通過(guò)一個(gè)播放列表描述文件,將這些片段組織在一起。播放列表文件中,描述了這些片段的URL(Uniform/UniversalResource Locator,統(tǒng)一資源定位符)、時(shí)長(zhǎng)、屬性(例如不同碼率)、時(shí)間關(guān)系等。
[0003]如圖1所示,圖1為現(xiàn)有互聯(lián)網(wǎng)電視系統(tǒng)實(shí)現(xiàn)直播業(yè)務(wù)的結(jié)構(gòu)框架圖,直播編碼器101通過(guò)HTTP或FTP等協(xié)議,將媒體片段文件和播放列表文件上傳到片庫(kù)的web服務(wù)器102上,或者是將web服務(wù)器102上已經(jīng)過(guò)期失效的文件刪除或更新。當(dāng)?shù)谝粋€(gè)用戶105向本地的邊緣web服務(wù)器104請(qǐng)求內(nèi)容服務(wù)的時(shí)候,如果邊緣web服務(wù)器104沒(méi)有相應(yīng)的內(nèi)容文件,則會(huì)向上一級(jí)的web緩存服務(wù)器103發(fā)起請(qǐng)求,逐級(jí)上溯,直到片庫(kù)102。web緩存服務(wù)器103收到片庫(kù)web服務(wù)器102返回的文件內(nèi)容后,一邊向邊緣web服務(wù)器轉(zhuǎn)發(fā),一邊在本地進(jìn)行緩存。同樣邊緣web服務(wù)器104收到web緩存服務(wù)103返回的文件內(nèi)容后,也可以一邊向用戶終端105轉(zhuǎn)發(fā),一邊在本地進(jìn)行緩存。這樣等到第二個(gè)用戶106來(lái)請(qǐng)求同樣的內(nèi)容服務(wù)時(shí),邊緣web服務(wù)器104就可以讀取本地緩存的內(nèi)容來(lái)提供服務(wù)了。
[0004]但是對(duì)于直播業(yè)務(wù)來(lái)說(shuō),由于其播放列表文件和分片文件都是持續(xù)更新回滾的,如果是讀取web服務(wù)器中緩存的內(nèi)容來(lái)提供服務(wù)的話,就無(wú)法保證內(nèi)容是最新的,從而導(dǎo)致用戶觀看到的內(nèi)容與傳統(tǒng)方式觀看到的直播內(nèi)容之間存在的延時(shí)錯(cuò)位進(jìn)一步加大。而且如果web服務(wù)器中沒(méi)有緩存對(duì)應(yīng)的內(nèi)容,或相應(yīng)內(nèi)容已失效,則web服務(wù)器需要實(shí)時(shí)向更上一級(jí)的服務(wù)器去請(qǐng)求內(nèi)容,這會(huì)導(dǎo)致用戶的響應(yīng)延遲加大。
【發(fā)明內(nèi)容】
[0005]鑒于上述的分析,本發(fā)明旨在提供一種直播內(nèi)容分發(fā)系統(tǒng)及方法,用以解決現(xiàn)有互聯(lián)網(wǎng)電視業(yè)務(wù)中直播內(nèi)容存在較大延遲的問(wèn)題。
[0006]本發(fā)明的目的主要是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的:
[0007]本發(fā)明提供了一種直播內(nèi)容分發(fā)系統(tǒng),包括:片庫(kù)服務(wù)器、中間節(jié)點(diǎn)服務(wù)器和邊緣節(jié)點(diǎn)服務(wù)器,其中,
[0008]所述片庫(kù)服務(wù)器,用于將直播編碼器發(fā)送的上傳/刪除/更新文件的信令轉(zhuǎn)換成預(yù)定格式的直播碼流數(shù)據(jù)包,然后將所述直播碼流數(shù)據(jù)包主動(dòng)推送或被動(dòng)發(fā)送到所述中間節(jié)點(diǎn)服務(wù)器;
[0009]所述中間節(jié)點(diǎn)服務(wù)器,用于從所述片庫(kù)服務(wù)器主動(dòng)下拉所述直播碼流數(shù)據(jù)包或者接收所述片庫(kù)服務(wù)器主動(dòng)推送的所述直播碼流數(shù)據(jù)包,并將所述直播碼流數(shù)據(jù)包主動(dòng)推送或被動(dòng)發(fā)送到所述邊緣節(jié)點(diǎn)服務(wù)器;
[0010]所述邊緣節(jié)點(diǎn)服務(wù)器,用于從所述中間節(jié)點(diǎn)服務(wù)器主動(dòng)下拉多個(gè)所述直播碼流數(shù)據(jù)包或者接收所述中間節(jié)點(diǎn)服務(wù)器主動(dòng)推送的所述直播碼流數(shù)據(jù)包,并將其恢復(fù)成直播編碼器之前發(fā)送的信令,以及按信令的指示生成/刪除/更新相應(yīng)的媒體分段文件和播放列表描述文件。
[0011]進(jìn)一步地,所述片庫(kù)服務(wù)器至少包括:直播編碼器、信令轉(zhuǎn)換單元和內(nèi)容分發(fā)單元,其中,
[0012]所述直播編碼器,用于發(fā)送上傳/刪除/更新文件的信令;
[0013]所述信令轉(zhuǎn)換單元,用于在接收到所述直播編碼器發(fā)來(lái)的上傳/刪除/更新文件的信令后,判斷所述信令是否完整,如果是,轉(zhuǎn)換為預(yù)定格式的直播碼流數(shù)據(jù)包,并觸發(fā)所述內(nèi)容分發(fā)單元;如果否,將已接收到的所述信令的數(shù)據(jù)轉(zhuǎn)換為預(yù)定格式的直播碼流數(shù)據(jù)包,并觸發(fā)內(nèi)容分發(fā)單元;
[0014]所述內(nèi)容分發(fā)單元,用于將所述直播碼流數(shù)據(jù)包主動(dòng)推送給中間節(jié)點(diǎn)服務(wù)器;或者是在有中間節(jié)點(diǎn)服務(wù)器請(qǐng)求時(shí),將所述直播碼流數(shù)據(jù)包轉(zhuǎn)發(fā)給中間節(jié)點(diǎn)服務(wù)器。
[0015]進(jìn)一步地,所述直播碼流數(shù)據(jù)包至少包含:包序號(hào)、通道標(biāo)識(shí)和數(shù)據(jù)包是否完整的狀態(tài)信息,則所述信令恢復(fù)單元具體用于,接收到所述直播碼流數(shù)據(jù)包后,首先根據(jù)其中的通道標(biāo)識(shí),進(jìn)行分組;然后根據(jù)包序號(hào),對(duì)數(shù)據(jù)包進(jìn)行排序;對(duì)于每個(gè)數(shù)據(jù)包,根據(jù)狀態(tài)信息,判斷該數(shù)據(jù)包是否異常,如果否,提取其中的有效載荷發(fā)送給所述緩存單元,否則丟棄該數(shù)據(jù)包。
[0016]進(jìn)一步地,所述邊緣節(jié)點(diǎn)服務(wù)器至少包括:信令恢復(fù)單元、緩存單元以及存儲(chǔ)設(shè)備,其中,
[0017]所述信令恢復(fù)單元,用于接收到所述直播碼流數(shù)據(jù)包后,將其恢復(fù)成所述直播碼流服務(wù)器之前發(fā)送的信令形式,并發(fā)送給所述緩存單元;
[0018]所述緩存單元,用于接收信令恢復(fù)單元發(fā)來(lái)的信令,并根據(jù)所述信令的指示,觸發(fā)所述存儲(chǔ)設(shè)備生成/刪除/更新相應(yīng)的媒體分段文件和播放列表描述文件;
[0019]所述存儲(chǔ)設(shè)備,用于存儲(chǔ)媒體分段文件和播放列表描述文件。
[0020]所述存儲(chǔ)設(shè)備可以是磁盤、磁陣、內(nèi)存等,此處不作限制。
[0021]進(jìn)一步地,所述邊緣節(jié)點(diǎn)服務(wù)器還包括:
[0022]內(nèi)容服務(wù)單元,用于在有用戶終端請(qǐng)求直播服務(wù)時(shí),根據(jù)所述請(qǐng)求讀取相應(yīng)的媒體分段文件和播放列表描述文件并返回給所述用戶終端。
[0023]進(jìn)一步地,所述直播編碼器發(fā)送的信令為HTTP信令或FTP信令,所述預(yù)定格式可以為RTP格式或者是其他約定好的數(shù)據(jù)包格式。
[0024]本發(fā)明還提供了一種直播內(nèi)容分發(fā)方法,包括:
[0025]片庫(kù)服務(wù)器將直播編碼器發(fā)送的上傳/刪除/更新文件的信令轉(zhuǎn)換成預(yù)定格式的直播碼流數(shù)據(jù)包;
[0026]將轉(zhuǎn)換后的所述直播碼流數(shù)據(jù)包主動(dòng)推送或被動(dòng)發(fā)送到中間節(jié)點(diǎn)服務(wù)器,或者,由所述中間節(jié)點(diǎn)服務(wù)器從所述片庫(kù)服務(wù)器接收或主動(dòng)下拉所述直播碼流數(shù)據(jù)包;直至所述直播碼流數(shù)據(jù)主動(dòng)推送或被動(dòng)發(fā)送到邊緣節(jié)點(diǎn)服務(wù)器;
[0027]收到所述直播碼流數(shù)據(jù)包的邊緣節(jié)點(diǎn)服務(wù)器將其恢復(fù)成所述直播編碼器之前發(fā)送的信令,并按信令的指示生成/刪除/更新相應(yīng)的媒體分段文件和播放列表描述文件。
[0028]進(jìn)一步地,該方法還包括:[0029]當(dāng)有用戶終端請(qǐng)求直播服務(wù)時(shí),所述邊緣節(jié)點(diǎn)服務(wù)器根據(jù)所述請(qǐng)求讀取相應(yīng)的媒體分段文件和播放列表描述文件并返回給所述用戶終端。
[0030]進(jìn)一步地,所述直播碼流數(shù)據(jù)包至少包含:包序號(hào)、通道標(biāo)識(shí)和數(shù)據(jù)包是否完整的狀態(tài)信息,將信令轉(zhuǎn)換成預(yù)定格式的直播碼流的步驟具體包括:
[0031]所述片庫(kù)服務(wù)器接收到直播編碼器發(fā)來(lái)的上傳/刪除/更新文件的信令后,判斷所述信令是否完整,如果是,轉(zhuǎn)換為預(yù)定格式的直播碼流數(shù)據(jù)包;如果否,判斷已接收到的所述信令的數(shù)據(jù)的長(zhǎng)度是否滿足預(yù)定閾值,將長(zhǎng)度滿足預(yù)定閾值的數(shù)據(jù)轉(zhuǎn)換為預(yù)定格式的直播碼流數(shù)據(jù)包;如果已接受到的該信令的數(shù)據(jù)的長(zhǎng)度小于預(yù)定閾值,繼續(xù)接收該信令的數(shù)據(jù),直到長(zhǎng)度滿足預(yù)定閾值或信令已完整時(shí)進(jìn)行轉(zhuǎn)換。為了保證數(shù)據(jù)的及時(shí)轉(zhuǎn)發(fā),也可以設(shè)定超時(shí)時(shí)間,對(duì)超時(shí)仍未達(dá)到前述轉(zhuǎn)換條件的數(shù)據(jù),也強(qiáng)制進(jìn)行轉(zhuǎn)換。
[0032]進(jìn)一步地,恢復(fù)成直播編碼器之前發(fā)送的信令的步驟具體包括:
[0033]邊緣節(jié)點(diǎn)服務(wù)器接收到所述直播碼流數(shù)據(jù)包后,首先根據(jù)其中的通道標(biāo)識(shí),進(jìn)行分組;然后根據(jù)包序號(hào),對(duì)數(shù)據(jù)包進(jìn)行排序,判斷數(shù)據(jù)包是否異常,如果否,提取其中的有效載荷,將其恢復(fù)成直播碼流服務(wù)器之前發(fā)送的信令形式,否則丟棄該數(shù)據(jù)包。
[0034]本發(fā)明有益效果如下:
[0035]本發(fā)明將直播編碼器生成的HTTP直播內(nèi)容,及時(shí)分發(fā)到邊緣節(jié)點(diǎn)服務(wù)器,就近給用戶終端提供HTTP直播服務(wù),從而減少用戶請(qǐng)求服務(wù)的響應(yīng)延遲,以及減少用戶所看內(nèi)容與傳統(tǒng)的實(shí)時(shí)直播內(nèi)容之間的延遲錯(cuò)位。
[0036]本發(fā)明的其他特征和優(yōu)點(diǎn)將在隨后的說(shuō)明書中闡述,并且,部分的從說(shuō)明書中變得顯而易見,或者通過(guò)實(shí)施本發(fā)明而了解。本發(fā)明的目的和其他優(yōu)點(diǎn)可通過(guò)在所寫的說(shuō)明書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來(lái)實(shí)現(xiàn)和獲得。
【專利附圖】
【附圖說(shuō)明】
[0037]圖1為現(xiàn)有技術(shù)中,互聯(lián)網(wǎng)電視系統(tǒng)實(shí)現(xiàn)直播業(yè)務(wù)的結(jié)構(gòu)框架圖;
[0038]圖2為本發(fā)明中,系統(tǒng)實(shí)施例的結(jié)構(gòu)示意圖。
[0039]圖3為本發(fā)明中,優(yōu)選系統(tǒng)實(shí)施例的結(jié)構(gòu)示意圖;
[0040]圖4為本發(fā)明中,對(duì)HTTP信令進(jìn)行切分的具體實(shí)現(xiàn)流程示意圖;
[0041]圖5為本發(fā)明中,對(duì)RTP數(shù)據(jù)包進(jìn)行恢復(fù)的具體實(shí)現(xiàn)流程示意圖;
[0042]圖6為本發(fā)明中,方法實(shí)施例的流程示意圖。
【具體實(shí)施方式】
[0043]下面結(jié)合附圖來(lái)具體描述本發(fā)明的優(yōu)選實(shí)施例,其中,附圖構(gòu)成本申請(qǐng)一部分,并與本發(fā)明的實(shí)施例一起用于闡釋本發(fā)明的原理。
[0044]首先,結(jié)合附圖2和圖3對(duì)本發(fā)明實(shí)施例所述系統(tǒng)進(jìn)行詳細(xì)說(shuō)明。
[0045]如圖2所示,圖2為本發(fā)明實(shí)施例所述系統(tǒng)的結(jié)構(gòu)示意圖,具體可以包括:片庫(kù)服務(wù)器、中間節(jié)點(diǎn)服務(wù)器和邊緣節(jié)點(diǎn)服務(wù)器,其中,
[0046]片庫(kù)服務(wù)器20,用于將直播編碼器發(fā)送的上傳/刪除/更新文件的信令轉(zhuǎn)換成預(yù)定格式的直播碼流數(shù)據(jù)包,然后將直播碼流數(shù)據(jù)包主動(dòng)推送到中間節(jié)點(diǎn)服務(wù)器21,或者是在中間節(jié)點(diǎn)服務(wù)器21發(fā)起服務(wù)請(qǐng)求的時(shí)候,將直播碼流數(shù)據(jù)包發(fā)送給中間節(jié)點(diǎn)服務(wù)器21 ;[0047]中間節(jié)點(diǎn)服務(wù)器21,用于從片庫(kù)服務(wù)器20主動(dòng)下拉直播碼流數(shù)據(jù)包或者接收片庫(kù)服務(wù)器20主動(dòng)推送的直播碼流數(shù)據(jù)包,并將直播碼流數(shù)據(jù)包主動(dòng)推送到邊緣節(jié)點(diǎn)服務(wù)器22 ;
[0048]邊緣節(jié)點(diǎn)服務(wù)器22,用于從中間節(jié)點(diǎn)服務(wù)器21主動(dòng)下拉多個(gè)直播碼流數(shù)據(jù)包或者接收中間節(jié)點(diǎn)服務(wù)器21主動(dòng)推送的直播碼流數(shù)據(jù)包,并將其恢復(fù)成直播編碼器之前發(fā)送的信令,以及按信令的指示生成/刪除/更新相應(yīng)的媒體分段文件和播放列表描述文件。
[0049]以下將對(duì)本發(fā)明優(yōu)選的系統(tǒng)實(shí)施例進(jìn)行進(jìn)一步說(shuō)明,為了便于理解,描述中假定直播編碼器使用的是HTTP信令,預(yù)定轉(zhuǎn)換格式為RTP格式,RTP包的有效載荷即為切分后的HTTP信令。
[0050]其中,RTP格式數(shù)據(jù)包中,需要包含以下信息:
[0051]通道標(biāo)識(shí),由于編碼器可能同時(shí)通過(guò)多個(gè)HTTP/FTP通道上傳/更新媒體文件,所以該通道標(biāo)識(shí)用于標(biāo)記編碼器使用的不同的HTTP/FTP通道;
[0052]包序號(hào),用于判斷是否發(fā)生丟包、亂序等情況;具有不同通道標(biāo)識(shí)的數(shù)據(jù)包,可以使用自己獨(dú)立的序號(hào)空間;
[0053]狀態(tài)信息,例如該數(shù)據(jù)包在原始信令包中的偏移位置,或者是屬于原始信令包的首包、末包、中間包等狀態(tài)信息;
[0054]可選的,還可以包含原始信令所使用的傳輸信息,例如傳輸協(xié)議(HTTP/FTP)、傳輸
端口號(hào)等。
[0055]如圖3所示,圖3為本發(fā)明優(yōu)選系統(tǒng)實(shí)施例的結(jié)構(gòu)示意圖,具體包括:片庫(kù)服務(wù)器30、中間節(jié)點(diǎn)服務(wù)器31和邊緣節(jié)點(diǎn)服務(wù)器32,其中,片庫(kù)服務(wù)器30具體包括:直播編碼器301、信令轉(zhuǎn)換單元302和內(nèi)容分發(fā)單元303 ;邊緣節(jié)點(diǎn)服務(wù)器32具體包括:信令恢復(fù)單元321、緩存單元322、存儲(chǔ)設(shè)備323和內(nèi)容服務(wù)單元324,其中,
[0056]其中,直播編碼器301,生成媒體分段文件和播放列表描述文件后,通過(guò)HTTP格式的TOT (上傳)/DELETE (刪除)/更新等消息,發(fā)送文件上傳/刪除/更新的信令給信令轉(zhuǎn)換單元302 ;
[0057]信令轉(zhuǎn)換單元302,收到直播編碼器301發(fā)來(lái)的上傳/刪除/更新文件的HTTP信令后,給直播編碼器返回響應(yīng)消息,同時(shí)對(duì)這些上傳/刪除/更新文件的HTTP信令進(jìn)行重新打包,轉(zhuǎn)換成RTP格式的數(shù)據(jù)包,然后轉(zhuǎn)發(fā)給內(nèi)容分發(fā)單元303 ;
[0058]需要說(shuō)明的是,在信令轉(zhuǎn)換單元302收到編碼器301的上傳/刪除/更新文件的HTTP信令后,將其按預(yù)定的閾值長(zhǎng)度,切分轉(zhuǎn)換成RTP(Real-Time Transport Protocol,實(shí)時(shí)傳輸協(xié)議)包格式。由于一個(gè)HTTP信令可能很長(zhǎng),為保證內(nèi)容分發(fā)的及時(shí)性,減少延遲,信令轉(zhuǎn)換單元302不必等待收到完整的HTTP信令后,才作轉(zhuǎn)換,而是收到一部分?jǐn)?shù)據(jù)后,即可打包轉(zhuǎn)發(fā),具體流程參見后面附圖4的相關(guān)說(shuō)明。
[0059]并且,為便于后續(xù)信令恢復(fù)單元321的處理,不同的HTTP信令最好不要放在一個(gè)RTP數(shù)據(jù)包中,另外可以在RTP數(shù)據(jù)包頭中標(biāo)記該RTP數(shù)據(jù)包的狀態(tài),例如是一個(gè)HTTP信令的首包、末包或完整包等等,然后將該RTP數(shù)據(jù)包交給內(nèi)容分發(fā)單元303,通過(guò)單播或組播的方式,向中間服務(wù)器節(jié)點(diǎn)的內(nèi)容分發(fā)單元進(jìn)行主動(dòng)推送,或者,由中間服務(wù)節(jié)點(diǎn)的內(nèi)容分發(fā)單元下拉,例如,通過(guò)RTSP (Real Time Streaming Protocol,實(shí)時(shí)流化協(xié)議)/RTP方式,與內(nèi)容分發(fā)單元303建立RTSP鏈接,下拉轉(zhuǎn)換后的RTP數(shù)據(jù)包;或者,也可以通過(guò)HTTP的方式來(lái)下拉轉(zhuǎn)換后的數(shù)據(jù)包,通過(guò)將RTP數(shù)據(jù)包復(fù)用到HTTP通道中進(jìn)行傳輸。
[0060]由于直播編碼器301可能同時(shí)通過(guò)多個(gè)HTTP鏈接,同時(shí)向信令轉(zhuǎn)換單元302發(fā)送同一直播內(nèi)容的多個(gè)文件的HTTP信令,所以信令轉(zhuǎn)換單元302需要在轉(zhuǎn)換時(shí)對(duì)此進(jìn)行處理,以免將這些不同的HTTP信令混在一起。例如對(duì)于前面所述的RTP方式的分發(fā),信令轉(zhuǎn)換單元302可以在RTP數(shù)據(jù)包中,對(duì)直播編碼器301通過(guò)不同HTTP鏈接發(fā)送的HTTP信令,使用不同的SSRC (Synchronization Source, RTP包中的同步源字段)進(jìn)行標(biāo)識(shí),內(nèi)容分發(fā)單元303在對(duì)轉(zhuǎn)換后的RTP數(shù)據(jù)包進(jìn)行分發(fā)時(shí),可以對(duì)不同SSRC的RTP包使用不同的RTP通道進(jìn)行分發(fā),也可以復(fù)用同一個(gè)RTP通道進(jìn)行分發(fā),接收方即中間節(jié)點(diǎn)服務(wù)器的內(nèi)容分發(fā)單元通過(guò)SSRC進(jìn)行識(shí)別。對(duì)于前面所述的HTTP方式的分發(fā),信令轉(zhuǎn)換單元302可以對(duì)不同HTTP通道收到的請(qǐng)求,也通過(guò)不同的HTTP通道向內(nèi)容分發(fā)單元303轉(zhuǎn)發(fā)。
[0061]內(nèi)容分發(fā)單元303,負(fù)責(zé)在中間節(jié)點(diǎn)服務(wù)器中進(jìn)行分發(fā)這些RTP數(shù)據(jù)包,如果有多級(jí)中間節(jié)點(diǎn),其繼續(xù)向下一級(jí)中間節(jié)點(diǎn)服務(wù)器分發(fā),直接到達(dá)邊緣節(jié)點(diǎn)服務(wù)器。分發(fā)時(shí),可以采用由內(nèi)容分發(fā)單元303主動(dòng)向中間節(jié)點(diǎn)服務(wù)器31的內(nèi)容分發(fā)單元311推送的方式,也可以采用由中間節(jié)點(diǎn)服務(wù)器31的內(nèi)容分發(fā)單元311向下拉的方式;如果是多級(jí)中間節(jié)點(diǎn)服務(wù)器,其分發(fā)方式也可以為主動(dòng)推送或者下級(jí)中間節(jié)點(diǎn)服務(wù)器下拉。同樣地,內(nèi)容分發(fā)單元303也可以采用不同的HTTP通道或RTP通道向中間節(jié)點(diǎn)服務(wù)器的內(nèi)容分發(fā)單元轉(zhuǎn)發(fā)。
[0062]中間節(jié)點(diǎn)服務(wù)器31的內(nèi)容分發(fā)單元311,接收內(nèi)容服務(wù)器303主動(dòng)推送的RTP數(shù)據(jù)包,并將RTP數(shù)據(jù)包主動(dòng)推送到下一級(jí)中間服務(wù)器的內(nèi)容分發(fā)單元或者邊緣節(jié)點(diǎn)服務(wù)器32的信令恢復(fù)單元321,其也可以從內(nèi)容分發(fā)單元303主動(dòng)下拉RTP數(shù)據(jù)包。
[0063]信令恢復(fù)單元321,采用與中級(jí)節(jié)點(diǎn)服務(wù)器類似的方式,接收其上一級(jí)中間節(jié)點(diǎn)服務(wù)器的內(nèi)容分發(fā)單元主動(dòng)推送的RTP數(shù)據(jù)包,或者通過(guò)下拉的方式從其上一級(jí)中間節(jié)點(diǎn)服務(wù)器的內(nèi)容分發(fā)單元獲取RTP數(shù)據(jù)包,將收到的RTP數(shù)據(jù)包恢復(fù)成直播編碼器301之前發(fā)來(lái)的HTTP信令格式的數(shù)據(jù)包,發(fā)送給緩存單元322。信令恢復(fù)單元321不必等待收到一個(gè)完整的HTTP信令轉(zhuǎn)換后的所有RTP數(shù)據(jù)包后,才作信令恢復(fù),具體恢復(fù)流程參見附圖5的相關(guān)說(shuō)明。
[0064]緩存單元322,對(duì)收到的HTTP信令進(jìn)行解析,按HTTP信令的指示,在存儲(chǔ)設(shè)備323上生成/更新/刪除相應(yīng)的媒體分段文件和播放列表描述文件;其中,存儲(chǔ)設(shè)備323可以是內(nèi)存,也可以是磁盤、磁陣等外設(shè)存儲(chǔ)設(shè)備。
[0065]內(nèi)容服務(wù)單元324,當(dāng)有用戶終端向邊緣節(jié)點(diǎn)服務(wù)器請(qǐng)求直播服務(wù)時(shí),由內(nèi)容服務(wù)單元324負(fù)責(zé)接收并解析用戶終端的HTTP GET請(qǐng)求,從存儲(chǔ)設(shè)備323中讀取相應(yīng)的媒體分段文件和播放列表描述文件,并返回給該用戶終端。
[0066]其中,信令轉(zhuǎn)換單元302對(duì)HTTP信令進(jìn)行切分的具體實(shí)現(xiàn)流程如圖4所示,具體可以包括:
[0067]步驟401:等待接收直播編碼器發(fā)來(lái)的組成HTTP信令的數(shù)據(jù)包;
[0068]步驟402:接收直播編碼器發(fā)來(lái)的組成HTTP信令的數(shù)據(jù)包;
[0069]步驟403:判斷接收到的數(shù)據(jù)包是否是完整的HTTP信令,如果是,轉(zhuǎn)到步驟407 ;如果否,執(zhí)行步驟404:
[0070]步驟404:判斷已接收到的數(shù)據(jù)包的長(zhǎng)度是否大于預(yù)定閾值(一般不超過(guò)網(wǎng)絡(luò)傳輸?shù)腗TU最大傳輸單元大小,例如可以設(shè)置為1400字節(jié)),如果是,執(zhí)行步驟405,否則轉(zhuǎn)到步驟401繼續(xù)等待;
[0071]步驟405:將這部分?jǐn)?shù)據(jù)轉(zhuǎn)換成RTP數(shù)據(jù)包,并標(biāo)記RTP數(shù)據(jù)包的狀態(tài),例如“首包”;
[0072]步驟406:將RTP數(shù)據(jù)包轉(zhuǎn)交給內(nèi)容分發(fā)單元303,回到步驟401 ;
[0073]步驟407:將當(dāng)前數(shù)據(jù)包轉(zhuǎn)換成RTP數(shù)據(jù)包,設(shè)置RTP數(shù)據(jù)包的狀態(tài)為“完整包”。
[0074]需要說(shuō)明的是,為了保證數(shù)據(jù)的及時(shí)轉(zhuǎn)發(fā),還可以設(shè)定超時(shí)時(shí)間,對(duì)超時(shí)仍未達(dá)到前述轉(zhuǎn)換條件的數(shù)據(jù),也強(qiáng)制進(jìn)行轉(zhuǎn)換。
[0075]信令恢復(fù)單元321對(duì)RTP數(shù)據(jù)包進(jìn)行恢復(fù)的具體實(shí)現(xiàn)流程如圖5所示,具體可以包括:
[0076]步驟501:等待接收每一個(gè)RTP數(shù)據(jù)包;
[0077]步驟502:收到信令轉(zhuǎn)發(fā)單元通過(guò)內(nèi)容分發(fā)單元303以及中間節(jié)點(diǎn)服務(wù)器發(fā)來(lái)的一個(gè)RTP數(shù)據(jù)包;
[0078]步驟503:接收到RTP數(shù)據(jù)包后,根據(jù)其中的通道標(biāo)識(shí),進(jìn)行分組;然后根據(jù)包序號(hào),對(duì)數(shù)據(jù)包進(jìn)行排序;
[0079]步驟504:根據(jù)狀態(tài)信息判斷該RTP數(shù)據(jù)包是否異常,如果是,轉(zhuǎn)到步驟506,否則執(zhí)行步驟505 ;
[0080]步驟505:提取該RTP數(shù)據(jù)包中的有效載荷,通過(guò)相應(yīng)的HTTP鏈接轉(zhuǎn)發(fā)給緩存單元322,回到步驟501 ;
[0081]步驟506:關(guān)閉對(duì)應(yīng)的與緩存單元322之間的HTTP鏈接;
[0082]步驟507:判斷RTP數(shù)據(jù)包是否是“首包”,如果是,執(zhí)行步驟508,否則轉(zhuǎn)到步驟509 ;
[0083]步驟508:新建與緩存單元322之間的HTTP鏈接,執(zhí)行步驟505 ;
[0084]步驟509:丟棄該RTP數(shù)據(jù)包,轉(zhuǎn)到步驟501,直到再次收到一個(gè)有“首包”標(biāo)識(shí)的RTP數(shù)據(jù)包后,再新建一個(gè)HTTP鏈接。
[0085]以上以直播編碼器使用的是HTTP信令以及預(yù)定轉(zhuǎn)換格式為RTP格式為例,對(duì)本發(fā)明實(shí)施例所述裝置進(jìn)行了說(shuō)明,本發(fā)明實(shí)施例同樣適用于使用FTP信令的直播編碼器,以及轉(zhuǎn)換成其他格式的直播碼流數(shù)據(jù)包,其實(shí)現(xiàn)流程類似,此處不再贅述。
[0086]接下來(lái)結(jié)合附圖6對(duì)本發(fā)明實(shí)施例所述方法進(jìn)行詳細(xì)說(shuō)明。
[0087]如圖6所示,圖6為本發(fā)明實(shí)施例所述方法的流程示意圖,主要可以包括:
[0088]步驟601:片庫(kù)服務(wù)器將直播編碼器發(fā)送的上傳/刪除/更新文件的信令轉(zhuǎn)換成預(yù)定格式的直播碼流數(shù)據(jù)包;其中,預(yù)定格式的直播碼流數(shù)據(jù)包中,需要包含以下信息:
[0089]通道標(biāo)識(shí),由于編碼器可能同時(shí)通過(guò)多個(gè)HTTP/FTP通道上傳/更新媒體文件,所以該通道標(biāo)識(shí)用于標(biāo)記編碼器使用的不同的HTTP/FTP通道;
[0090]包序號(hào),用于判斷是否發(fā)生丟包、亂序等情況;具有不同通道標(biāo)識(shí)的數(shù)據(jù)包,可以使用自己獨(dú)立的序號(hào)空間;
[0091]狀態(tài)信息,例如該數(shù)據(jù)包在原始信令包中的偏移位置,或者是屬于原始信令包的首包、末包、中間包等狀態(tài)信息;
[0092]可選的,還可以包含原始信令所使用的傳輸信息,例如傳輸協(xié)議(HTTP/FTP)、傳輸
端口號(hào)等。[0093]步驟602:將轉(zhuǎn)換后的所述直播碼流數(shù)據(jù)包主動(dòng)推送或被動(dòng)發(fā)送到中間節(jié)點(diǎn)服務(wù)器,或者,由所述中間節(jié)點(diǎn)服務(wù)器從所述片庫(kù)服務(wù)器接收或主動(dòng)下拉所述直播碼流數(shù)據(jù)包;直至所述直播碼流數(shù)據(jù)主動(dòng)推送或被動(dòng)發(fā)送到邊緣節(jié)點(diǎn)服務(wù)器;其中,將信令轉(zhuǎn)換成預(yù)定格式的直播碼流的步驟具體可以包括:片庫(kù)服務(wù)器接收到直播編碼器發(fā)來(lái)的上傳/刪除/更新文件的信令后,判斷信令是否完整,如果是,轉(zhuǎn)換為預(yù)定格式的直播碼流數(shù)據(jù)包;如果否,判斷已接收到的信令的數(shù)據(jù)的長(zhǎng)度是否滿足預(yù)定閾值時(shí),將長(zhǎng)度滿足預(yù)定閾值的數(shù)據(jù)轉(zhuǎn)換為預(yù)定格式的直播碼流數(shù)據(jù)包;如果已接受到的該信令的數(shù)據(jù)的長(zhǎng)度小于預(yù)定閾值,繼續(xù)接收該信令的數(shù)據(jù),直到長(zhǎng)度滿足預(yù)定閾值或信令已完整時(shí)進(jìn)行轉(zhuǎn)換;并且對(duì)于超過(guò)預(yù)定超時(shí)時(shí)間仍不完整或者長(zhǎng)度仍未達(dá)到預(yù)定閾值的數(shù)據(jù),也可以強(qiáng)制進(jìn)行轉(zhuǎn)換。
[0094]步驟603:收到直播碼流數(shù)據(jù)包的邊緣節(jié)點(diǎn)服務(wù)器將其恢復(fù)成直播編碼器之前發(fā)送的信令,并按信令的指示生成/刪除/更新相應(yīng)的媒體分段文件和播放列表描述文件;其中,恢復(fù)成直播編碼器之前發(fā)送的信令的步驟具體可以包括:邊緣節(jié)點(diǎn)服務(wù)器接收到直播碼流數(shù)據(jù)包后,首先根據(jù)其中的通道標(biāo)識(shí),進(jìn)行分組;然后根據(jù)包序號(hào),對(duì)數(shù)據(jù)包進(jìn)行排序;對(duì)于每個(gè)數(shù)據(jù)包,判斷該數(shù)據(jù)包是否異常(是否發(fā)生丟包,檢查狀態(tài)信息等),沒(méi)有異常的話,則提取其中的有效載荷,將其恢復(fù)成直播碼流服務(wù)器之前發(fā)送的信令形式;如果有異常,則丟棄該數(shù)據(jù)包。
[0095]當(dāng)有用戶終端請(qǐng)求直播服務(wù)時(shí),邊緣節(jié)點(diǎn)服務(wù)器根據(jù)請(qǐng)求讀取相應(yīng)的媒體分段文件和播放列表描述文件并返回給用戶終端。
[0096]對(duì)于本發(fā)明所述方法實(shí)施例的具體實(shí)現(xiàn)流程,由于上述系統(tǒng)中已有詳細(xì)說(shuō)明,故此處不再贅述。
[0097]綜上所述,本發(fā)明實(shí)施例提供了一種直播內(nèi)容分發(fā)系統(tǒng)及方法,采用本發(fā)明實(shí)施例的技術(shù)方案,可以將直播編碼器生成的HTTP直播內(nèi)容,及時(shí)分發(fā)到邊緣節(jié)點(diǎn)服務(wù)器,就近給用戶終端提供HTTP直播服務(wù),從而達(dá)到減少用戶請(qǐng)求服務(wù)的響應(yīng)延遲以及減少用戶所看內(nèi)容與傳統(tǒng)的實(shí)時(shí)直播內(nèi)容之間的延遲錯(cuò)位的目的,提高用戶的觀看體驗(yàn)。而且對(duì)于中間的非邊緣節(jié)點(diǎn)服務(wù)器,只需要簡(jiǎn)單的作內(nèi)容分發(fā),轉(zhuǎn)發(fā)碼流即可,不需要緩存任何文件,也可以大大減少服務(wù)器的資源占用。另外,對(duì)于片庫(kù)服務(wù)器和中間節(jié)點(diǎn)服務(wù)器,可以不需部署緩存單元和存儲(chǔ)設(shè)備,即不緩存媒體分段文件和播放列表描述文件,從而可以達(dá)到節(jié)省資源消耗的目的。
[0098]以上所述,僅為本發(fā)明較佳的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本【技術(shù)領(lǐng)域】的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求書的保護(hù)范圍為準(zhǔn)。
【權(quán)利要求】
1.一種直播內(nèi)容分發(fā)系統(tǒng),其特征在于,包括:片庫(kù)服務(wù)器、中間節(jié)點(diǎn)服務(wù)器和邊緣節(jié)點(diǎn)服務(wù)器,其中, 所述片庫(kù)服務(wù)器,用于將直播編碼器發(fā)送的上傳/刪除/更新文件的信令轉(zhuǎn)換成預(yù)定格式的直播碼流數(shù)據(jù)包,然后將所述直播碼流數(shù)據(jù)包主動(dòng)推送或被動(dòng)發(fā)送到所述中間節(jié)點(diǎn)服務(wù)器; 所述中間節(jié)點(diǎn)服務(wù)器,用于從所述片庫(kù)服務(wù)器主動(dòng)下拉所述直播碼流數(shù)據(jù)包或者接收所述片庫(kù)服務(wù)器主動(dòng)推送的所述直播碼流數(shù)據(jù)包,并將所述直播碼流數(shù)據(jù)包主動(dòng)推送或被動(dòng)發(fā)送到所述邊緣節(jié)點(diǎn)服務(wù)器; 所述邊緣節(jié)點(diǎn)服務(wù)器,用于從所述中間節(jié)點(diǎn)服務(wù)器主動(dòng)下拉所述直播碼流數(shù)據(jù)包或者接收所述中間節(jié)點(diǎn)服務(wù)器主動(dòng)推送的所述直播碼流數(shù)據(jù)包,并將其恢復(fù)成直播編碼器之前發(fā)送的信令,以及按信令的指示生成/刪除/更新相應(yīng)的媒體分段文件和播放列表描述文件。
2.根據(jù)權(quán)利要求1所述的系統(tǒng),其特征在于,所述片庫(kù)服務(wù)器至少包括:直播編碼器、信令轉(zhuǎn)換單元和內(nèi)容分發(fā)單元,其中, 所述直播編碼器,用于發(fā)送上傳/刪除/更新文件的信令; 所述信令轉(zhuǎn)換單元,用于在接收到所述直播編碼器發(fā)來(lái)的上傳/刪除/更新文件的信令后,判斷所述信令是否完整,如果是,轉(zhuǎn)換為預(yù)定格式的直播碼流數(shù)據(jù)包,并觸發(fā)所述內(nèi)容分發(fā)單元;如果否,判斷已接收到的所述信令的數(shù)據(jù)的長(zhǎng)度是否滿足預(yù)定閾值時(shí),將長(zhǎng)度滿足預(yù)定閾值的數(shù)據(jù)轉(zhuǎn)換為預(yù)定格式的直播碼流數(shù)據(jù)包;如果已接受到的該信令的數(shù)據(jù)的長(zhǎng)度小于預(yù)定閾值,繼 續(xù)接收該信令的數(shù)據(jù),直到長(zhǎng)度滿足預(yù)定閾值或信令已完整時(shí)進(jìn)行轉(zhuǎn)換;并且對(duì)于超過(guò)預(yù)定超時(shí)時(shí)間仍不完整或者長(zhǎng)度仍未達(dá)到預(yù)定閾值的數(shù)據(jù),強(qiáng)制進(jìn)行轉(zhuǎn)換;轉(zhuǎn)換后觸發(fā)內(nèi)容分發(fā)單元; 所述內(nèi)容分發(fā)單元,用于將所述直播碼流數(shù)據(jù)包主動(dòng)推送給中間節(jié)點(diǎn)服務(wù)器;或者是在有中間節(jié)點(diǎn)服務(wù)器請(qǐng)求時(shí),將所述直播碼流數(shù)據(jù)包轉(zhuǎn)發(fā)給中間節(jié)點(diǎn)服務(wù)器。
3.根據(jù)權(quán)利要求1或2所述的系統(tǒng),其特征在于,所述邊緣節(jié)點(diǎn)服務(wù)器至少包括:信令恢復(fù)單元、緩存單元以及存儲(chǔ)設(shè)備,其中, 所述信令恢復(fù)單元,用于接收到所述直播碼流數(shù)據(jù)包后,將其恢復(fù)成所述直播碼流服務(wù)器之前發(fā)送的信令形式,并判斷恢復(fù)后的數(shù)據(jù)包是否異常,如果是,則丟棄該數(shù)據(jù)包;如果否,提取其中的有效載荷發(fā)送給所述緩存單元; 所述緩存單元,用于根據(jù)先后多次獲取的所述有效載荷拼湊成完整的信令,并根據(jù)所述信令的指示,觸發(fā)所述存儲(chǔ)設(shè)備生成/刪除/更新相應(yīng)的媒體分段文件和播放列表描述文件; 所述存儲(chǔ)設(shè)備,用于存儲(chǔ)媒體分段文件和播放列表描述文件。
4.根據(jù)權(quán)利要求3所述的系統(tǒng),其特征在于,所述邊緣節(jié)點(diǎn)服務(wù)器還包括: 內(nèi)容服務(wù)單元,用于在有用戶終端請(qǐng)求直播服務(wù)時(shí),根據(jù)所述請(qǐng)求讀取相應(yīng)的媒體分段文件和播放列表描述文件并返回給所述用戶終端。
5.根據(jù)權(quán)利要求3所述的系統(tǒng),其特征在于,所述直播碼流數(shù)據(jù)包至少包含:包序號(hào)、通道標(biāo)識(shí)和數(shù)據(jù)包是否完整的狀態(tài)信息,則所述信令恢復(fù)單元具體用于,接收到所述直播碼流數(shù)據(jù)包后,首先根據(jù)其中的通道標(biāo)識(shí),進(jìn)行分組;然后根據(jù)包序號(hào),對(duì)數(shù)據(jù)包進(jìn)行排序;對(duì)于每個(gè)數(shù)據(jù)包,根據(jù)狀態(tài)信息,判斷該數(shù)據(jù)包是否異常,如果否,提取其中的有效載荷發(fā)送給所述緩存單元,否則丟棄該數(shù)據(jù)包。
6.根據(jù)權(quán)利要求1或2所述的系統(tǒng),其特征在于,所述直播編碼器發(fā)送的信令為HTTP信令或FTP信令,所述預(yù)定格式為RTP格式。
7.一種直播內(nèi)容分發(fā)方法,其特征在于,包括: 片庫(kù)服務(wù)器將直播編碼器發(fā)送的上傳/刪除/更新文件的信令轉(zhuǎn)換成預(yù)定格式的直播碼流數(shù)據(jù)包; 將轉(zhuǎn)換后的所述直播碼流數(shù)據(jù)包主動(dòng)推送或被動(dòng)發(fā)送到中間節(jié)點(diǎn)服務(wù)器,或者,由所述中間節(jié)點(diǎn)服務(wù)器從所述片庫(kù)服務(wù)器接收或主動(dòng)下拉所述直播碼流數(shù)據(jù)包;直至所述直播碼流數(shù)據(jù)主動(dòng)推送或被動(dòng)發(fā)送到邊緣節(jié)點(diǎn)服務(wù)器; 收到所述直播碼流數(shù)據(jù)包的邊緣節(jié)點(diǎn)服務(wù)器將其恢復(fù)成所述直播編碼器之前發(fā)送的信令,并按信令的指示生成/刪除/更新相應(yīng)的媒體分段文件和播放列表描述文件。
8.根據(jù)權(quán)利要求6所述的方法,其特征在于,還包括: 當(dāng)有用戶終端請(qǐng)求直播服務(wù)時(shí),所述邊緣節(jié)點(diǎn)服務(wù)器根據(jù)所述請(qǐng)求讀取相應(yīng)的媒體分段文件和播放列表描述文件并返回給所述用戶終端。
9.根據(jù)權(quán)利要求7或8所述的方法,其特征在于,將信令轉(zhuǎn)換成預(yù)定格式的直播碼流的步驟具體包括: 所述片庫(kù)服務(wù)器接收到直播編碼器發(fā)來(lái)的上傳/刪除/更新文件的信令后,判斷所述信令是否完整,如果是,轉(zhuǎn)換為預(yù)定格式的直播碼流數(shù)據(jù)包;如果否,判斷已接收到的所述信令的數(shù)據(jù)的長(zhǎng)度是否滿足預(yù)定閾值,將長(zhǎng)度滿足預(yù)定閾值的數(shù)據(jù)轉(zhuǎn)換為預(yù)定格式的直播碼流數(shù)據(jù)包;如果已接受到的該信令的數(shù)據(jù)的長(zhǎng)度小于預(yù)定閾值,繼續(xù)接收該信令的數(shù)據(jù),直到長(zhǎng)度滿足預(yù)定閾值或信令已完整時(shí)進(jìn)行轉(zhuǎn)換。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,還包括: 對(duì)于超過(guò)預(yù)定超時(shí)時(shí)間仍不完整或者長(zhǎng)度仍未達(dá)到預(yù)定閾值的數(shù)據(jù),強(qiáng)制進(jìn)行轉(zhuǎn)換。
11.根據(jù)權(quán)利要求7或8所述的方法,其特征在于,所述直播碼流數(shù)據(jù)包至少包含:包序號(hào)、通道標(biāo)識(shí)和數(shù)據(jù)包是否完整的狀態(tài)信息,則恢復(fù)成直播編碼器之前發(fā)送的信令的步驟具體包括: 邊緣節(jié)點(diǎn)服務(wù)器接收到所述直播碼流數(shù)據(jù)包后,首先根據(jù)其中的通道標(biāo)識(shí),進(jìn)行分組;然后根據(jù)包序號(hào),對(duì)數(shù)據(jù)包進(jìn)行排序;對(duì)于每個(gè)數(shù)據(jù)包,根據(jù)狀態(tài)信息,判斷該數(shù)據(jù)包是否異常,如果否, 提取其中的有效載荷,將其恢復(fù)成直播碼流服務(wù)器之前發(fā)送的信令形式,否則丟棄該數(shù)據(jù)包。
【文檔編號(hào)】H04N21/236GK103634610SQ201210305430
【公開日】2014年3月12日 申請(qǐng)日期:2012年8月24日 優(yōu)先權(quán)日:2012年8月24日
【發(fā)明者】王芳, 黃德光 申請(qǐng)人:中興通訊股份有限公司