專利名稱:一種流媒體業(yè)務(wù)的實(shí)現(xiàn)方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及流媒體業(yè)務(wù)技術(shù)領(lǐng)域,更具體地,涉及一種流媒體業(yè)務(wù)的實(shí)現(xiàn)方法及 系統(tǒng)。
背景技術(shù):
傳統(tǒng)的流媒體業(yè)務(wù)一般都是通過RTSP (Real Time Streaming Protocol,實(shí)時(shí)流 傳輸協(xié)議)/RTP(Real-time Transport Protocol,實(shí)時(shí)傳輸協(xié)議)的方式來實(shí)現(xiàn),可以提 供比較好的實(shí)時(shí)性體驗(yàn)。但是由于RTSP/RTP方式固有的復(fù)雜性,以及在穿越NAT (Network Address Translation,網(wǎng)絡(luò)地址轉(zhuǎn)換)/防火墻時(shí)存在的問題,近兩年又發(fā)展出通過 HTTP (Hyper Text TransferProtocol,超文本傳輸協(xié)議)方式來提供流媒體服務(wù),即HTTP Streaming(流)業(yè)務(wù)。由于HTTP協(xié)議從本質(zhì)上來說,屬于文件傳輸協(xié)議,并不適合實(shí)時(shí)的流媒體傳輸。 所以HTTP Streaming業(yè)務(wù)中,將節(jié)目?jī)?nèi)容分成很多的小片段,例如10秒鐘一個(gè)片段。然后 通過一個(gè)播放列表描述文件,將這些片段組織在一起。播放列表文件中,描述了這些片段 的URL (Uniform/Universal ResourceLocator,統(tǒng)一資源定位符)、時(shí)長(zhǎng)、屬性(例如不同碼 率)、時(shí)間關(guān)系等??蛻舳它c(diǎn)播節(jié)目?jī)?nèi)容時(shí),首先下載這個(gè)播放列表文件,然后根據(jù)列表文件 中的描述,下載需要的媒體片段,然后在本地播放。由于HTTP Streaming業(yè)務(wù)中,采用的媒體片段時(shí)長(zhǎng)都很短,如果每個(gè)媒體片段作 為一個(gè)單獨(dú)的文件存在的話,那么對(duì)于1個(gè)小時(shí)的節(jié)目,其媒體片段至少就有360個(gè)文件。 如果再考慮多碼率的情況,那么這個(gè)文件數(shù)目就更多了。這樣巨大的文件數(shù)目對(duì)于內(nèi)容管 理來說,會(huì)造成很大的問題?;谏鲜鲈颍壳昂芏鄳?yīng)用中都利用了 IS0(IS014496_12標(biāo)準(zhǔn)定義的文件格 式)文件格式中的movie fragment (電影分段存儲(chǔ)單元)結(jié)構(gòu)(IS014496-12標(biāo)準(zhǔn)中定義的 結(jié)構(gòu),包含moofbox和相應(yīng)的mdat box)來實(shí)現(xiàn)虛擬分段的效果。即一個(gè)movie fragment 就對(duì)應(yīng)一個(gè)媒體分段,客戶端通過指明字節(jié)范圍的方式,下載movie fragment,然后在本地 播放。例如3GPP(3rd generation partnership pro ject,第三代合作伙伴計(jì)劃)R9中就是 采用的這種方式。由于ISO文件本身也可以同時(shí)用于RTSP/RTP方式的流媒體業(yè)務(wù),一般是通過在 ISO文件中,對(duì)相應(yīng)的媒體軌增加RTP hint (提示)軌的方式,然后RTSP/RTP流服務(wù)器通過 讀取RTP hint軌的信息,將媒體軌數(shù)據(jù)轉(zhuǎn)換成RTP包發(fā)送給客戶端。也就是說,只要在支 持movie fragment的ISO文件中,再增加RTP hint軌的相關(guān)信息,那么同一個(gè)文件,將可 以既用于HTTPStreaming業(yè)務(wù),也可以用于RTSP/RTP流媒體業(yè)務(wù)。但是,現(xiàn)有技術(shù)中存在如下問題由于RTP hint軌的信息和數(shù)據(jù)也包含在movie fragment中,所以對(duì)于HTTP Streaming的客戶端來說,下載moviefragment時(shí),必然會(huì)將這 些數(shù)據(jù)也一并下載下來。而這些數(shù)據(jù)對(duì)于本地播放來說,是沒有任何用處的,因而占用了帶 寬和本地存儲(chǔ)空間,造成了資源的浪費(fèi)。
發(fā)明內(nèi)容
本發(fā)明解決的技術(shù)問題是提供一種流媒體業(yè)務(wù)的實(shí)現(xiàn)方法及系統(tǒng),能夠減少內(nèi)容 存儲(chǔ)的空間占用和內(nèi)容管理的復(fù)雜度。為解決上述技術(shù)問題,本發(fā)明提供了一種流媒體業(yè)務(wù)的實(shí)現(xiàn)方法,所述方法包 括獲取媒體碼流,將其分段存儲(chǔ)為ISO文件,并增加超文本傳輸協(xié)議流(HTTP Streaming)提不(hint)軌;其中,所述HTTP streaming hint軌中包含提取HTTP streaming業(yè)務(wù)所需要的媒 體分段的相關(guān)參數(shù)。進(jìn)一步地,所述相關(guān)參數(shù)包括所述HTTP streaming hint軌的樣本(sample)數(shù) 據(jù);所述HTTP streaming hint軌的sample數(shù)據(jù)包含從媒體分段中提取構(gòu)造出符合 HTTP streaming傳輸格式的數(shù)據(jù)的指示信息。進(jìn)一步地,所述指示信息至少包括引用媒體軌數(shù)據(jù)的位置及長(zhǎng)度、需要構(gòu)造的數(shù) 據(jù)及長(zhǎng)度,和填充數(shù)據(jù)。進(jìn)一步地,HTTP streaming服務(wù)器在讀取所述ISO文件時(shí),通過讀取所述HTTP streaming hint軌的sample數(shù)據(jù)包含的所述指示信息,提取相應(yīng)的媒體軌數(shù)據(jù),并將提取 的媒體軌數(shù)據(jù)組裝成符合HTTP streaming傳輸格式的媒體分段,返回給客戶端。進(jìn)一步地,存儲(chǔ)所述ISO文件后,所述方法還包括生成與所述ISO文件相匹配的播放列表描述文件;所述播放列表描述文件包含每個(gè)媒體分段的統(tǒng)一資源標(biāo)志符(URL),所述URL中 包含IS0文件名和媒體分段標(biāo)識(shí)。進(jìn)一步地,所述HTTP streaming服務(wù)器根據(jù)收到的客戶端發(fā)送的HTTPURL,返回 相應(yīng)的播放列表描述文件;所述客戶端根據(jù)所述播放列表描述文件,找到相應(yīng)時(shí)間的媒體分段的URL,向所述 HTTP streaming服務(wù)器發(fā)起服務(wù)請(qǐng)求;所述HTTP streaming服務(wù)器根據(jù)收到的所述服務(wù)請(qǐng)求中的媒體分段的URL,找到 HTTP Streaming hint軌,進(jìn)行媒體數(shù)據(jù)的提取和組裝后,返回給所述客戶端。本發(fā)明還提供了一種流媒體業(yè)務(wù)的實(shí)現(xiàn)系統(tǒng),包括內(nèi)容制作子系統(tǒng),所述內(nèi)容制 作子系統(tǒng)進(jìn)一步包括媒體碼流獲取裝置,用于獲取媒體碼流;文件存儲(chǔ)裝置,用于將所述媒體碼流獲取裝置獲取的媒體碼流分段存儲(chǔ)為ISO文 件;提示軌添加裝置,用于對(duì)所述ISO文件增加HTTP streaming hint軌,其中所述 HTTP streaming hint軌中包含提取HTTP streaming業(yè)務(wù)所需要的媒體分段的相關(guān)參數(shù)。進(jìn)一步地,所述提示軌添加裝置進(jìn)一步用于,在所述HTTP streaming hint軌的 sample數(shù)據(jù)中,包含從媒體分段中提取構(gòu)造出符合HTTP streaming傳輸格式的數(shù)據(jù)的指 /J^fn 息。
進(jìn)一步地,所述系統(tǒng)還包括HTTP streaming服務(wù)器和客戶端,通過讀取所述HTTP streaming hint軌的sample數(shù)據(jù)包含的所述指示信息,提取 相應(yīng)的媒體軌數(shù)據(jù),并將提取的媒體軌數(shù)據(jù)組裝成符合HTTPstreaming傳輸格式的媒體分 段,返回給客戶端。進(jìn)一步地,所述內(nèi)容制作子系統(tǒng)還包括描述文件生成裝置,其中所述描述文件生成裝置用于,生成與所述ISO文件相匹配的播放列表描述文件, 所述播放列表描述文件包含每個(gè)媒體分段的URL,所述URL中包含IS0文件名和媒體分段 標(biāo)識(shí);所述HTTP streaming服務(wù)器還用于,收到所述客戶端發(fā)送的HTTP URL時(shí),返回相 應(yīng)的播放列表描述文件;收到所述客戶端發(fā)送的媒體分段的URL時(shí),找到HTTP Streaming hint軌,提取媒體數(shù)據(jù)并組裝成相應(yīng)的媒體分段后,返回給所述客戶端;所述客戶端用于,根據(jù)所述播放列表描述文件,找到相應(yīng)時(shí)間的媒體分段的URL, 向所述HTTP streaming服務(wù)器請(qǐng)求服務(wù),并接收所述HTTPstreaming服務(wù)器返回的媒體分 段。根據(jù)本發(fā)明提供的上述的方法及系統(tǒng),利用同一個(gè)ISO文件,同時(shí)給HTTP Streaming業(yè)務(wù)和RTSP/RTP流媒體業(yè)務(wù)提供服務(wù),以減少內(nèi)容存儲(chǔ)的空間占用和內(nèi)容管理 的復(fù)雜度;同時(shí)又避免HTTP Streaming客戶端下載movie fragment時(shí),將不必要的數(shù)據(jù)信 息一并下載,占用帶寬和本地存儲(chǔ)空間的問題。采用本發(fā)明技術(shù)方案,可以幫助運(yùn)營(yíng)商節(jié)約存儲(chǔ)空間,降低內(nèi)容管理的復(fù)雜度,節(jié) 約運(yùn)營(yíng)成本;而且,對(duì)于用戶來說,可以減少內(nèi)容下載的數(shù)據(jù)量,更有效的利用帶寬,帶來更 好的用戶體驗(yàn)。同時(shí),對(duì)于服務(wù)器側(cè)來說,也可以更為方便、高效地從媒體數(shù)據(jù)的存儲(chǔ)文件 中,提取需要的數(shù)據(jù),轉(zhuǎn)換成HTTP Streaming標(biāo)準(zhǔn)要求的傳輸文件格式。
圖1為現(xiàn)有ISO文件的結(jié)構(gòu)示意圖;圖2為現(xiàn)有ISO文件中trak box結(jié)構(gòu)的示意圖;圖3為現(xiàn)有ISO文件中moof box結(jié)構(gòu)的示意圖;圖4為本發(fā)明應(yīng)用示例的流媒體實(shí)現(xiàn)方法的應(yīng)用場(chǎng)景示意圖。
具體實(shí)施例方式本發(fā)明的基本思想在于,對(duì)支持movie fragment的ISO文件的文件格式進(jìn)行修 改,增加一種HTTP Streaming類型的hint軌,其sample (樣本)中的數(shù)據(jù)用于描述如何從 movie fragment中提取出符合客戶端需求格式的數(shù)據(jù),并利用修改后的ISO文件格式,對(duì) 媒體數(shù)據(jù)進(jìn)行存儲(chǔ)/轉(zhuǎn)換。這樣,利用同一個(gè)ISO文件,同時(shí)給HTTP Streaming業(yè)務(wù)和RTSP/RTP流媒體 業(yè)務(wù)提供服務(wù),可以減少內(nèi)容存儲(chǔ)的空間占用和內(nèi)容管理的復(fù)雜度;同時(shí)又避免HTTP Streaming客戶端下載movie fragment時(shí),將不必要的數(shù)據(jù)信息一并下載,占用帶寬和本 地存儲(chǔ)空間的問題?;谏鲜鏊枷?,本發(fā)明提供一種流媒體業(yè)務(wù)的實(shí)現(xiàn)方法,具體采用如下技術(shù)方
6案獲取媒體碼流,將其分段存儲(chǔ)為ISO文件,并增加擴(kuò)展的超文本傳輸協(xié)議流(HTTP Streaing)提示(hint)軌;其中,所述HTTP streaming hint軌中包含提取HTTP streaming業(yè)務(wù)所需要的媒 體分段的相關(guān)參數(shù)。進(jìn)一步地,所述HTTP streaming hint軌的樣本(sample)參數(shù),用于描述從媒體 分段中提取構(gòu)造出符合HTTP streaming傳輸格式的數(shù)據(jù)。進(jìn)一步地,所述媒體碼流的格式可以是傳送流(MPEG-2TS)碼流或分離的媒體數(shù) 據(jù)(例如音視頻數(shù)據(jù)分別獨(dú)立封裝,在ISO文件中使用不同的媒體軌存儲(chǔ),或者通過不同的 RTP通道傳輸?shù)?。對(duì)應(yīng)不同的碼流格式,存儲(chǔ)后的ISO文件媒體軌中的samp 1 e遵循相應(yīng)的標(biāo)準(zhǔn)。對(duì)于MPEG-2TS碼流,HTTP Streaming hint軌的sample中描述的信息,可以是將 相應(yīng)媒體軌中的TS包提取出來,構(gòu)成一個(gè)小的TS片段;對(duì)于媒體數(shù)據(jù)分離的情況,HTTP Streaming hint軌的sample中描述的信息, 主要是過濾掉其他不必要的信息(例如RTP hint軌的信息),提供一個(gè)輕量級(jí)的movie fragmentο進(jìn)一步地,存儲(chǔ)所述ISO文件后,所述方法還包括生成與所述ISO文件相匹配的 播放列表描述文件;所述播放列表描述文件包含每個(gè)媒體分段的URL,所述URL的格式為IS0文件名 +媒體分段ID。進(jìn)一步地,所述HTTP streaming服務(wù)器根據(jù)收到的客戶端發(fā)送的HTTPURL,返回 相應(yīng)的播放列表描述文件;所述客戶端根據(jù)所述播放列表描述文件,找到相應(yīng)時(shí)間的媒體分段URL,向HTTP streaming服務(wù)器請(qǐng)求服務(wù);所述HTTP streaming服務(wù)器根據(jù)收到的所述媒體分段URL,找到對(duì)應(yīng)的媒體分 段,根據(jù)HTTP Streaming hint軌的信息,提取媒體軌數(shù)據(jù),構(gòu)造成符合要求的傳輸格式,返 回給所述客戶端。為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖及實(shí)施例,對(duì) 本發(fā)明進(jìn)行進(jìn)一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實(shí)施例僅僅用以解釋本發(fā)明,并 不用于限定本發(fā)明。以媒體本發(fā)明實(shí)施例提供的流媒體業(yè)務(wù)的實(shí)現(xiàn)方法,具體包括如下步驟步驟1.定義 HTTP Streaming 類型的 hint 軌;HTTP Streaming類型的hint軌,其sample中的數(shù)據(jù)用于描述如何從movie fragment中提取出符合客戶端需求格式的數(shù)據(jù),例如對(duì)于視頻和音頻獨(dú)立的媒體碼流, 則去除RTP hint軌數(shù)據(jù)后的movie fragment ;或者如果媒體軌中存儲(chǔ)的是TS(MPEG_2 Transport Stream,傳輸流)碼流,也可以是提取出來的連續(xù)的TS包;步驟2.對(duì)媒體碼流進(jìn)行存儲(chǔ)其中對(duì)于媒體數(shù)據(jù),按ISO規(guī)范的定義,將sample的數(shù)據(jù)和描述信息,存于movie fragment中,并添加RTP hint軌,以及擴(kuò)展的HTTP Streaming hint軌。相關(guān)軌的基本信息,例如軌的類型等,按ISO規(guī)范記錄在moovbox中。movie fragment的moof box中包含 軌的sample信息,描述sample的位置、大小等;mdat box中包含軌的實(shí)際的sample數(shù)據(jù)。步驟3.生成播放列表描述文件根據(jù)步驟2中生成的ISO文件,生成與之相匹配的播放列表描述文件,其中對(duì)于每 個(gè)movie fragment的描述信息中,需要包含ISO文件的URI和fragment的標(biāo)識(shí);對(duì)于HTTP Streaming業(yè)務(wù)來說,也需要有一個(gè)播放列表描述文件,其內(nèi)容是組成 該節(jié)目的所有媒體片段的URL。所有的URL是節(jié)目在系統(tǒng)中發(fā)布的時(shí)候確定的。按照現(xiàn)有技術(shù),播放列表描述文件的URL通過EPG/門戶等展現(xiàn)給用戶,用戶如果 需要看該節(jié)目,則通過這個(gè)URL,先下載播放列表描述文件。然后解析其中的內(nèi)容,獲取各個(gè) 片段的URL。對(duì)于服務(wù)器來說,則根據(jù)用戶請(qǐng)求時(shí),所發(fā)的HTTP消息中的URL,來確定節(jié)目 的文件名(含路徑),以及用戶需要觀看的片段ID。服務(wù)器確定文件后,通過解析文件的內(nèi) 容,可以定位到與片段ID匹配的movie fragment結(jié)構(gòu)。此流程完全遵守IS014496-12的 定義。步驟4. HTTP Streaming服務(wù)器向客戶端提供媒體分段HTTP Streaming服務(wù)器在給客戶端提供媒體分段時(shí),根據(jù)步驟1中的擴(kuò)展,從相 應(yīng)的movie fragment中提取有效數(shù)據(jù),構(gòu)造成符合要求的媒體分段,提供給客戶端。圖1描述了標(biāo)準(zhǔn)的帶有movie fragment結(jié)構(gòu)的ISO文件格式。moov box結(jié)構(gòu)100 中有所有軌的基本描述信息,例如視軌101、音軌102、視音軌各自的RTP hint軌103和104寸。如圖2所示,上述每個(gè)軌都通過一個(gè)trak box結(jié)構(gòu)來描述,其中包含了軌ID、軌類 型、sample描述信息等。參考圖2,軌ID在tkhd box中描述;軌類型包括視頻、音頻、hint 等,在hdlr中的type中描述;sample描述信息在stbl box的子box中描述,例如stts box 等,此外還有一些其他標(biāo)準(zhǔn)中定義的用于描述sample信息的box,在圖2中沒有畫出。至于 相應(yīng)軌數(shù)據(jù)的編碼格式等信息,是在stsd box中描述。但對(duì)于支持movie fragment擴(kuò)展的 ISO文件,根據(jù)ISO標(biāo)準(zhǔn)規(guī)范,其trak box中不包含sample數(shù)據(jù)的信息(即stts box等結(jié) 構(gòu)中的 entry count 為零)。moov box 后面是多個(gè) movie fragment,每個(gè) movie fragment 包括一個(gè)moof box結(jié)構(gòu)105禾口一個(gè)mdat box結(jié)構(gòu)106。mdatbox中包含各個(gè)軌的sample 數(shù)據(jù)。其中moof box的結(jié)構(gòu)如圖3所示,包含各個(gè)軌的sample信息和隨機(jī)訪問點(diǎn)信息, 每個(gè)軌通過一個(gè)trafbox結(jié)構(gòu)描述。其中,sample信息在trim box中,隨機(jī)訪問點(diǎn)信息在 sdtp box 中 ο定義一種類型的hint軌,需要定義IS014496-12標(biāo)準(zhǔn)中,trak box及相應(yīng)的 子box(參見圖2)中相應(yīng)的數(shù)據(jù)結(jié)構(gòu)及相關(guān)取值。其中大部分box中的結(jié)構(gòu)和取值, IS014496-12標(biāo)準(zhǔn)中已經(jīng)定義好了,一般沒有特殊需求的話,是不需要修改的。本發(fā)明實(shí)施例中,定義一種新的類型的hint軌,具體來說,主要涉及如下內(nèi)容l.hdlr box中handler type字段的取值,該字段是IS014496-12標(biāo)準(zhǔn)中已經(jīng)定義 了的,用于說明這個(gè)軌的數(shù)據(jù)類型,即應(yīng)該由什么樣的處理模塊來處理這個(gè)軌的數(shù)據(jù)。本發(fā) 明中,這個(gè)字段的值是使用IS014496-12標(biāo)準(zhǔn)中定義的hint軌的類型值。2. stsd box,也是IS014496-12標(biāo)準(zhǔn)中定義的,用于描述編碼類型的詳細(xì)信息。根
8據(jù)hdlr box中的handler type值的不同,其內(nèi)部包含的是不同類型的Sample Entry結(jié)構(gòu)。 本發(fā)明的具體實(shí)現(xiàn)中,為http軌定義了新的SampleEntry結(jié)構(gòu),即hsfr box。3. IS014496-12 標(biāo)準(zhǔn)中,定義了幾種類型的 Media Information HeaderBox,其中 當(dāng) hdlr box 中的 handler type 值為,hint,時(shí),應(yīng)該使用 hmhd box。在 IS014496-12 標(biāo)準(zhǔn) 中,hmhd box的結(jié)構(gòu)中定義了協(xié)議數(shù)據(jù)單元(PDU)的最大值和平均值等參數(shù)。本發(fā)明的具 體實(shí)現(xiàn)中,定義對(duì)于http軌,這個(gè)PDU的值對(duì)應(yīng)于媒體分段的大小。4.對(duì)于一種新的編碼類型(即本文定義的新的http軌對(duì)應(yīng)的數(shù)據(jù)),還需要定 義相應(yīng)的數(shù)據(jù)的sample結(jié)構(gòu)。在本發(fā)明的具體實(shí)現(xiàn)中,為http軌定義的sample結(jié)構(gòu), 就是HTTPStreamingSample,其中包含了一系列不同類型的constructor (構(gòu)造器)。通過 依次讀取這些constructor的信息,按其指示操作,就可以得到構(gòu)造后的,符合相應(yīng)HTTP Streaming規(guī)范的媒體分段。以下將針對(duì)本發(fā)明實(shí)施例形成的HTTP Streaming hint軌進(jìn)行詳細(xì)介紹。本發(fā)明 實(shí)施例中,定義的HTTP Streaming hint軌具體描述如下1.對(duì)SampleEntry進(jìn)行擴(kuò)展,在ISO已經(jīng)定義的SampleEntry類型上,再增加一個(gè) 類型HttpStreamingHintSampleEntry,其中可以包含movie fragment的缺省時(shí)長(zhǎng)等信息, 例如class HttpStreamingHintSampleEntry()extends SampleEntry( 'hsfr ‘) {uint (32) avg_duration ;// 媒體分段的平均時(shí)長(zhǎng)uint (32)max_duration ;// 媒體分段的最大時(shí)長(zhǎng)string mime_type ;// 媒體分段的 MIME typestring specification ;// 遵循的 HTTP Streaming 規(guī)范,例如 3GPP 或 iPhone 或
其他規(guī)范}2.對(duì)于HTTP Streaming hint軌,其moov box中的描述信息包括hdlrbox中的 handler —type 為,hint' ;hmhd box 中的 maxPDUsize 禾口 avgPDUsize 為 movie fragment 的 大小,缺省值為無(wú)效值0 ;stsd box中的SampleEntry為hsfr box ;3.對(duì)于HTTP Streaming hint 軌,其mdat box 中的 sample—般來說只有一個(gè)(多 個(gè)也是允許的,但可能構(gòu)造上會(huì)更復(fù)雜一些),用于描述如何從當(dāng)前的movie fragment中 提取構(gòu)造出符合HTTP Streaming客戶端格式需求的數(shù)據(jù),其格式如下aligned(8)class HTTPStreamingSample{unsigned int (32) data_length ;// 構(gòu)造后的片段長(zhǎng)度unsigned int (32) data_duration ;//構(gòu)造后的片段時(shí)長(zhǎng)unsigned int (16) entrycount !//constructor 的個(gè)數(shù)unsigned int (16) reserved ;// ^ψ^Ιdataentry constructors[entrycount];byte extradata[];}其中constructor包含多種類型,為了方便解析,定義每個(gè)constructor的大小為 16字節(jié),格式如下
aligned(8)class HTTPStreamingConstructor(type){unsigned int (8) constructor_type = type !//constructor 的類型}H類型type值為1的constructor,主要用于構(gòu)造一些數(shù)據(jù)aligned(8)class HTTPStreaminglmmediateConstructorextends HTTPStreamingConstructor(1){unsigned int (8) count ;//需要構(gòu)造的數(shù)據(jù)長(zhǎng)度,不超過14字節(jié);unsigned int (8) data [count] ;//需要構(gòu)造的數(shù)據(jù)unsigned int (8)pad[14_count] ;//多余的填充數(shù)據(jù)}//類型type值為2的constructor,主要用于引用一些movie fragment中已有 的數(shù)據(jù),例如媒體軌中的sample數(shù)據(jù)等aligned(8)class HTTPStreamingSampIeConstructorextends HTTPStreamingConstructor(2){unsigned int (8) [3]reserved ;// ^ψ^Ιunsigned int (32) length ;//需要引用的數(shù)據(jù)長(zhǎng)度unsigned int (32) offset ;// 需要引用的數(shù)據(jù)在 movie fragment 中的位置}4. X^tT HTTP Streaming hint 車九,胃 moof box 中的 trun box sample 其sample_duration字段的值即為該fragment對(duì)應(yīng)的分段時(shí)長(zhǎng)。以下將描述采用本發(fā)明中所述的修改后的ISO文件格式,對(duì)媒體數(shù)據(jù)進(jìn)行存儲(chǔ)/ 轉(zhuǎn)換的處理流程。其中movie fragment對(duì)應(yīng)的數(shù)據(jù)時(shí)長(zhǎng)可以根據(jù)應(yīng)用需要設(shè)置。該功能 一般是由流媒體系統(tǒng)中的內(nèi)容制作子系統(tǒng)來完成,即圖4中的401組件。該處理流程包括 以下步驟步驟101.獲取媒體碼流(音視頻數(shù)據(jù));其中,獲取的媒體碼流可以是直播頻道的碼流,也可以是從其他格式的媒體文件 中讀取的碼流;步驟102.按照ISO規(guī)范生成ISO文件,其中每個(gè)movie fragment包含相應(yīng)時(shí)長(zhǎng) 的數(shù)據(jù),包含媒體軌和相應(yīng)的RTP hint軌;其中,為便于后續(xù)HTTP Streaming流化的處理,這里最好是媒體軌和RTP hint軌 的數(shù)據(jù)分別集中存儲(chǔ);步驟103.添加HTTP Streaming hint軌,其格式可按照本發(fā)明前述實(shí)施例中描述 的格式;步驟104.生成播放列表描述文件,其中包含每個(gè)媒體分段的URL,可以使 用文件名+fragmentID (艮口 mfhd box中的sequence_number)的方式來標(biāo)明,例如 http//<ip:port>/path/filename/fragmentID = 1。以提供給客戶端的是只包含媒體軌數(shù)據(jù)的movie fragment為例,那么HTTP
10Streaming hint 軌的 sample 需要包含如下的 constructor 1.構(gòu)造新的 moofbox a)因?yàn)樾碌膍ovie fragment的moof長(zhǎng)度與文件中的不同,所以需要一個(gè)HTTPSt reaminglmmediateConstructor,用于構(gòu)造新的moof box頭。新的moofbox的長(zhǎng)度應(yīng)該為 moofbox頭(8B) +mfhd box長(zhǎng)度+媒體軌個(gè)數(shù)X trafbox長(zhǎng)度;b)mfhd box可以直接使用文件中的,所以需要一個(gè) HTTPStreamingSampleConstructor,用于弓I用原 mfhd box ;c)媒體軌對(duì)應(yīng)的 traf box,基本上可以使用 HTTPStreamingSampleConstructor 直接引用,其中,媒體軌的sample數(shù)據(jù),如音視頻數(shù)據(jù)可以直接引用,而另外一些box結(jié)構(gòu) 中的數(shù)據(jù)也可以被引用。但是tfhd box的base_data_0ffset字段的值如果有效,則可能 需要通過 HTTPStreaminglmmediateConstructor 修改;2.構(gòu)造新的 mdat box a)因?yàn)樾碌膍dat box的長(zhǎng)度與文件中的不同,所以需要一個(gè)HTTPStreamingImme diateConstructor,用于構(gòu)新白勺 mdat box 頭;b)通過 HTTPStreamingSampleConstructor 弓I 用原 mdat box 中媒體軌對(duì)應(yīng)的 sample 部分。此外,本發(fā)明實(shí)施例還提供了一種流媒體業(yè)務(wù)的實(shí)現(xiàn)系統(tǒng),包括內(nèi)容制作子系統(tǒng), 所述內(nèi)容制作子系統(tǒng)進(jìn)一步包括媒體碼流獲取裝置,用于獲取媒體碼流;文件存儲(chǔ)裝置,用于將所述媒體碼流獲取裝置獲取的媒體碼流分段存儲(chǔ)為ISO文 件;提示軌添加裝置,用于對(duì)所述ISO文件增加HTTP streaming hint軌,其中所述 HTTP streaming hint軌中包含提取HTTP streaming業(yè)務(wù)所需要的媒體分段的相關(guān)參數(shù)。進(jìn)一步地,所述提示軌添加裝置進(jìn)一步用于,在所述HTTP streaming hint軌的 sample數(shù)據(jù)中,包含從媒體分段中提取構(gòu)造出符合HTTP streaming傳輸格式的數(shù)據(jù)的指 /J^fn 息。進(jìn)一步地,所述系統(tǒng)還包括HTTP streaming服務(wù)器和客戶端,通過讀取所述HTTP streaming hint軌的sample數(shù)據(jù)包含的所述指示信息,提取 相應(yīng)的媒體軌數(shù)據(jù),并將提取的媒體軌數(shù)據(jù)組裝成符合HTTPstreaming傳輸格式的媒體分 段,返回給客戶端。進(jìn)一步地,所述內(nèi)容制作子系統(tǒng)還包括描述文件生成裝置,其中所述描述文件生成裝置用于,生成與所述ISO文件相匹配的播放列表描述文件, 所述播放列表描述文件包含每個(gè)媒體分段的URL,所述URL中包含IS0文件名和媒體分段 標(biāo)識(shí);所述HTTP streaming服務(wù)器還用于,收到所述客戶端發(fā)送的HTTP URL時(shí),返回相 應(yīng)的播放列表描述文件;收到所述客戶端發(fā)送的媒體分段的URL時(shí),找到HTTP Streaming hint軌,提取媒體數(shù)據(jù)并組裝成相應(yīng)的媒體分段后,返回給所述客戶端;所述客戶端用于,根據(jù)所述播放列表描述文件,找到相應(yīng)時(shí)間的媒體分段的URL, 向所述HTTP streaming服務(wù)器請(qǐng)求服務(wù),并接收所述HTTPstreaming服務(wù)器返回的媒體分
11段。以下將結(jié)合本發(fā)明的具體應(yīng)用示例對(duì)采用本發(fā)明中所述的修改后的ISO文件格 式,為不同類型的客戶端提供流媒體服務(wù)的處理流程進(jìn)行描述。參見圖4,本應(yīng)用示例的流 媒體業(yè)務(wù)的實(shí)現(xiàn)主要涉及如下組件內(nèi)容制作子系統(tǒng)401,存儲(chǔ)設(shè)備402,RTSP服務(wù)器403, HTTP服務(wù)器404,EPG(ElectronicProgram Guide,電子節(jié)目指南)/門戶405和客戶端406。如圖4所示,本應(yīng)用示例的流程具體描述如下步驟201.對(duì)于同一個(gè)節(jié)目?jī)?nèi)容,EPG/門戶系統(tǒng)405需要給不同類型的客戶端406 返回不同的URL,例如對(duì)RTSP客戶端返回對(duì)應(yīng)文件的RTSPURL,對(duì)于HTTP Streaming客戶 端,返回對(duì)應(yīng)的HTTP URL(—般是對(duì)應(yīng)一個(gè)播放列表描述文件);步驟202.客戶端406得到相應(yīng)的URL后,即向相應(yīng)類型的服務(wù)器發(fā)起請(qǐng)求;步驟203. RTSP服務(wù)器403收到客戶端406的RTSP請(qǐng)求后,根據(jù)RTPhint軌的指 示,構(gòu)造RTP數(shù)據(jù)包發(fā)送給客戶端;步驟204. HTTP Streaming服務(wù)器 404 收到 HTTP Streaming 客戶端 406 的請(qǐng)求后, 首先根據(jù)URL返回相應(yīng)的播放列表描述文件;步驟205.客戶端406解析描述文件,找到初始化信息(例如可以是ISO文件的 moov box部分)的URL,向服務(wù)器請(qǐng)求服務(wù);步驟206.服務(wù)器404將相關(guān)初始化信息的數(shù)據(jù)提供給客戶端406 ;步驟207.客戶端406根據(jù)描述文件,找到相應(yīng)時(shí)間的媒體分段URL,向服務(wù)器404 請(qǐng)求服務(wù);步驟208.服務(wù)器404收到媒體分段的URL后,根據(jù)文件名和fragmentID,找到對(duì) 應(yīng)的movie fragment,根據(jù)HTTP Streaming hint軌的指示,構(gòu)造媒體分段返回給客戶端;步驟209.客戶端406下載媒體分段后,解析播放,同時(shí)繼續(xù)請(qǐng)求后續(xù)的媒體分段。進(jìn)一步地,上述步驟208具體可分為如下步驟1.服務(wù)器收到終端的請(qǐng)求后,定位到具體的文件和movie fragment ;2.月艮務(wù)器從 moov box 中,找至Ij hdlr box 的 handler type 為“hint,,,且 stsd box 的 SampleEntry 中為 hsfr box 的軌(trak box),從而得至Ij http hint 軌的軌號(hào)(trackID, 在 tkhd box 中);3.月艮務(wù)器從 movie fragment 的 moof box 中,通過 trackID,找至Ij http hint 軌的 trafbox ;4.服務(wù)器從traf box的trun box中解出http hint軌的sample數(shù)據(jù)在文件中 的位置;5.服務(wù)器讀取http hint軌的sample數(shù)據(jù),按照其中一系列constructor的信 息,進(jìn)行媒體數(shù)據(jù)的提取和組裝,得到http streaming終端需要的媒體片段,發(fā)送給終端。以上僅為本發(fā)明的優(yōu)選實(shí)施案例而已,并不用于限制本發(fā)明,本發(fā)明還可有其他 多種實(shí)施例,在不背離本發(fā)明精神及其實(shí)質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員可根據(jù)本發(fā) 明做出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求 的保護(hù)范圍。本領(lǐng)域普通技術(shù)人員可以理解上述方法中的全部或部分步驟可通過程序來指令 相關(guān)硬件完成,所述程序可以存儲(chǔ)于計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,如只讀存儲(chǔ)器、磁盤或光盤
12等。可選地,上述實(shí)施例的全部或部分步驟也可以使用一個(gè)或多個(gè)集成電路來實(shí)現(xiàn)。相應(yīng) 地,上述實(shí)施例中的各模塊/單元可以采用硬件的形式實(shí)現(xiàn),也可以采用軟件功能模塊的 形式實(shí)現(xiàn)。本發(fā)明不限制于任何特定形式的硬件和軟件的結(jié)合。
權(quán)利要求
一種流媒體業(yè)務(wù)的實(shí)現(xiàn)方法,其特征在于,所述方法包括獲取媒體碼流,將其分段存儲(chǔ)為ISO文件,并增加超文本傳輸協(xié)議流(HTTP Streaming)提示(hint)軌;其中,所述HTTP streaming hint軌中包含提取HTTP streaming業(yè)務(wù)所需要的媒體分段的相關(guān)參數(shù)。
2.如權(quán)利要求1所述的方法,其特征在于,所述相關(guān)參數(shù)包括所述HTTP streaming hint軌的樣本(sample)數(shù)據(jù);所述HTTP streaming hint軌的sample數(shù)據(jù)包含從媒體分段中提取構(gòu)造出符合HTTP streaming傳輸格式的數(shù)據(jù)的指示信息。
3.如權(quán)利要求2所述的方法,其特征在于,所述指示信息至少包括引用媒體軌數(shù)據(jù)的位置及長(zhǎng)度、需要構(gòu)造的數(shù)據(jù)及長(zhǎng)度,和填 充數(shù)據(jù)。
4.如權(quán)利要求3所述的方法,其特征在于,HTTP streaming服務(wù)器在讀取所述ISO文件時(shí),通過讀取所述HTTPstreaming hint軌 的sample數(shù)據(jù)包含的所述指示信息,提取相應(yīng)的媒體軌數(shù)據(jù),并將提取的媒體軌數(shù)據(jù)組裝 成符合HTTP streaming傳輸格式的媒體分段,返回給客戶端。
5.如權(quán)利要求1、2、3或4所述的方法,其特征在于,存儲(chǔ)所述ISO文件后,所述方法還 包括生成與所述ISO文件相匹配的播放列表描述文件;所述播放列表描述文件包含每個(gè)媒體分段的統(tǒng)一資源標(biāo)志符(URL),所述URL中包含 ISO文件名和媒體分段標(biāo)識(shí)。
6.如權(quán)利要求5所述的方法,其特征在于,所述HTTP streaming服務(wù)器根據(jù)收到的客戶端發(fā)送的HTTP URL,返回相應(yīng)的播放列表 描述文件;所述客戶端根據(jù)所述播放列表描述文件,找到相應(yīng)時(shí)間的媒體分段的URL,向所述HTTP streaming服務(wù)器發(fā)起服務(wù)請(qǐng)求;所述HTTP streaming服務(wù)器根據(jù)收到的所述服務(wù)請(qǐng)求中的媒體分段的URL,找到HTTP Streaming hint軌,進(jìn)行媒體數(shù)據(jù)的提取和組裝后,返回給所述客戶端。
7.一種流媒體業(yè)務(wù)的實(shí)現(xiàn)系統(tǒng),其特征在于,包括內(nèi)容制作子系統(tǒng),所述內(nèi)容制作子系 統(tǒng)進(jìn)一步包括媒體碼流獲取裝置,用于獲取媒體碼流;文件存儲(chǔ)裝置,用于將所述媒體碼流獲取裝置獲取的媒體碼流分段存儲(chǔ)為ISO文件;提示軌添加裝置,用于對(duì)所述ISO文件增加HTTP streaming hint軌,其中所述HTTP streaming hint軌中包含提取HTTP streaming業(yè)務(wù)所需要的媒體分段的相關(guān)參數(shù)。
8.如權(quán)利要求7所述的系統(tǒng),其特征在于,所述提示軌添加裝置進(jìn)一步用于,在所述HTTP streaming hint軌的sample數(shù)據(jù)中, 包含從媒體分段中提取構(gòu)造出符合HTTP streaming傳輸格式的數(shù)據(jù)的指示信息。
9.如權(quán)利要求7或8所述的系統(tǒng),其特征在于,所述系統(tǒng)還包括HTTPstreaming服務(wù)器 和客戶端,通過讀取所述HTTP streaming hint軌的sample數(shù)據(jù)包含的所述指示信息,提取相應(yīng) 的媒體軌數(shù)據(jù),并將提取的媒體軌數(shù)據(jù)組裝成符合HTTPstreaming傳輸格式的媒體分段, 返回給客戶端。
10.如權(quán)利要求9所述的系統(tǒng),其特征在于,所述內(nèi)容制作子系統(tǒng)還包括描述文件生成裝置,其中所述描述文件生成裝置用于,生成與所述ISO文件相匹配的播放列表描述文件,所述 播放列表描述文件包含每個(gè)媒體分段的URL,所述URL中包含IS0文件名和媒體分段標(biāo) 識(shí);所述HTTP streaming服務(wù)器還用于,收到所述客戶端發(fā)送的HTTP URL時(shí),返回相應(yīng)的 播放列表描述文件;收到所述客戶端發(fā)送的媒體分段的URL時(shí),找到HTTP Streaming hint 軌,提取媒體數(shù)據(jù)并組裝成相應(yīng)的媒體分段后,返回給所述客戶端;所述客戶端用于,根據(jù)所述播放列表描述文件,找到相應(yīng)時(shí)間的媒體分段的URL,向所 述HTTP streaming服務(wù)器請(qǐng)求服務(wù),并接收所述HTTPstreaming服務(wù)器返回的媒體分段。
全文摘要
本發(fā)明公開了一種流媒體業(yè)務(wù)的實(shí)現(xiàn)方法及系統(tǒng),所述方法包括獲取媒體碼流,將其分段存儲(chǔ)為ISO文件,并增加HTTP Streaming提示軌;其中,所述HTTP streaming提示軌中包含提取HTTP streaming業(yè)務(wù)所需要的媒體分段的相關(guān)參數(shù)。采用本發(fā)明技術(shù)方案,可以幫助運(yùn)營(yíng)商節(jié)約存儲(chǔ)空間,降低內(nèi)容管理的復(fù)雜度,節(jié)約運(yùn)營(yíng)成本;而且,對(duì)于用戶來說,可以減少內(nèi)容下載的數(shù)據(jù)量,更有效的利用帶寬,帶來更好的用戶體驗(yàn)。
文檔編號(hào)H04L29/06GK101984619SQ201010511859
公開日2011年3月9日 申請(qǐng)日期2010年10月12日 優(yōu)先權(quán)日2010年10月12日
發(fā)明者王芳, 鐘宏 申請(qǐng)人:中興通訊股份有限公司