專(zhuān)利名稱:點(diǎn)播服務(wù)中的mpeg傳送流的傳輸處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及多媒體通信技術(shù)領(lǐng)域,尤其涉及一種點(diǎn)播服務(wù)中的運(yùn)動(dòng)圖像 專(zhuān)家組格式(MPEG)傳送流(TS)的傳輸處理方法。
背景技術(shù):
國(guó)際標(biāo)準(zhǔn)化組織(ISO)的13818-1標(biāo)準(zhǔn)以及國(guó)際電信聯(lián)盟(ITU)的 H.222標(biāo)準(zhǔn)中公開(kāi)的MPEG TS是一種廣泛使用的系統(tǒng)層復(fù)用協(xié)議,在MPEG TS包上可以承載MPEG 1/2/4視頻、H264視頻、MPEG 1/2/4音頻等各種主 流的音視頻編碼格式,目前廣泛地應(yīng)用于廣播電視領(lǐng)域。隨著IPTV等多媒 體通信應(yīng)用的發(fā)展,TS流在基于IP網(wǎng)絡(luò)的流媒體及視頻監(jiān)控領(lǐng)域也得到了 廣泛的應(yīng)用,其主要形式采用的是由實(shí)時(shí)傳輸協(xié)議(RTP, Real Time Transport Protocol)承載TS (即TS over RTP)的方式進(jìn)行視頻凄t據(jù)的傳輸。目前因 特網(wǎng)工程任務(wù)組(IETF, Internet Engineering Task Force )的RFC2250文件 中公開(kāi)了 TS流在RTP中傳輸?shù)木唧w方法。圖1為T(mén)S over RTP包的結(jié)構(gòu)示意圖。參見(jiàn)圖l,所述RTP包承載MPEG TS包,MPEGTS包承載MPEG的打包基本流(PES, Packetized Elementary Stream )包,所述MPEG PES包中打包了媒體壓縮數(shù)據(jù),例如圖1中的MPEG 壓縮層數(shù)據(jù),或者也可以是H264數(shù)據(jù)等等,其中包括音、視頻數(shù)據(jù)。為 了降低對(duì)帶寬資源的占用,所述媒體壓縮數(shù)據(jù)常用的視頻編碼方式如 MPEG編碼方式、H264編碼方式等均采用了運(yùn)動(dòng)補(bǔ)償?shù)膸g編碼方式。這 種編碼方式分為幀內(nèi)編石馬幀(Intra幀)和幀間編石馬幀(Inter幀)。所述幀 內(nèi)編碼幀簡(jiǎn)稱為I幀,I幀采用類(lèi)似單幅圖片壓縮的技術(shù),只壓縮本視頻幀 內(nèi)的空間冗余信息;所述幀間編碼幀簡(jiǎn)稱為P幀,主要是利用本視頻幀與指定的參考幀(可以是I幀也可以是P幀)之間的時(shí)間冗余來(lái)壓縮數(shù)據(jù), 也就說(shuō)P幀記錄的是相對(duì)于參考幀之間的變化信息,從而減小了傳輸數(shù)據(jù) 量,減小對(duì)帶寬的占用。但是,對(duì)于隨機(jī)訪問(wèn)來(lái)說(shuō),只有包含I幀的數(shù)據(jù) 包才能作為隨機(jī)訪問(wèn)點(diǎn)。圖2為目前的一種典型的基于內(nèi)容分發(fā)網(wǎng)(CDN)的流媒體直播點(diǎn)播方 案示意圖。參見(jiàn)圖1, CDN是構(gòu)建在數(shù)據(jù)網(wǎng)絡(luò)上的 一種分布式的內(nèi)容分發(fā)網(wǎng), 其基本工作原理是采用中心-邊緣的層次組網(wǎng)結(jié)構(gòu),整個(gè)CDN系統(tǒng)包括多 個(gè)流媒體服務(wù)器,本文中簡(jiǎn)稱為流服務(wù)器。其中主要包括中心節(jié)點(diǎn)流服務(wù)器 100和若干個(gè)邊緣節(jié)點(diǎn)流服務(wù)器101、 102、 103 (邊緣節(jié)點(diǎn)具體數(shù)量不限定, 作為一種實(shí)例,圖中只顯示了三個(gè))。所述編碼器104采用上述的運(yùn)動(dòng)補(bǔ)償 的幀間編碼方式對(duì);規(guī)頻幀進(jìn)行編碼,得到I幀和或P幀,然后將包括I幀和 或P幀的媒體PES組合成TS包,并傳輸給中心節(jié)點(diǎn)流服務(wù)器101。所述中 心節(jié)點(diǎn)流服務(wù)器101在接收或讀取來(lái)自編碼器104的TS包后轉(zhuǎn)換為標(biāo)準(zhǔn)格 式文件例如MP4格式文件、3GP格式文件等,然后將標(biāo)準(zhǔn)格式文件復(fù)制為 多份, 一份存儲(chǔ)在本地的片源庫(kù)110中,其它份則分發(fā)給各個(gè)邊緣節(jié)點(diǎn)流服 務(wù)器,各個(gè)邊緣節(jié)點(diǎn)流服務(wù)器收到所述標(biāo)準(zhǔn)格式文件后存儲(chǔ)在本地存儲(chǔ)器中 (作為一個(gè)例子,圖1中只畫(huà)出了邊緣節(jié)點(diǎn)流服務(wù)器101的本地存儲(chǔ)器111, 其它邊緣節(jié)點(diǎn)流服務(wù)器也都具有本地存儲(chǔ)器)。CDN可以利用全局負(fù)載均 衡技術(shù)和服務(wù)導(dǎo)向技術(shù),使不同的用戶終端(例如圖1中的終端1、終端2、 終端3)可以訪問(wèn)最近的流服務(wù)器,包括中心節(jié)點(diǎn)和邊緣節(jié)點(diǎn)。當(dāng)實(shí)現(xiàn)媒體流的直播服務(wù)時(shí),用戶終端可以向最近的流服務(wù)器發(fā)送播放 請(qǐng)求,流服務(wù)器根據(jù)播放請(qǐng)求從本地存儲(chǔ)器中讀取出對(duì)應(yīng)的標(biāo)準(zhǔn)格式文件, 轉(zhuǎn)換成TS包并發(fā)送給用戶終端,從而可以使用戶就近得到視頻服務(wù)。對(duì)于 點(diǎn)播服務(wù),流服務(wù)器收到的播放請(qǐng)求是隨機(jī)訪問(wèn)請(qǐng)求,例如快進(jìn)播放請(qǐng)求、 快退播放請(qǐng)求、以及定位播放請(qǐng)求等,則需要實(shí)時(shí)對(duì)請(qǐng)求的隨機(jī)訪問(wèn)點(diǎn)附近 的TS包進(jìn)行I幀搜索計(jì)算,以判斷待發(fā)送的TS包中是否包含I幀數(shù)據(jù),因 為只有包含I幀的數(shù)據(jù)包才能作為隨機(jī)訪問(wèn)點(diǎn)。流服務(wù)器對(duì)隨機(jī)訪問(wèn)請(qǐng)求的TS包進(jìn)行搜索計(jì)算后,如果發(fā)現(xiàn)是包含I幀數(shù)據(jù)的TS包,則將該TS包發(fā) 送給請(qǐng)求隨機(jī)訪問(wèn)的終端,如果不是包含I幀數(shù)據(jù)的TS包,則不進(jìn)行發(fā)送, 直接跳過(guò)該TS包并查找下一個(gè)TS包是否包含I幀數(shù)據(jù)。 但是,上述現(xiàn)有技術(shù)存在以下技術(shù)問(wèn)題1、 對(duì)于每一路點(diǎn)播中的隨機(jī)訪問(wèn)請(qǐng)求,流媒體服務(wù)器首先需要將標(biāo)準(zhǔn) 格式文件轉(zhuǎn)換成TS包,轉(zhuǎn)換的過(guò)程非常耗費(fèi)資源,并且目前的RFC2250文 件公開(kāi)的技術(shù)方按中并沒(méi)有在RTP中攜帶任何關(guān)于I幀數(shù)據(jù)的指示信息,因 此現(xiàn)有技術(shù)在讀取TS包時(shí)都需要利用I幀的搜索算法查找每個(gè)TS包中是否 包含I幀數(shù)據(jù),對(duì)于某些編碼算法,查找I幀的算法是非常耗系統(tǒng)資源的, 對(duì)于熱點(diǎn)節(jié)目常常存在著多個(gè)點(diǎn)播會(huì)話,那么將會(huì)浪費(fèi)很多系統(tǒng)資源,從而 導(dǎo)致流服務(wù)器的成本太高。同時(shí)在實(shí)時(shí)點(diǎn)播中耗費(fèi)如此多的系統(tǒng)資源也會(huì)影 響媒體數(shù)據(jù)傳輸?shù)膶?shí)時(shí)性。2、 對(duì)于各種編碼格式的I幀搜索算法需要專(zhuān)業(yè)的編解碼知識(shí),而處于 邊緣節(jié)點(diǎn)上的通用流服務(wù)器通常不包括這部分功能,這需要對(duì)這些通用流服 務(wù)器進(jìn)行改造,從而提高了整個(gè)CDN的成本。3、 對(duì)于加密TS節(jié)目的點(diǎn)播請(qǐng)求,需要在發(fā)送I幀數(shù)據(jù)之前,查找最近 的授權(quán)控制信息(ECM)包并發(fā)送,否則終端將無(wú)法正常播放TS包。但是, 查找ECM包的算法同樣非常耗費(fèi)系統(tǒng)資源,導(dǎo)致流服務(wù)器的成本太高,影 響點(diǎn)播的實(shí)時(shí)性。發(fā)明內(nèi)容有鑒于此,本發(fā)明所要解決的技術(shù)問(wèn)題在于提供一種點(diǎn)播服務(wù)中的 MPEG TS的傳輸處理方法,以減少對(duì)系統(tǒng)資源的消耗,提高隨機(jī)訪問(wèn)的效 率,降低成本。為了實(shí)現(xiàn)上述發(fā)明目的,本發(fā)明的主要技術(shù)方案為一種點(diǎn)播服務(wù)中的MPEG傳送流TS的傳輸處理方法,適用于流服務(wù)器, 包括A、 解析查詢編碼后的TS包中是否包括關(guān)鍵幀數(shù)據(jù);B、 將TS包組成實(shí)時(shí)傳輸協(xié)議RTP包的負(fù)載數(shù)據(jù),填充RTP包頭,封 裝成RTP包,所述RTP包頭中包含擴(kuò)展頭,其中含有用于指示該RTP包中 是否包括關(guān)鍵幀數(shù)據(jù)的指示信息;C、 存儲(chǔ)所述RTP包;D、 當(dāng)收到隨機(jī)訪問(wèn)指令后,查找隨機(jī)訪問(wèn)所請(qǐng)求的RTP包,根據(jù)其擴(kuò) 展頭的指示控制發(fā)包。優(yōu)選的,所述步驟A依次對(duì)編碼后的TS包進(jìn)行處理;所述步驟B具體 包括依次取整數(shù)個(gè)TS包組成一個(gè)RTP包的負(fù)載數(shù)據(jù);為所述負(fù)載數(shù)據(jù)填 充包頭成為完整的RTP包,所述的包頭中包括固定包頭和擴(kuò)展頭,其中的 擴(kuò)展頭中包括該負(fù)載中的TS包是否包含關(guān)鍵幀數(shù)據(jù)的指示信息。優(yōu)選的,所述步驟A中進(jìn)一步包括解析查詢所述TS包中是否包括加 密信息;步驟B中,進(jìn)一步在所述RTP包的擴(kuò)展頭中指示該RTP包中是否 包含加密信息。優(yōu)選的,所述步驟D具體包括Dl、接收隨機(jī)訪問(wèn)指令;D2、依次讀耳又所述隨機(jī)訪問(wèn)指令所請(qǐng)求的RTP包;D3、針對(duì)所讀取的RTP包,檢查該RTP包的擴(kuò)展頭,根據(jù)擴(kuò)展頭的指 示判斷該RTP包是否包括關(guān)鍵幀數(shù)據(jù);如果包括,則將該RTP包發(fā)送給發(fā) 起隨機(jī)訪問(wèn)的終端;否則,不發(fā)送該RTP包。優(yōu)選的,步驟A中進(jìn)一步包括解析查詢所述TS包中是否包括加密信 息;步驟B中,進(jìn)一步在所述RTP包的擴(kuò)展頭中指示該RTP包中是否包含 加密信息;如果所述隨機(jī)訪問(wèn)指令所請(qǐng)求的是加密節(jié)目,所述步驟D3中當(dāng) 所述RTP包內(nèi)包括關(guān)鍵幀數(shù)據(jù)時(shí),則先向前查找最近一個(gè)擴(kuò)展頭中包含加 密信息的RTP包并發(fā)送給發(fā)起隨機(jī)訪問(wèn)的終端,再將所述包括關(guān)鍵幀數(shù)據(jù) 的RTP包發(fā)送給所述發(fā)起隨機(jī)訪問(wèn)的終端。優(yōu)選的,當(dāng)所述隨機(jī)訪問(wèn)指令為快進(jìn)播放指令時(shí),則步驟D2具體為從當(dāng)前播放的RTP包開(kāi)始按照順時(shí)順序依次讀取RTP包;當(dāng)所述隨機(jī)訪問(wèn) 指令為快退播放指令時(shí),則步驟D2具體為從當(dāng)前播放的RTP包開(kāi)始按照 逆時(shí)順序依次讀取RTP包;當(dāng)所述隨機(jī)訪問(wèn)指令為定位播放指令時(shí),則步 驟D2先按照定位播放指令中的時(shí)間戳讀取距離該時(shí)間戳最近的RTP包,并 執(zhí)行步驟D3;步驟D3中,如果成功發(fā)送該RTP包,則從該RTP包開(kāi)始進(jìn) 行正常播放;如果沒(méi)有發(fā)送該RTP包,則返回步驟D2按照順時(shí)順序依次讀 取RTP包并執(zhí)行步驟D3,直到讀取的RTP包成功發(fā)送,則從該RTP包開(kāi) 始進(jìn)行正常播放操作。優(yōu)選的,步驟A中進(jìn)一步包括解析所述TS包是否為視頻TS包及其 標(biāo)識(shí)號(hào);步驟B中,進(jìn)一步在所述RTP包的擴(kuò)展頭中指示該RTP包中包括 的#見(jiàn)頻TS包的標(biāo)識(shí)號(hào)。優(yōu)選的,步驟D后進(jìn)一步包括收到RTP包的終端讀取該RTP包的擴(kuò) 展頭,按照其中的視頻TS包的標(biāo)識(shí)號(hào),只解析其中的視頻TS包進(jìn)行播放。優(yōu)選的,該方法適用于內(nèi)容分發(fā)網(wǎng)絡(luò)中的流服務(wù)器;所述步驟A、 B、 C由中心節(jié)點(diǎn)流服務(wù)器執(zhí)行,所述步驟D由中心節(jié)點(diǎn)流服務(wù)器和/或邊緣節(jié) 點(diǎn)流服務(wù)器執(zhí)行。優(yōu)選的,步驟C中所述中心節(jié)點(diǎn)流服務(wù)器存儲(chǔ)所述RTP包的具體方法 為將所述RTP包存儲(chǔ)在本中心節(jié)點(diǎn)流服務(wù)器,同時(shí)將所述RTP包分發(fā)到 邊緣節(jié)點(diǎn)流媒體服務(wù)器進(jìn)行存儲(chǔ)。優(yōu)選的,所述RTP包擴(kuò)展頭的指示信息具體包括為 用于指示當(dāng)前RTP包中不含關(guān)鍵幀的指示信息; 用于指示當(dāng)前RTP包是關(guān)鍵幀的第一個(gè)包的指示信息; 用于指示當(dāng)前RTP包是關(guān)鍵幀的最后一個(gè)包的指示信息; 用于指示當(dāng)前RTP包是關(guān)4建幀的中間包的指示信息; 用于指示當(dāng)前RTP包中含有完整關(guān)鍵幀的指示信息。 本發(fā)明在流服務(wù)器收到編碼后的TS包后就查找其中是否有關(guān)鍵幀數(shù) 據(jù),將TS包組成負(fù)載數(shù)據(jù),并將是否具有關(guān)鍵幀以及具有什么樣的關(guān)鍵幀的指示信息作為擴(kuò)展頭對(duì)負(fù)載數(shù)據(jù)進(jìn)行打包,存儲(chǔ)發(fā)布帶有擴(kuò)展頭的RTP包。當(dāng)隨機(jī)訪問(wèn)時(shí),只通過(guò)簡(jiǎn)單讀取擴(kuò)展頭中的信息就可以得知所請(qǐng)求的RTP包是否包含關(guān)鍵幀數(shù)據(jù),如果包含則發(fā)送給請(qǐng)求方,否則不進(jìn)行發(fā)送。 本發(fā)明可以在進(jìn)行隨機(jī)訪問(wèn)時(shí)不必利用復(fù)雜的I幀搜索算法對(duì)每個(gè)RTP包內(nèi) 的TS進(jìn)行搜索計(jì)算,只是簡(jiǎn)單識(shí)別擴(kuò)展頭即可,從而減少對(duì)流服務(wù)器系統(tǒng) 資源的耗費(fèi),即降低了流服務(wù)器乃至整個(gè)CDN的成本,并且提高了隨機(jī)訪 問(wèn)的效率,使得隨機(jī)訪問(wèn)的速度更快。尤其是對(duì)于熱點(diǎn)節(jié)目存在著多個(gè)點(diǎn)播 會(huì)話時(shí),降低熱點(diǎn)節(jié)目對(duì)系統(tǒng)資源的大量耗費(fèi),提高熱點(diǎn)節(jié)目的實(shí)時(shí)隨機(jī)訪 問(wèn)的播放效果,更能體現(xiàn)出本發(fā)明的優(yōu)點(diǎn)。本發(fā)明也可以將是否包含加密信息的指示標(biāo)識(shí)設(shè)置在RTP包的擴(kuò)展頭 中,在隨機(jī)訪問(wèn)時(shí)流服務(wù)器只需讀取擴(kuò)展頭即可知道RTP包是否包含加密 的ECM包,爿Mv而方^更地查找ECM包,減少查找ECM包時(shí)對(duì)系統(tǒng)資源的過(guò) 多耗費(fèi),進(jìn)一步降低了流服務(wù)器的成本,提高了隨機(jī)訪問(wèn)的效率。由于TS包可能包括音頻數(shù)據(jù)或者包括視頻數(shù)據(jù),而隨機(jī)訪問(wèn)一般只需 傳輸播放視頻數(shù)據(jù),因此本發(fā)明還可以在RTP的擴(kuò)展頭中設(shè)置視頻TS包的 標(biāo)志號(hào)。收到RTP包的終端只需讀取該RTP包的擴(kuò)展頭,按照其中的視頻 TS包的標(biāo)識(shí)號(hào),只解析其中的視頻TS包進(jìn)行播放。從而不需要對(duì)所有TS 包進(jìn)行解析區(qū)分,進(jìn)一步提高了終端側(cè)的處理效率。本發(fā)明在流媒體點(diǎn)播應(yīng)用中,可以只在中心節(jié)點(diǎn)流服務(wù)器上完成所述I 幀數(shù)據(jù)的查找功能以及擴(kuò)展頭的打包功能,邊緣節(jié)點(diǎn)流服務(wù)器無(wú)需進(jìn)行專(zhuān)門(mén) 的I幀數(shù)據(jù)搜索計(jì)算,在隨機(jī)訪問(wèn)時(shí),只需筒單讀取擴(kuò)展頭,就可以獲知 RTP包中是否包含I幀數(shù)據(jù),從而降低了整個(gè)CDN系統(tǒng)的成本,并可以支 持在任意節(jié)點(diǎn)的流媒體直播點(diǎn)播服務(wù)。另外,由于本發(fā)明利用擴(kuò)展頭放置I幀指示信息,所以可提高系統(tǒng)的兼 容性,普通的流服務(wù)器即使不識(shí)別該擴(kuò)展頭,也可以方便地跳過(guò)該擴(kuò)展頭, 并不影響該流服務(wù)器實(shí)現(xiàn)正常的播放功能。
圖1為T(mén)S over RTP包的結(jié)構(gòu)示意圖;圖2為目前的一種典型的基于CDN的流媒體直播點(diǎn)播方案示意圖; 圖3為本發(fā)明所述方法的一種流程圖;圖4為本發(fā)明所述實(shí)施例的中心節(jié)點(diǎn)流服務(wù)器所執(zhí)行的流程圖;圖5為本發(fā)明所述實(shí)施例所應(yīng)用的具體CDN的示意圖;圖6為標(biāo)準(zhǔn)的RTP包頭格式示意7為本發(fā)明所述擴(kuò)展頭的一種示意圖;圖8為本發(fā)明所述流服務(wù)器在進(jìn)行直播和點(diǎn)播請(qǐng)求時(shí)的執(zhí)行流程圖。
具體實(shí)施方式
下面通過(guò)具體實(shí)施例和附圖對(duì)本發(fā)明做進(jìn)一步詳細(xì)說(shuō)明。圖3為本發(fā)明所述方法的一種流程圖。參見(jiàn)圖3,本發(fā)明是點(diǎn)播服務(wù)中的MPEGTS的傳輸處理方法,主要包括步驟301、流服務(wù)器接收或者讀取編碼后的TS包,該TS包的來(lái)源為流媒體編碼器。步驟302、依次解析所述每一 TS包,判斷每一 TS包中是否包括關(guān)鍵幀 數(shù)據(jù)即I幀數(shù)據(jù),也就是說(shuō)該TS包是否可以作為隨機(jī)訪問(wèn)點(diǎn);還可以判斷 每一TS包中是否包括加密信息,即該TS包是否為ECM包;還可以判斷該 TS包是否為一見(jiàn)頻TS包,如果是則記錄該-見(jiàn)頻TS包的標(biāo)識(shí)號(hào)(PID)。步驟303、將TS包組成RTP包的負(fù)載數(shù)據(jù),打上RTP包頭,封裝成 RTP包,所述RTP包頭中包含固定包頭和擴(kuò)展頭,所述擴(kuò)展頭中含有用于 指示該RTP包中是否包括關(guān)鍵幀數(shù)據(jù)的指示信息,還可以包括是否包含加 密信息和或^L頻TS包的PID。步驟304、存儲(chǔ)所述攜帶擴(kuò)展頭的RTP包。然后,流服務(wù)器就可以對(duì)終端提供流媒體直播點(diǎn)播服務(wù)了。終端通過(guò)向流服務(wù)器發(fā)送播放指令觸發(fā)流服務(wù)器發(fā)送對(duì)應(yīng)的RTP包給終端,終端收到RTP包后從中解析出音視頻數(shù)據(jù)并進(jìn)行播放。對(duì)于正常播放指令,本發(fā)明所述流服務(wù)器的執(zhí)行方法與現(xiàn)有技術(shù)相同,此處不再贅述;對(duì)于隨機(jī)訪問(wèn)指令, 例如快進(jìn)播放請(qǐng)求、快退播放指令、定點(diǎn)播放指令等,則本發(fā)明所述的流服 務(wù)器需要進(jìn)行特殊的處理,即需要執(zhí)行以下步驟305。步驟305、當(dāng)收到隨機(jī)訪問(wèn)指令后,在所存儲(chǔ)的RTP包中查找隨機(jī)訪問(wèn) 所請(qǐng)求的RTP包,根據(jù)其擴(kuò)展頭的指示,控制發(fā)包過(guò)程。具體的,如果查 找到的RTP包的擴(kuò)展頭指示該RTP包中含有I幀數(shù)據(jù),則將該RTP包發(fā)送 給發(fā)起請(qǐng)求的終端,否則,跳過(guò)該RTP包查找下一個(gè)。本發(fā)明所述的方法可以適合于單獨(dú)提供流媒體直播點(diǎn)播服務(wù)的流服務(wù) 器,只是該流服務(wù)器需要執(zhí)行上述流程的各個(gè)步驟。本發(fā)明也可以適用于 CDN網(wǎng)絡(luò)中的流服務(wù)器,只是如果需要進(jìn)一步降低成本,上述的步驟301 至步驟304可以由中心節(jié)點(diǎn)流服務(wù)器執(zhí)行,邊緣節(jié)點(diǎn)流服務(wù)器只執(zhí)行正常播 放任務(wù)以及上述步驟305即可,或者中心節(jié)點(diǎn)流服務(wù)器也可以執(zhí)行正常播放 任務(wù)以及上述步驟305。這樣可以降^氐邊緣節(jié)點(diǎn)流服務(wù)器的成本。下面通過(guò)將所述方法應(yīng)用在一種具體CDN中為例介紹本發(fā)明的一種具 體實(shí)施例。圖4為該實(shí)施例的中心節(jié)點(diǎn)流服務(wù)器所執(zhí)行的流程圖,圖5為該 實(shí)施例所應(yīng)用的具體CDN的示意圖。參見(jiàn)圖4和圖5,該流程包括步驟401、中心節(jié)點(diǎn)流服務(wù)器500接收編碼器504發(fā)送的TS包,或者 中心節(jié)點(diǎn)流服務(wù)器500從編碼器504讀取TS包,然后緩存得到的TS包。 所述TS包可以通過(guò)用戶數(shù)據(jù)報(bào)協(xié)議(UDP, User Datagram Protocol)包來(lái) 承載(即TS over UDP的方式),中心節(jié)點(diǎn)服務(wù)器500可以從UDP包中解 析出TS包。步驟402、中心節(jié)點(diǎn)流服務(wù)器500依次解析所述各個(gè)TS包,從中得到 并記錄以下信息a)當(dāng)前TS包是否包含I幀數(shù)據(jù),可以利用I幀搜索算法進(jìn)行搜索判斷, 并分以下情況1 )當(dāng)前TS包不含I幀;2) 當(dāng)前TS包是I幀的第一個(gè)包;3) 當(dāng)前TS包是I幀的最后一個(gè)包;4) 當(dāng)前TS包是I幀的中間包;5) 當(dāng)前TS包內(nèi)含有完整的I幀。b) 當(dāng)前TS包是否包含加密信息,即當(dāng)前TS包是否為ECM包。c) 當(dāng)前TS包是否為視頻TS包,如果是則記錄該視頻TS包的PID。 步驟403 ~步驟404、從緩存的TS包序列中依次取TS包加入當(dāng)前RTP負(fù)載,并判斷當(dāng)前RTP包是否完整,即根據(jù)所述組包策略是否達(dá)到一個(gè)完 整的RTP包的負(fù)載數(shù)據(jù),如果是則執(zhí)行步驟405;否則返回步驟403。此處主要根據(jù)預(yù)設(shè)的組包策略,將TS包組成RTP包的負(fù)載數(shù)據(jù),例如 可以取整數(shù)個(gè)TS包,拼成一個(gè)RTP包的負(fù)載數(shù)據(jù)段,具體的組包策略可以 如下:3.1 假設(shè)網(wǎng)絡(luò)最大傳輸單元(MTU, Maximum Transmission Unit)為 1500字節(jié),則一個(gè)RTP包最多包含7個(gè)TS包,所以可以將7個(gè)TS包組成 一個(gè)RTP包的負(fù)載數(shù)據(jù)。3.2如果TS包是ECM包,則可以將該ECM包單獨(dú)組成一個(gè)RTP包。步驟405 ~步驟406、為所述負(fù)載數(shù)據(jù)填充RTP包頭封裝成為完整的 RTP包,即TS over RTP包。具體包括填充RTP固定包頭和根據(jù)前述解析的 TS包的信息填充RTP擴(kuò)展頭。圖6為標(biāo)準(zhǔn)的RTP包頭格式示意圖。參見(jiàn)圖6, RFC3550中公開(kāi)了 RTP 的包頭格式。每個(gè)RTP包頭包括固定頭601和擴(kuò)展頭602,擴(kuò)展頭是可選的, 出現(xiàn)在固定頭601之后,負(fù)載部分602之前。固定包頭601可以是RTP協(xié) 議公開(kāi)的標(biāo)準(zhǔn)協(xié)議頭,也可以是用戶自定義的協(xié)議頭;固定頭部的X位設(shè) 為l指明有擴(kuò)展頭存在。協(xié)議規(guī)定擴(kuò)展頭可以有任意長(zhǎng)度,但是必須以一個(gè) 16位的類(lèi)型域緊跟一個(gè)16位的長(zhǎng)度域開(kāi)始,這樣對(duì)于不能識(shí)別該擴(kuò)展的應(yīng) 用可以簡(jiǎn)單跳過(guò)此擴(kuò)展。本發(fā)明所述的RTP包頭中需要包括擴(kuò)展頭602,其中指明本RTP包是否包含視頻I幀數(shù)據(jù),以及指明本RTP包是否包含加密信息。以下表1的內(nèi)容是所述擴(kuò)展頭的一種具體語(yǔ)法結(jié)構(gòu),圖7為本發(fā)明所述擴(kuò)展頭的一種示意圖。語(yǔ)法位數(shù)標(biāo)識(shí)符rtp extension (){ defined一by一profile length if( defined by_profile == 0x5A5 8 && — length == 1 ){ header extension 0 else{ unknown extentionO }16 16bslbf uimsbfheader extension(){ id leu indicator video PID }8 8 3 13uimsbf uimsbf uimsbf uimsbf表1參見(jiàn)表l,標(biāo)識(shí)符bslbf是比特串,且左位在先。標(biāo)識(shí)符uimsbf為無(wú)符 號(hào)整數(shù),且高位在先。參見(jiàn)表1和圖7,各字段釋義如下defined by profile字段值固定為0x5A、 0x58 ( "ZX"),標(biāo)識(shí)含義為本發(fā) 明的規(guī)范擴(kuò)展。length字l殳值為1,表示擴(kuò)展頭(header extension )的長(zhǎng)度為1個(gè)32位 雙字。id字段值為3,表明當(dāng)前TS over RTP包內(nèi)含有TS的指示信息。len字段為2,表明隨后的TS指示(indicator)為2個(gè)字節(jié)。indicator字段標(biāo)明當(dāng)前的TS over RTP包是否有I幀數(shù)據(jù)或者ECM數(shù)據(jù),根據(jù)上述步驟402判斷記錄的情況,利用不同的取值指示所判斷出的不同情況,例如如果取值0x0則指示當(dāng)前TS over RTP包沒(méi)有I幀數(shù)據(jù); 如果l^值0x1則指示當(dāng)前TS over RTP包為I幀的第 一個(gè)包; 如果取值0x2則指示當(dāng)前TS over RTP包為I幀的中間包; 如果取值0x4則指示當(dāng)前TS overRTP包為I幀的最后一個(gè)包; 如果取值0x5則指示當(dāng)前TS over RTP包為ECM包,即加密信息; 如果取值0x7則指示當(dāng)前TS over RTP包內(nèi)含有完整的I幀。 video_PID字段標(biāo)明當(dāng)前TS over RTP包中視頻幀的PID號(hào)。 當(dāng)然,所述inicator字l殳也可以將上述后含有I幀數(shù)據(jù)的四種情況統(tǒng)一 用 一個(gè)值指示為當(dāng)前TS over RTP包中含有I幀數(shù)據(jù),同樣可以實(shí)現(xiàn)后續(xù)的 隨機(jī)訪問(wèn)播放功能。但是,此處將含有I幀數(shù)據(jù)的四種情況分開(kāi)表示,是為 了進(jìn)一步達(dá)到更好的播放效果因?yàn)榫W(wǎng)絡(luò)傳輸可能會(huì)有丟包,對(duì)于快進(jìn)快退 播放,需要有完整的I幀信息標(biāo)志終端才能正確解析并進(jìn)行播放,如果不區(qū) 分一個(gè)TS over RTP包在I幀中的位置,可能會(huì)發(fā)送殘缺的I幀,導(dǎo)致播放 花屏。步驟407、將所述完整的TS over RTP包進(jìn)行輸出存儲(chǔ),即由中心節(jié)點(diǎn) 流服務(wù)器500將組裝好的TS over RTP包存儲(chǔ)到片源庫(kù)110中,并定時(shí)分發(fā) 到各個(gè)邊緣節(jié)點(diǎn)流服務(wù)器,邊緣節(jié)點(diǎn)流服務(wù)器將收到的TS overRTP包存儲(chǔ) 在本地的存儲(chǔ)器中。步驟408、判斷緩沖隊(duì)列中是否還有TS包,如果是,則返回步驟403; 否則,執(zhí)行步驟409。步驟409、判斷是否還要從編碼器讀取或接收TS包,如果是,則返回 步驟401;否則結(jié)束本流程。圖8為本發(fā)明所述流服務(wù)器在進(jìn)行直播和點(diǎn)播請(qǐng)求時(shí)的執(zhí)行流程圖。參 見(jiàn)圖8和圖5,該流程包括步驟801、終端1點(diǎn)播一路RTP節(jié)目,發(fā)送正常播放指令給最近的邊緣 節(jié)點(diǎn)流服務(wù)器501。步驟802、邊緣節(jié)點(diǎn)流服務(wù)器501收到正常播放指令后,進(jìn)行正常播放,即從本地存儲(chǔ)器中依次讀取所請(qǐng)求的TS over RTP包并發(fā)送給終端1,終端 l收包并解碼播放。本步驟的方法可以參照現(xiàn)有技術(shù)。步驟803、終端1向邊緣節(jié)點(diǎn)流服務(wù)器501發(fā)送隨機(jī)訪問(wèn)指令,例如此 處為快進(jìn)指令。步驟804、邊緣節(jié)點(diǎn)流服務(wù)器501收到所述快進(jìn)指令后,從當(dāng)前播放的 TS over RTP包開(kāi)始按照順時(shí)順序依次讀取TS over RTP包。步驟805 ~ 806、邊緣節(jié)點(diǎn)流服務(wù)器501對(duì)于讀取到的每個(gè)TS over RTP 包,檢查該TS over RTP包擴(kuò)展頭的indicator字段,如果為0x1, 0x2, 0x4, 0x7,表示該TS over RTP包內(nèi)含有I幀數(shù)據(jù),是隨機(jī)訪問(wèn)點(diǎn),則發(fā)送給終端 1;如果為0x0,則表示該TS over RTP包內(nèi)不含有I幀數(shù)據(jù),則不是隨機(jī)訪 問(wèn)點(diǎn),不進(jìn)行發(fā)送,繼續(xù)讀取下一個(gè)TS over RTP包重復(fù)本步驟。此處如果播放的節(jié)目是加密節(jié)目,則查找出含有I幀數(shù)據(jù)的TS over RTP 包后,發(fā)送該TS over RTP包之前,進(jìn)一步包4舌先向前查找最近一個(gè) indicator為0x5即包含加密信息的TS over RTP包并發(fā)送給終端1,再將所 述包括I幀數(shù)據(jù)的TS over RTP包發(fā)送給所述終端1,終端可以根據(jù)加密信 息正確解析后續(xù)的TS over RTP包。步驟807、終端1收到所述TS over RTP包,解析出其中的媒體負(fù)載進(jìn) 行快進(jìn)播放。進(jìn)一步的,由于點(diǎn)播可以不播放音頻,因此終端l可以先讀取 該TS over RTP包的擴(kuò)展頭,按照其中的video—PID字段標(biāo)明的PID號(hào),只 解析其中的視頻TS包進(jìn)行播放。如果所述隨機(jī)訪問(wèn)請(qǐng)求為快退請(qǐng)求指令,則步驟804中邊緣節(jié)點(diǎn)流服務(wù) 器501從當(dāng)前4番方支的TS over RTP包開(kāi)始按照逆時(shí)順序依次讀取TS over RTP 包,并執(zhí)行后續(xù)步驟,終端1收到后可以進(jìn)行快退播放。如果所述隨機(jī)訪問(wèn)指令為定位播放指令,則先按照定位播放指令中的時(shí) 間戳讀耳又距離該時(shí)間戳最近的TS over RTP包,并執(zhí)行以下步驟805,步驟805,、讀取該TS over RTP包擴(kuò)展頭的indicator字段,如果為0x1, 0x2, 0x4, 0x7,表示該TS overRTP包內(nèi)含有I幀數(shù)據(jù),是隨機(jī)訪問(wèn)點(diǎn),則將該TS over RTP包發(fā)送給終端1,然后從該TS over RTP包開(kāi)始進(jìn)行正常 播放,即按照正常播放的方式讀取后續(xù)的TS over RTP包并發(fā)送。如果距離 所述時(shí)間戳最近的TS over RTP包擴(kuò)展頭的indicator字段為0x0,則表示該 TSoverRTP包內(nèi)不含有I幀數(shù)據(jù),不是隨機(jī)訪問(wèn)點(diǎn),不發(fā)送給終端1,然后 按照順時(shí)順序依次讀取下一個(gè)TS over RTP包并返回執(zhí)行步驟805,。以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不 局限于此,任何熟悉該技術(shù)的人在本發(fā)明所揭露的技術(shù)范圍內(nèi),可輕易想到 的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種點(diǎn)播服務(wù)中的MPEG傳送流TS的傳輸處理方法,適用于流服務(wù)器,其特征在于,包括A、解析查詢編碼后的TS包中是否包括關(guān)鍵幀數(shù)據(jù);B、將TS包組成實(shí)時(shí)傳輸協(xié)議RTP包的負(fù)載數(shù)據(jù),填充RTP包頭,封裝成RTP包,所述RTP包頭中包含擴(kuò)展頭,其中含有用于指示該RTP包中是否包括關(guān)鍵幀數(shù)據(jù)的指示信息;C、存儲(chǔ)所述RTP包;D、當(dāng)收到隨機(jī)訪問(wèn)指令后,查找隨機(jī)訪問(wèn)所請(qǐng)求的RTP包,根據(jù)其擴(kuò)展頭的指示控制發(fā)包。
2、 根據(jù)權(quán)利要求1所述的方法,其特征在于, 所述步驟A依次對(duì)編碼后的TS包進(jìn)行處理;所述步驟B具體包括依次取整數(shù)個(gè)TS包組成一個(gè)RTP包的負(fù)載數(shù)據(jù); 為所述負(fù)載數(shù)據(jù)填充包頭成為完整的RTP包,所述的包頭中包括固定包頭 和擴(kuò)展頭,其中的擴(kuò)展頭中包括該負(fù)載中的TS包是否包含關(guān)鍵幀數(shù)據(jù)的指 示信息。
3、 根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟A中進(jìn)一步包括 解析查詢所述TS包中是否包括加密信息;步驟B中,進(jìn)一步在所述RTP 包的擴(kuò)展頭中指示該RTP包中是否包含加密信息。
4、 根據(jù)權(quán)利要求1所述的方法,其特征在于,所述步驟D具體包括 Dl、接收隨機(jī)訪問(wèn)指令;D2、依次讀取所述隨機(jī)訪問(wèn)指令所請(qǐng)求的RTP包;D3、針對(duì)所讀取的RTP包,檢查該RTP包的擴(kuò)展頭,根據(jù)擴(kuò)展頭的指 示判斷該RTP包是否包括關(guān)鍵幀數(shù)據(jù);如果包括,則將該RTP包發(fā)送給發(fā) 起隨機(jī)訪問(wèn)的終端;否則,不發(fā)送該RTP包。
5、 根據(jù)權(quán)利要求4所述的方法,其特征在于,步驟A中進(jìn)一步包括解析查詢所述TS包中是否包括加密信息;步驟B中,進(jìn)一步在所述RTP 包的擴(kuò)展頭中指示該RTP包中是否包含加密信息;如果所述隨機(jī)訪問(wèn)指令所請(qǐng)求的是加密節(jié)目,所述步驟D3中當(dāng)所述 RTP包內(nèi)包括關(guān)鍵幀數(shù)據(jù)時(shí),則先向前查找最近一個(gè)擴(kuò)展頭中包含加密信息 的RTP包并發(fā)送給發(fā)起隨機(jī)訪問(wèn)的終端,再將所述包括關(guān)鍵幀數(shù)據(jù)的RTP 包發(fā)送給所述發(fā)起隨機(jī)訪問(wèn)的終端。
6、 根據(jù)權(quán)利要求4或5所述的方法,其特征在于, 當(dāng)所述隨機(jī)訪問(wèn)指令為快進(jìn)播放指令時(shí),則步驟D2具體為從當(dāng)前播放的RTP包開(kāi)始按照順時(shí)順序依次讀取RTP包;當(dāng)所述隨機(jī)訪問(wèn)指令為快退播放指令時(shí),則步驟D2具體為從當(dāng)前播 放的RTP包開(kāi)始按照逆時(shí)順序依次讀取RTP包;當(dāng)所述隨機(jī)訪問(wèn)指令為定位播放指令時(shí),則步驟D2先按照定位播放指 令中的時(shí)間戳讀取距離該時(shí)間戳最近的RTP包,并執(zhí)行步驟D3;步驟D3 中,如果成功發(fā)送該RTP包,則從該RTP包開(kāi)始進(jìn)行正常播放;如果沒(méi)有 發(fā)送該RTP包,則返回步驟D2按照順時(shí)順序依次讀取RTP包并執(zhí)行步驟 D3,直到讀取的RTP包成功發(fā)送,則從該RTP包開(kāi)始進(jìn)行正常播放操作。
7、 根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟A中進(jìn)一步包括 解析所述TS包是否為視頻TS包及其標(biāo)識(shí)號(hào);步驟B中,進(jìn)一步在所述RTP 包的擴(kuò)展頭中指示該RTP包中包括的視頻TS包的標(biāo)識(shí)號(hào)。
8、 根據(jù)權(quán)利要求7所述的方法,其特征在于,步驟D后進(jìn)一步包括 收到RTP包的終端讀取該RTP包的擴(kuò)展頭,按照其中的一見(jiàn)頻TS包的標(biāo)識(shí) 號(hào),只解析其中的視頻TS包進(jìn)行播放。
9、 根據(jù)權(quán)利要求1所述的方法,其特征在于,該方法適用于內(nèi)容分發(fā) 網(wǎng)絡(luò)中的流服務(wù)器;所述步驟A、 B、 C由中心節(jié)點(diǎn)流服務(wù)器執(zhí)行,所述步 驟D由中心節(jié)點(diǎn)流服務(wù)器和/或邊緣節(jié)點(diǎn)流服務(wù)器執(zhí)行。
10、 根據(jù)權(quán)利要求9所述的方法,其特征在于,步驟C中所述中心節(jié)點(diǎn) 流服務(wù)器存儲(chǔ)所述RTP包的具體方法為將所述RTP包存儲(chǔ)在本中心節(jié)點(diǎn)流服務(wù)器,同時(shí)將所述RTP包分發(fā)到邊緣節(jié)點(diǎn)流媒體服務(wù)器進(jìn)行存儲(chǔ)。
11、根據(jù)權(quán)利要求1所述的方法,其特征在于,所述RTP包擴(kuò)展頭的指示信息具體包括為用于指示當(dāng)前RTP包中不含關(guān)鍵幀的指示信息; 用于指示當(dāng)前RTP包是關(guān)鍵幀的第 一個(gè)包的指示信息; 用于指示當(dāng)前RTP包是關(guān)鍵幀的最后一個(gè)包的指示信息; 用于指示當(dāng)前RTP包是關(guān)鍵幀的中間包的指示信息; 用于指示當(dāng)前RTP包中含有完整關(guān)鍵幀的指示信息。
全文摘要
本發(fā)明公開(kāi)了一種點(diǎn)播服務(wù)中的MPEG傳送流TS的傳輸處理方法,適用于流服務(wù)器,包括A.解析查詢編碼后的TS包中是否包括關(guān)鍵幀數(shù)據(jù);B.將TS包組成實(shí)時(shí)傳輸協(xié)議RTP包的負(fù)載數(shù)據(jù),填充RTP包頭,封裝成RTP包,所述RTP包頭中包含擴(kuò)展頭,其中含有用于指示該RTP包中是否包括關(guān)鍵幀數(shù)據(jù)的指示信息;C.存儲(chǔ)所述RTP包;D.當(dāng)收到隨機(jī)訪問(wèn)指令后,查找隨機(jī)訪問(wèn)所請(qǐng)求的RTP包,根據(jù)其擴(kuò)展頭的指示控制發(fā)包。利用本發(fā)明,可以避免每次隨機(jī)訪問(wèn)時(shí)采用復(fù)雜的搜索算法判斷媒體包是否為隨機(jī)訪問(wèn)點(diǎn),從而減少對(duì)系統(tǒng)資源的消耗,提高隨機(jī)訪問(wèn)的效率,降低成本。
文檔編號(hào)H04N7/173GK101222616SQ20081005660
公開(kāi)日2008年7月16日 申請(qǐng)日期2008年1月22日 優(yōu)先權(quán)日2008年1月22日
發(fā)明者劉志強(qiáng), 張建強(qiáng), 阮亞平 申請(qǐng)人:中興通訊股份有限公司