專利名稱:基于互聯(lián)網(wǎng)的電視流媒體數(shù)據(jù)實(shí)時(shí)傳輸和服務(wù)裝置及方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計(jì)算機(jī)多媒體技術(shù)領(lǐng)域,尤其涉及一種支持實(shí)時(shí)轉(zhuǎn)碼、多種播放方式和操作的流媒體服務(wù)器的實(shí)現(xiàn)方法,以及流媒體數(shù)據(jù)的傳輸、存儲(chǔ)和流化讀取方法。
背景技術(shù):
隨著全球?qū)拵в脩舻拇笠?guī)模增加,以視頻點(diǎn)播(Video On Demand,VOD)為代表的多媒體點(diǎn)播業(yè)務(wù)一直是公眾、影視公司和網(wǎng)絡(luò)服務(wù)提供商的夢想,在因特網(wǎng)上展開視頻點(diǎn)播等多媒體服務(wù)的需求越來越明顯。視頻多媒體點(diǎn)播因其交互性和即時(shí)性,正在迅速成為互聯(lián)網(wǎng)的重要應(yīng)用。
IP電視又叫IPTV,是利用寬帶IP網(wǎng)絡(luò)的基礎(chǔ)設(shè)施,以家用電視機(jī)或電腦作為主要終端電器,基于IP協(xié)議來傳送數(shù)字電視信號(hào),提供包括數(shù)字電視節(jié)目在內(nèi)的多種數(shù)字媒體服務(wù)。其關(guān)鍵技術(shù)是IP over Everything的特點(diǎn),通過各種網(wǎng)絡(luò)利用電腦或“機(jī)頂盒+電視”實(shí)現(xiàn)寬帶視頻服務(wù)。
現(xiàn)有的IPTV媒體服務(wù)主要包括兩種第一種在互聯(lián)網(wǎng)上通過實(shí)時(shí)轉(zhuǎn)播接收到的電視數(shù)據(jù)達(dá)到與普通電視同樣的效果,另外一種則是將電視節(jié)目錄制保存下來,然后向客戶提供類似于普通電影的VOD服務(wù)。在第一種方式下客戶無法主動(dòng)進(jìn)行VOD的各種操作,而在第二種方式下客戶只能點(diǎn)播已經(jīng)錄制好的文件,不能及時(shí)享受最新的電視節(jié)目和實(shí)時(shí)服務(wù)。為適應(yīng)我國寬帶產(chǎn)業(yè)發(fā)展需要,網(wǎng)絡(luò)電視運(yùn)營商提出了在3TNet原有網(wǎng)絡(luò)電視及VOD業(yè)務(wù)基礎(chǔ)上提供點(diǎn)播式網(wǎng)絡(luò)電視業(yè)務(wù),即TVOD(TeleVision On Demand)。
發(fā)明內(nèi)容
技術(shù)問題本發(fā)明針對電視媒體數(shù)據(jù)實(shí)時(shí)VOD播放方式的需求,提供了一種基于互聯(lián)網(wǎng)的電視流媒體數(shù)據(jù)實(shí)時(shí)傳輸和服務(wù)裝置及方法,該裝置對用戶同時(shí)提供了電視媒體的VOD點(diǎn)播和電視直播的播放方式,包括欄目點(diǎn)播、時(shí)移電視和電視直播,使用戶可以隨心所欲的選擇自己的欄目和播放方式,從而在現(xiàn)有的網(wǎng)絡(luò)環(huán)境中實(shí)現(xiàn)電視點(diǎn)播和直播并發(fā)服務(wù),特別地,單組播的實(shí)現(xiàn)對用戶是透明的,用戶可以在已有的節(jié)目中任意切換。
技術(shù)方案在我們的解決方案中,核心系統(tǒng)主要包括三個(gè)部分——轉(zhuǎn)碼服務(wù)器、數(shù)據(jù)接收存儲(chǔ)實(shí)體和媒體服務(wù)器。轉(zhuǎn)碼服務(wù)器通過對接受到的多媒體數(shù)據(jù)進(jìn)行實(shí)時(shí)轉(zhuǎn)碼(解碼后編碼)以降低數(shù)據(jù)流的碼率便于傳輸,數(shù)據(jù)接收存儲(chǔ)實(shí)體向轉(zhuǎn)碼服務(wù)器請求數(shù)據(jù)并接收存儲(chǔ)數(shù)據(jù),而媒體服務(wù)器根據(jù)已接收到的數(shù)據(jù)對用戶進(jìn)行服務(wù),具體包括轉(zhuǎn)碼服務(wù)器包括一個(gè)電視媒體數(shù)據(jù)接入單元、一個(gè)媒體數(shù)據(jù)實(shí)時(shí)轉(zhuǎn)碼單元、一個(gè)數(shù)據(jù)封裝單元和一個(gè)數(shù)據(jù)分發(fā)單元;其中,接入單元接收實(shí)時(shí)的電視媒體數(shù)據(jù)并交給轉(zhuǎn)碼單元進(jìn)行轉(zhuǎn)碼,轉(zhuǎn)碼后的數(shù)據(jù)由封裝單元打包為實(shí)時(shí)傳輸協(xié)議包,并由分發(fā)單元根據(jù)后端數(shù)據(jù)接收實(shí)體的請求分發(fā)打包后的媒體數(shù)據(jù),并在運(yùn)行中根據(jù)實(shí)時(shí)監(jiān)控的狀況建立或關(guān)閉對給定后端服務(wù)器的數(shù)據(jù)分發(fā)。
數(shù)據(jù)接收存儲(chǔ)實(shí)體包括一個(gè)數(shù)據(jù)請求接收單元、一個(gè)數(shù)據(jù)解析單元、一個(gè)文件生成單元、一個(gè)文件管理單元;其中請求接收單元向轉(zhuǎn)碼服務(wù)器請求數(shù)據(jù)并進(jìn)行接收,然后對接收到的數(shù)據(jù)交由數(shù)據(jù)解析單元進(jìn)行解析,并將解析后的數(shù)據(jù)由文件生成單元以可實(shí)時(shí)動(dòng)態(tài)增刪的MP4文件方式存儲(chǔ)于本地,以提供媒體服務(wù)器的服務(wù)內(nèi)容,而文件管理單元負(fù)責(zé)其它幾個(gè)單元和生成的電視媒體文件的管理;其中RTP的解析和文件的組織生成是獨(dú)立的。
媒體服務(wù)器包括媒體數(shù)據(jù)流化單元、操作切換單元、請求接入單元、數(shù)據(jù)發(fā)送單元和直播服務(wù)單元,以及無縫的單組播切換單元;其中組播數(shù)據(jù)直接由數(shù)據(jù)接收存儲(chǔ)實(shí)體中的文件生成單元實(shí)時(shí)流化提供,而單播數(shù)據(jù)由已經(jīng)存儲(chǔ)的電視媒體文件提供,從而分離了單組播的資源競爭,大大提高了組播的可靠性和實(shí)時(shí)性。
本發(fā)明還對實(shí)時(shí)媒體服務(wù)系統(tǒng)中的關(guān)鍵技術(shù)進(jìn)行了研究和實(shí)施,提出了一種基于互聯(lián)網(wǎng)的電視流媒體數(shù)據(jù)實(shí)時(shí)傳輸和實(shí)時(shí)服務(wù)的方法,具體包括a、轉(zhuǎn)碼服務(wù)器將收到的電視媒體數(shù)據(jù)進(jìn)行轉(zhuǎn)碼并以RTP的形式分發(fā)給請求的后端服務(wù)器;b、數(shù)據(jù)接收存儲(chǔ)實(shí)體請求數(shù)據(jù)并獲取轉(zhuǎn)碼服務(wù)器分發(fā)的RTP數(shù)據(jù)包,然后解析并存儲(chǔ)為可實(shí)時(shí)增刪并使用的MP4本地文件;c、數(shù)據(jù)接收存儲(chǔ)實(shí)體通過數(shù)據(jù)的同步讀取向媒體服務(wù)器提供電視媒體數(shù)據(jù),并對單播和實(shí)時(shí)組播采用不同的方式;而當(dāng)進(jìn)行單播播放時(shí),利用讀取緩存來實(shí)現(xiàn)媒體文件的無縫切換;d、媒體服務(wù)器根據(jù)客戶的操作執(zhí)行必要的單組播切換;e、根據(jù)客戶的請求執(zhí)行播放、暫停、快進(jìn)、快退、前跳、后跳、停止等各種操作和播放方式之間的切換。
所述的步驟a包括在轉(zhuǎn)碼數(shù)據(jù)服務(wù)器中,將媒體數(shù)據(jù)按時(shí)間順序進(jìn)行解析,然后將實(shí)際的媒體數(shù)據(jù)送往解碼器和編碼器完成轉(zhuǎn)碼,最后根據(jù)輸入信息將媒體數(shù)據(jù)封裝成RTP包進(jìn)行分發(fā),且媒體數(shù)據(jù)的SDP信息由編碼器根據(jù)給定的設(shè)置自動(dòng)生成,并在后端服務(wù)器請求時(shí)分發(fā)給請求的服務(wù)器。
所述的步驟b包括b1、媒體文件以元數(shù)據(jù)MOV和媒體數(shù)據(jù)MDAT分開的MP4文件方式進(jìn)行存儲(chǔ),兩者均以1小時(shí)(可調(diào)整)的時(shí)間段進(jìn)行分割,當(dāng)文件到達(dá)一個(gè)小時(shí)后重新開辟新文件并將已滿文件寫入硬盤持久存儲(chǔ),而且不同媒體數(shù)據(jù)根據(jù)其類型(音頻或視頻)獨(dú)立地進(jìn)行文件分割和讀取拼接b2、當(dāng)前正在寫入的元數(shù)據(jù)和媒體數(shù)據(jù)首先緩存在內(nèi)存中,當(dāng)?shù)竭_(dá)一定的限制后再寫入硬盤,其中元數(shù)據(jù)緩存和實(shí)際媒體數(shù)據(jù)緩存的策略是獨(dú)立的,兩者可分別配置,且寫入硬盤時(shí)存儲(chǔ)在不同的文件中b3、給定時(shí)間段的元數(shù)據(jù)全部緩存在內(nèi)存中,且新數(shù)據(jù)采用插入的方式添加到已有數(shù)據(jù)中,而對應(yīng)的媒體數(shù)據(jù)通過時(shí)間交織采用追加的方式添加到已寫入文件或緩存的后端;時(shí)間交織的精細(xì)程度通過指定幀數(shù)進(jìn)行控制,到達(dá)限制后生成對應(yīng)的元數(shù)據(jù)以及媒體和流化數(shù)據(jù)并分別進(jìn)行寫入;b4、寫入文件的同時(shí)判斷已有的舊文件是否過時(shí)需要?jiǎng)h除,若是則刪除之以防過量占用系統(tǒng)硬盤資源。
所述的步驟c包括c1、媒體數(shù)據(jù)存儲(chǔ)過程中自動(dòng)生成RTP包,寫入數(shù)據(jù)的同時(shí)由組播模塊進(jìn)行組播播放;c2、每一個(gè)單播請求分別讀取自己的媒體數(shù)據(jù)且讀取同一文件的所有請求共享文件緩存;
c3、文件讀取過程中首先讀取MOOV信息,再根據(jù)讀取的信息從文件MDAT中讀取相應(yīng)的實(shí)際電視數(shù)據(jù),當(dāng)讀取最新文件時(shí),采用讀寫鎖實(shí)現(xiàn)讀寫同步;在讀寫同步處理中,對讀取當(dāng)前正在寫入文件的客戶請求,在對應(yīng)的數(shù)據(jù)讀取模塊中設(shè)有讀寫標(biāo)識(shí)位,寫入時(shí)進(jìn)行統(tǒng)一設(shè)定,每個(gè)請求模塊讀取數(shù)據(jù)后分別清除;c4、文件切換時(shí),在前一文件的音視頻全部數(shù)據(jù)讀取完成后再切換到后一文件進(jìn)行讀取,并在讀取緩存中分別完成不同數(shù)據(jù)的拼接。
所述的步驟d包括單組播的數(shù)據(jù)包都是由寫入的運(yùn)動(dòng)音視頻標(biāo)準(zhǔn)格式文件時(shí)文件模塊統(tǒng)一生成的,具有相同的時(shí)間基準(zhǔn),單組播切換時(shí)利用此時(shí)間基準(zhǔn)進(jìn)行定位;且組播數(shù)據(jù)包比新生成文件的流化數(shù)據(jù)包時(shí)間稍晚,以保證組播轉(zhuǎn)入單播時(shí)請求的數(shù)據(jù)是此時(shí)間媒體數(shù)據(jù)是可播放的。
所述的步驟e包括快進(jìn)快退過程中不播放音頻數(shù)據(jù),而只播放媒體數(shù)據(jù)中的視頻關(guān)鍵幀,快進(jìn)快退的速度通過調(diào)整關(guān)鍵幀的播放比率和一幀的持續(xù)時(shí)間進(jìn)行控制,并由數(shù)據(jù)發(fā)送模塊通過播放狀態(tài)參數(shù)的計(jì)錄進(jìn)行控制。
有益效果在上述的解決方案中,轉(zhuǎn)碼服務(wù)器和具體的媒體服務(wù)器是獨(dú)立的,兩者之間的交互只有數(shù)據(jù)請求和分發(fā),而媒體服務(wù)器不關(guān)心具體的媒體數(shù)據(jù)內(nèi)容。系統(tǒng)在這種結(jié)構(gòu)下工作,主要有以下兩個(gè)優(yōu)點(diǎn),首先,媒體服務(wù)器的工作方式不受轉(zhuǎn)碼服務(wù)器的約束,兩者可以獨(dú)立的進(jìn)行實(shí)現(xiàn)和更改,如編碼方式等;其次,一個(gè)轉(zhuǎn)碼服務(wù)器可以服務(wù)一套或多套電視節(jié)目,同時(shí)向單個(gè)或多個(gè)媒體服務(wù)器分發(fā)數(shù)據(jù),在具體實(shí)現(xiàn)中保證了轉(zhuǎn)碼服務(wù)器和媒體服務(wù)器既可以在同一處又可以分級(jí)服務(wù)。
在數(shù)據(jù)接收存儲(chǔ)實(shí)體中數(shù)據(jù)的解析和文件的生成是獨(dú)立的,如此兩者可以獨(dú)立的實(shí)現(xiàn),更重要的是解析部分不會(huì)受文件分割中處理緩沖的影響。所有的文件存儲(chǔ)和讀取有一個(gè)單獨(dú)的管理模塊進(jìn)行處理,這樣就能夠保證讀寫數(shù)據(jù)同步并在正確的位置(內(nèi)存或硬盤)進(jìn)行讀寫,而且能夠集中管理流程處理的邏輯。
媒體服務(wù)器對客戶端進(jìn)行服務(wù)時(shí)提供了針對所有客戶的實(shí)時(shí)組播和針對單個(gè)客戶的單播,因此客戶既能收看實(shí)時(shí)節(jié)目又可以選擇自己喜歡的已播放欄目,同時(shí)組播方式大大增加了系統(tǒng)并發(fā)服務(wù)的用戶數(shù)。兩種播放方式的媒體數(shù)據(jù)是基于同一時(shí)間基準(zhǔn)的,保證了兩者之間可以自由平滑切換;對用戶來說,他們可以隨心所欲的采用任一播放方式觀看任意已有的電視節(jié)目,而具體的實(shí)現(xiàn)方式是完全透明的。
上述的系統(tǒng)結(jié)構(gòu)不僅能服務(wù)單個(gè)電視節(jié)目,還可以服務(wù)多套節(jié)目,只需增加相應(yīng)的功能模塊即可。理論上,在服務(wù)器性能允許的條件下,單臺(tái)服務(wù)器可以服務(wù)任意套數(shù)的電視節(jié)目。
圖1為媒體服務(wù)器的結(jié)構(gòu)框圖;圖2為MP4存儲(chǔ)文件的構(gòu)造方式示意圖;圖3為服務(wù)器同步讀寫操作的服務(wù)流程;圖4為單組播切換說明示例圖。
具體實(shí)施例方式
本發(fā)明的核心是在當(dāng)前的寬帶互聯(lián)網(wǎng)中構(gòu)建一個(gè)對電視媒體數(shù)據(jù)進(jìn)行VOD播放的系統(tǒng),使客戶能夠主動(dòng)控制電視的播放時(shí)間點(diǎn)和播放方式。首先我們利用轉(zhuǎn)碼服務(wù)器對已有的實(shí)時(shí)電視節(jié)目進(jìn)行轉(zhuǎn)碼以降低碼率,從而在有限的帶寬條件下最大可能的提高媒體播放質(zhì)量;然后通過媒體服務(wù)器向客戶提供具體的播放和操作服務(wù),而服務(wù)的電視媒體數(shù)據(jù)由數(shù)據(jù)接收存儲(chǔ)實(shí)體向轉(zhuǎn)碼服務(wù)器請求并接收和存儲(chǔ)于本地。整個(gè)系統(tǒng)的結(jié)構(gòu)框架大致如圖1所示,下面對圖1中的各個(gè)實(shí)體及功能分別進(jìn)行說明。
TVOD轉(zhuǎn)碼服務(wù)器該模塊主要包括電視媒體請求處理、轉(zhuǎn)碼功能實(shí)現(xiàn)和數(shù)據(jù)分發(fā)三部分。電視媒體請求部分負(fù)責(zé)向當(dāng)前的電視系統(tǒng)請求指定的一套或多套電視節(jié)目,從而獲取真正的電視媒體數(shù)據(jù)流(通常是TS流格式);轉(zhuǎn)碼功能部分則進(jìn)行具體的數(shù)據(jù)解析、轉(zhuǎn)碼和打包封裝,首先解析模塊將給定格式的媒體數(shù)據(jù)解析出媒體清流數(shù)據(jù)并交給轉(zhuǎn)碼,轉(zhuǎn)碼處理后由打包模塊根據(jù)數(shù)據(jù)的相關(guān)信息對媒體數(shù)據(jù)進(jìn)行封裝(RTP包);數(shù)據(jù)分發(fā)則監(jiān)聽后端服務(wù)器的請求并進(jìn)行處理,然后將封裝后的數(shù)據(jù)包分發(fā)給請求的服務(wù)器。
數(shù)據(jù)接收存儲(chǔ)實(shí)體該模塊主要包括RTP數(shù)據(jù)解析、MP4文件存儲(chǔ)讀取和文件管理三部分。RTP數(shù)據(jù)解析將收到的RTP媒體數(shù)據(jù)包解析成指定的格式,然后轉(zhuǎn)交給MP4文件存儲(chǔ)讀取模塊,MP4文件存儲(chǔ)讀取模塊除了將數(shù)據(jù)存儲(chǔ)為文件外還負(fù)責(zé)單個(gè)文件的具體組織和讀寫同步,而具體RTP數(shù)據(jù)包的接收和其他部分之間的交互控制由管理模塊完成。單個(gè)數(shù)據(jù)接收實(shí)體對應(yīng)一套電視節(jié)目,如果需要服務(wù)多套節(jié)目,則對應(yīng)多個(gè)實(shí)體。
請求共享數(shù)據(jù)讀取接口該部分是數(shù)據(jù)存儲(chǔ)管理和服務(wù)模塊之間的接口,它提供了對指定數(shù)據(jù)的讀取,并對服務(wù)模塊屏蔽了文件的存儲(chǔ)分割細(xì)節(jié),即文件的讀取拼接在這里完成。該部分和請求的客戶一一對應(yīng),多個(gè)請求的共享文件處理由MP4文件存儲(chǔ)模塊負(fù)責(zé)。
數(shù)據(jù)組播模塊負(fù)責(zé)將重新處理后的RTP數(shù)據(jù)以RTP包的進(jìn)行組播,而組播的數(shù)據(jù)直接從數(shù)據(jù)管理模塊獲取,這樣能夠保證數(shù)據(jù)的連續(xù)性(只要接收到數(shù)據(jù)就有組播數(shù)據(jù)),不用與單播請求競爭資源。此模塊對應(yīng)于一套節(jié)目,參數(shù)是可配置的,如是否要組播,組播所需的參數(shù)等。
單播請求處理和數(shù)據(jù)分發(fā)模塊這兩部分主要處理客戶的單播請求,請求處理部分主要是接收客戶的RTSP請求,然后根據(jù)請求對分發(fā)模塊進(jìn)行必要的控制并返回相應(yīng)的RTSP響應(yīng);數(shù)據(jù)分發(fā)模塊從數(shù)據(jù)讀取接口獲取數(shù)據(jù),然后根據(jù)請求利用RTP/RTCP協(xié)議分發(fā)數(shù)據(jù)包給對應(yīng)的客戶端,而客戶端和服務(wù)器的通信由請求模塊完成。
整個(gè)系統(tǒng)主要由兩個(gè)流程,一個(gè)是轉(zhuǎn)碼后數(shù)據(jù)請求接收存儲(chǔ)流程,另一個(gè)是媒體服務(wù)器數(shù)據(jù)服務(wù)流程,下面對這兩個(gè)過程分別進(jìn)行說明。
數(shù)據(jù)請求接收存儲(chǔ)流程假設(shè)轉(zhuǎn)碼服務(wù)器已經(jīng)開始正常工作,首先數(shù)據(jù)接收存儲(chǔ)實(shí)體向轉(zhuǎn)碼服務(wù)器請求指定節(jié)目的數(shù)據(jù),然后轉(zhuǎn)碼服務(wù)器的分發(fā)模塊通過請求認(rèn)證并向后端服務(wù)器發(fā)送對應(yīng)的請求響應(yīng);如果認(rèn)證通過則轉(zhuǎn)碼服務(wù)器開始對請求的媒體服務(wù)器分發(fā)轉(zhuǎn)碼后的RTP數(shù)據(jù)包,而數(shù)據(jù)接收存儲(chǔ)實(shí)體收到響應(yīng)后也開始接收數(shù)據(jù);收到的數(shù)據(jù)包首先交給RTP數(shù)據(jù)解析模塊處理為幀單位的媒體數(shù)據(jù)和相關(guān)信息,然后再由管理模塊交給MP4文件存儲(chǔ)模塊生成MP4文件以持久存儲(chǔ);創(chuàng)建媒體數(shù)據(jù)MP4文件的同時(shí)將新收到的媒體數(shù)據(jù)生成對應(yīng)的RTP數(shù)據(jù)包,然后由管理模塊將最新的RTP數(shù)據(jù)包交給組播模塊,而組播模塊根據(jù)RTP包中的時(shí)間信息依次將它們進(jìn)行組播。
媒體服務(wù)器數(shù)據(jù)服務(wù)流程媒體服務(wù)器存儲(chǔ)媒體數(shù)據(jù)以后就可以提供VOD服務(wù)(此處指單播服務(wù))。首先由客戶端向媒體服務(wù)器發(fā)送RTSP請求,其格式為rtsp://ipaddress/objectInfo/programId,其中ipaddress指媒體服務(wù)器的IP地址,objectInfo代表客戶端的有效信息,programId代表客戶端欲點(diǎn)播的電視節(jié)目號(hào),另外,RTSP請求必須攜帶欲播放節(jié)目的起止時(shí)間(由點(diǎn)播界面提供);媒體服務(wù)器收到請求后,分配相應(yīng)的數(shù)據(jù)分發(fā)模塊和數(shù)據(jù)讀取接口,并根據(jù)請求的節(jié)目號(hào)和時(shí)間信息定位起始播放的媒體數(shù)據(jù),此時(shí)點(diǎn)播請求處理模塊根據(jù)分配狀態(tài)和媒體數(shù)據(jù)的定位情況給客戶端響應(yīng);單播數(shù)據(jù)分發(fā)模塊就開始順序讀取數(shù)據(jù)并利用RTP/RTCP協(xié)議發(fā)送給客戶端,直到接收到客戶其它操作請求或播放完成;在播放過程中,如果客戶發(fā)出了其它操作(如快進(jìn)快退等)請求,則單播數(shù)據(jù)分發(fā)模塊進(jìn)行響應(yīng)并按客戶指定的方式進(jìn)行播放;播放結(jié)束后,媒體服務(wù)器自動(dòng)關(guān)閉連接釋放資源,終止此次服務(wù)。上述是對單個(gè)客戶的請求過程,實(shí)際上所有的請求是按以上過程并發(fā)處理并共享相同的資源。
整個(gè)系統(tǒng)的架構(gòu)和服務(wù)流程中使用了許多關(guān)鍵的技術(shù)方法,主要有電視媒體數(shù)據(jù)的同步、文件的組織、媒體數(shù)據(jù)的共享緩沖和讀寫同步、單播操作的切換處理、單組播的切換、快進(jìn)快退實(shí)現(xiàn)等,下面對這些方法的原理分別進(jìn)行具體的說明。
媒體數(shù)據(jù)同步轉(zhuǎn)碼服務(wù)器和媒體服務(wù)器之間、媒體服務(wù)器和客戶端都是通過RTP協(xié)議傳輸具體的媒體數(shù)據(jù)的,而RTP的時(shí)間戳是根據(jù)轉(zhuǎn)碼接收到的媒體數(shù)據(jù)節(jié)目時(shí)間確定的,并以絕對時(shí)間來表示。顯然RTP標(biāo)準(zhǔn)中的32位的時(shí)間戳值不能滿足這個(gè)要求,因此我們采用了RTP協(xié)議的擴(kuò)展位,使總的時(shí)間表示達(dá)到64位。在整個(gè)服務(wù)過程中,所有媒體數(shù)據(jù)的時(shí)間均采用此值進(jìn)行處理,這就保證了對單個(gè)節(jié)目媒體數(shù)據(jù)時(shí)間處理的一致性。
MP4文件組織在TVOD中,由于電視節(jié)目流不斷到達(dá),節(jié)目數(shù)據(jù)的存儲(chǔ)要隨之更新,這要求數(shù)據(jù)文件能夠動(dòng)態(tài)實(shí)時(shí)更新內(nèi)容,下面結(jié)合附圖2說明TVOD中文件的具體組織形式。當(dāng)前采用MP4文件形式持久化存儲(chǔ)數(shù)據(jù),并通過二級(jí)管理達(dá)到動(dòng)態(tài)跟蹤的單個(gè)文件效果。第一級(jí)管理是文件管理模塊,它負(fù)責(zé)文件分割并將媒體數(shù)據(jù)按時(shí)間順序分別存儲(chǔ)于不同文件中,對外則是一個(gè)封裝的動(dòng)態(tài)更新大文件;當(dāng)數(shù)據(jù)不斷到達(dá)時(shí),文件管理模塊負(fù)責(zé)將數(shù)據(jù)交給最新文件或開辟新文件進(jìn)行存儲(chǔ),同時(shí)判斷是否有文件“過時(shí)”進(jìn)行必要的刪除操作,而當(dāng)文件需要服務(wù)時(shí),管理模塊定位到正確的文件上讀取數(shù)據(jù),一個(gè)文件結(jié)束后,管理模塊自動(dòng)切換到下一個(gè)文件。第二級(jí)管理則是對單個(gè)固定的MP4文件的存儲(chǔ)和讀取,它根據(jù)MP4文件的特點(diǎn)將RTP解析后的媒體數(shù)據(jù)及相關(guān)信息生成對應(yīng)的元數(shù)據(jù)MOOV和媒體數(shù)據(jù)MDAT,且兩種數(shù)據(jù)分別存儲(chǔ)于不同的文件中,因此數(shù)據(jù)寫入時(shí)不必更新已寫入文件的內(nèi)容,同時(shí)寫入文件過程中已存在內(nèi)容數(shù)據(jù)的讀取能夠順利完成;為了提高數(shù)據(jù)讀寫的效率,將數(shù)據(jù)量較小的MOOV整個(gè)文件數(shù)據(jù)緩存于系統(tǒng)內(nèi)存中,直至文件結(jié)束時(shí)將其寫入硬盤,而MDAT只緩沖部分的數(shù)據(jù)內(nèi)容,當(dāng)?shù)竭_(dá)限制時(shí)將緩沖數(shù)據(jù)刷入硬盤,同時(shí)緩存中的數(shù)據(jù)是可讀取服務(wù)的。
MP4文件切換由上段MP4文件組織可知,在文件數(shù)據(jù)服務(wù)時(shí),具體的數(shù)據(jù)按時(shí)間分別存儲(chǔ)于不同的文件中,而數(shù)據(jù)播放時(shí)需要獲取時(shí)間連續(xù)的內(nèi)容,因此服務(wù)過程中需要時(shí)間MP4文件直接的無縫切換和拼接。實(shí)現(xiàn)中我們通過三個(gè)方面實(shí)現(xiàn)這一點(diǎn),首先是在文件切割過程中使音視頻數(shù)據(jù)在每個(gè)文件結(jié)束處在時(shí)間上盡量對齊;然后在文件讀取過程中只在前一個(gè)文件的音視頻數(shù)據(jù)全部結(jié)束后再切換到下一個(gè)文件進(jìn)行讀取,如此可降低文件切換的復(fù)雜度;最后對讀出的數(shù)據(jù)進(jìn)行緩沖,在緩存區(qū)中數(shù)據(jù)將無縫連接起來(對客戶端來說切換是透明的),其中緩沖區(qū)大小與文件末端音視頻的對齊程度成正比。
共享緩沖和讀寫同步我們知道在服務(wù)過程中多個(gè)不同的客戶端可能同時(shí)請求讀取同一個(gè)數(shù)據(jù)文件,因此多個(gè)客戶端可以共享同一個(gè)文件對象;而且不同的客戶端可能同時(shí)讀取的位置非常接近,這樣它們可以通過緩存已讀取的數(shù)據(jù)共享數(shù)據(jù)內(nèi)容,而不是從硬盤重復(fù)讀取,如此便可增加系統(tǒng)的數(shù)據(jù)吞吐量。在圖1中,每個(gè)客戶端對應(yīng)一個(gè)單播數(shù)據(jù)分發(fā)模塊,而每個(gè)文件對應(yīng)一個(gè)文件對象,客戶端共享文件通過兩者之間的接口關(guān)聯(lián)實(shí)現(xiàn)。如果讀取的數(shù)據(jù)是當(dāng)前正在寫入的文件,在要求讀寫之間進(jìn)行同步,即數(shù)據(jù)讀取位置不能超過寫數(shù)據(jù)的文件位置且讀取數(shù)據(jù)內(nèi)容正確。已知媒體數(shù)據(jù)是以MP4文件形式進(jìn)行存儲(chǔ),而MP4文件分為元數(shù)據(jù)(MOOV)和媒體數(shù)據(jù)(MDAT)兩部分構(gòu)成,其中元數(shù)據(jù)存儲(chǔ)了媒體數(shù)據(jù)索引等相關(guān)信息,而媒體數(shù)據(jù)存儲(chǔ)了具體的電視媒體數(shù)據(jù)和流化數(shù)據(jù)。下面我們通過圖3對讀取過程中數(shù)據(jù)同步的過程進(jìn)行了具體的說明,同步主要發(fā)生在內(nèi)存中正在寫入的數(shù)據(jù),因此我們主要對這一特殊過程進(jìn)行必要的補(bǔ)充說明。首先對媒體數(shù)據(jù)的位置進(jìn)行讀取(由于我們的實(shí)現(xiàn)中MOOV數(shù)據(jù)全部緩沖在內(nèi)存中,不存在同步問題),然后根據(jù)讀取的索引信息先后獲取相應(yīng)的流化數(shù)據(jù)和媒體數(shù)據(jù)并組包進(jìn)行發(fā)送。在讀取流化數(shù)據(jù)和媒體數(shù)據(jù)過程中,由于隨時(shí)都有可能向硬盤刷入數(shù)據(jù),而數(shù)據(jù)讀取到組包過程并不是一次完成的,因此其中的任一過程需要判斷數(shù)據(jù)的位置。
單組播切換為了提高系統(tǒng)的容量系統(tǒng)提供了組播功能,同時(shí)要求單組播之間能夠自由平滑的切換,在實(shí)現(xiàn)中通過以下幾點(diǎn)完成此功能。組播時(shí)間與最新數(shù)據(jù)時(shí)間之間存在一個(gè)很小(可調(diào))偏差以緩沖數(shù)據(jù)的波動(dòng);當(dāng)單播時(shí)間到達(dá)組播時(shí)間后通知客戶端加入組播,并由客戶端自動(dòng)關(guān)閉單播播放;如果當(dāng)前在組播,在客戶端進(jìn)行允許的操作后將會(huì)退出組播并請求單播播放,且請求的單播時(shí)間稍小于收到的最后一個(gè)組播包時(shí)間,如此收到單播數(shù)據(jù)后可以在緩沖中將數(shù)據(jù)完全拼接起來,圖4給出了一個(gè)切換的實(shí)例。
快進(jìn)快退實(shí)現(xiàn)當(dāng)前的TVOD系統(tǒng)中完全支持多種速度的快進(jìn)快退播放方式,快進(jìn)快退操作功能在圖1中的單播數(shù)據(jù)分發(fā)模塊完成,該模塊從文件中讀取數(shù)據(jù)時(shí)獲取正常播放時(shí)間,而后根據(jù)請求的速度累計(jì)快進(jìn)或快退的時(shí)間,在發(fā)包時(shí)減去或加上此累計(jì)時(shí)間;當(dāng)客戶端重新請求時(shí)則將此值清零。在快進(jìn)快退播放過程中,服務(wù)器自動(dòng)屏蔽音頻數(shù)據(jù),視頻只播放關(guān)鍵幀,而播放關(guān)鍵幀的密度由給定的播放速度和媒體數(shù)據(jù)中關(guān)鍵幀的密度共同決定,從而保證系統(tǒng)的容量和客戶端的播放質(zhì)量。
以上所述,僅為本發(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.一種基于互聯(lián)網(wǎng)的電視流媒體數(shù)據(jù)實(shí)時(shí)傳輸和服務(wù)裝置,其特征在于該裝置包括轉(zhuǎn)碼服務(wù)器(1)、數(shù)據(jù)接收存儲(chǔ)實(shí)體(2)、媒體服務(wù)器(3);其中數(shù)據(jù)接收實(shí)體(2)是媒體服務(wù)器(3)的數(shù)據(jù)前端,兩者位于同一物理服務(wù)器上,而與轉(zhuǎn)碼服務(wù)器(1)通過因特網(wǎng)連接并執(zhí)行實(shí)時(shí)傳輸協(xié)議;所說的轉(zhuǎn)碼服務(wù)器(1)包括一個(gè)順序串聯(lián)連接的電視媒體數(shù)據(jù)接入單元(1-1)、一個(gè)媒體數(shù)據(jù)實(shí)時(shí)轉(zhuǎn)碼單元(1-2)、一個(gè)數(shù)據(jù)封裝單元(1-3)和一個(gè)數(shù)據(jù)分發(fā)單元(1-4),其中接入單元(1-1)實(shí)時(shí)接收多路不同外部電視媒體數(shù)據(jù),均依次串行傳遞給轉(zhuǎn)碼單元(1-3)和封裝單元(1-4),最終由分發(fā)單元(1-4)按不同請求接收單元(2-1)分別分發(fā)給后端數(shù)據(jù)接收實(shí)體(2-1);所說的數(shù)據(jù)接收存儲(chǔ)實(shí)體(2)包括若干請求接收單元(2-1)、若干數(shù)據(jù)解析單元(2-2)、若干文件生成單元(2-3)、一個(gè)數(shù)據(jù)文件管理單元(2-4),其中請求接收單元(2-1)獲取電視媒體流,然后由解析單元(2-2)將解析后的數(shù)據(jù)交給文件生成單元(2-3)進(jìn)行持久化存儲(chǔ),而文件管理單元(2-4)控制整個(gè)業(yè)務(wù)流程,并向特定的媒體服務(wù)器(3)提供同步文件數(shù)據(jù);所說的媒體服務(wù)器(3)主要包括一個(gè)媒體數(shù)據(jù)流化單元(3-1)、一個(gè)操作切換控制單元(3-2)、若干點(diǎn)播請求接入單元(3-3)、若干數(shù)據(jù)發(fā)送單元(3-4)和一個(gè)直播服務(wù)單元(3-5),其中請求接入單元(3-2)接入用戶點(diǎn)播請求并初始化數(shù)據(jù)流化單元(3-1)、數(shù)據(jù)發(fā)送單元(3-4)和操作切換單元(3-2),然后操作切換單元(3-2)控制流化單元(3-1)從文件管理單元(2-4)獲取媒體數(shù)據(jù)并進(jìn)行流化,由發(fā)送單元(3-4)傳送給客戶端,而直播服務(wù)單元(3-5)的媒體數(shù)據(jù)包直接由接收存儲(chǔ)實(shí)體(2)錄制文件時(shí)主動(dòng)流化傳遞。
2.一種如權(quán)利要求1所述的基于互聯(lián)網(wǎng)的電視流媒體數(shù)據(jù)實(shí)時(shí)傳輸和服務(wù)方法,其特征在于該方法包括下列步驟a、轉(zhuǎn)碼服務(wù)器接收電視媒體數(shù)據(jù),將媒體數(shù)據(jù)按時(shí)間順序進(jìn)行解析,然后將實(shí)際的媒體數(shù)據(jù)送往解碼器和編碼器完成轉(zhuǎn)碼,并以實(shí)時(shí)傳輸協(xié)議包的形式分發(fā)給請求的數(shù)據(jù)接收存儲(chǔ)實(shí)體,b、數(shù)據(jù)接收存儲(chǔ)實(shí)體將實(shí)時(shí)傳輸協(xié)議數(shù)據(jù)包解析為幀數(shù)據(jù),并存儲(chǔ)為可實(shí)時(shí)增刪和使用的運(yùn)動(dòng)音視頻標(biāo)準(zhǔn)格式文件,c、通過同步文件對媒體數(shù)據(jù)的流化讀取,并利用緩存機(jī)制實(shí)現(xiàn)媒體音視頻數(shù)據(jù)的無縫拼接,d、根據(jù)客戶的操作執(zhí)行必要的單組播切換,e、根據(jù)客戶的請求執(zhí)行播放、暫停、快進(jìn)、快退、前跳、后跳、停止等各種操作和播放方式之間的切換。
3.根據(jù)權(quán)利要求2所述的基于互聯(lián)網(wǎng)的電視流媒體數(shù)據(jù)實(shí)時(shí)傳輸和服務(wù)方法,其特征在于在步驟a中,在轉(zhuǎn)碼數(shù)據(jù)服務(wù)器中,媒體數(shù)據(jù)的會(huì)話描述協(xié)議信息由編碼器根據(jù)給定的設(shè)置自動(dòng)生成,并在后端服務(wù)器請求時(shí)分發(fā)給請求的服務(wù)器。
4.根據(jù)權(quán)利要求2所述的基于互聯(lián)網(wǎng)的電視流媒體數(shù)據(jù)實(shí)時(shí)傳輸和服務(wù)方法,其特征在于所述的步驟b包括b1、媒體文件以元數(shù)據(jù)信息和媒體數(shù)據(jù)分開的運(yùn)動(dòng)音視頻標(biāo)準(zhǔn)格式文件方式進(jìn)行存儲(chǔ),兩者均以預(yù)設(shè)置的固定時(shí)間段進(jìn)行分割;b2、當(dāng)前正在寫入的元數(shù)據(jù)和媒體數(shù)據(jù)首先緩存在內(nèi)存中,當(dāng)?shù)竭_(dá)一定的限制后再持久化寫入硬盤。
5.根據(jù)權(quán)利要求4所述的基于互聯(lián)網(wǎng)的電視流媒體數(shù)據(jù)實(shí)時(shí)傳輸和服務(wù)方法,其特征在于所述的步驟b1包括不同媒體的音頻或視頻數(shù)據(jù)根據(jù)其類型獨(dú)立地進(jìn)行文件分割和讀取拼接。
6.根據(jù)權(quán)利要求4所述的基于互聯(lián)網(wǎng)的電視流媒體數(shù)據(jù)實(shí)時(shí)傳輸和服務(wù)方法,其特征在于所述的步驟b2包括元數(shù)據(jù)緩存和實(shí)際媒體數(shù)據(jù)緩存的策略是獨(dú)立的,兩者可分別配置,且寫入硬盤時(shí)存儲(chǔ)在不同的文件中。
7.根據(jù)權(quán)利要求4或6所述的基于互聯(lián)網(wǎng)的電視流媒體數(shù)據(jù)實(shí)時(shí)傳輸和服務(wù)方法,其特征在于所述的步驟b2還包括給定時(shí)間段的元數(shù)據(jù)全部緩存在內(nèi)存中,且新數(shù)據(jù)采用插入的方式添加到已有數(shù)據(jù)中,而對應(yīng)的媒體數(shù)據(jù)通過時(shí)間交織采用追加的方式添加到已寫入文件或緩存的后端;時(shí)間交織的精細(xì)程度通過指定幀數(shù)進(jìn)行控制,到達(dá)限制后生成對應(yīng)的元數(shù)據(jù)以及媒體和流化數(shù)據(jù)并分別進(jìn)行寫入。
8.根據(jù)權(quán)利要求2所述的基于互聯(lián)網(wǎng)的電視流媒體數(shù)據(jù)實(shí)時(shí)傳輸和服務(wù)方法,其特征在于所述的步驟c包括c1、媒體數(shù)據(jù)存儲(chǔ)過程中自動(dòng)生成實(shí)時(shí)傳輸協(xié)議包,寫入數(shù)據(jù)的同時(shí)由組播模塊進(jìn)行組播播放;c2、每一個(gè)單播請求分別讀取自己的媒體數(shù)據(jù)且讀取同一文件的所有請求共享文件緩存;c3、文件讀取過程中首先讀取元數(shù)據(jù)信息,再根據(jù)讀取的信息從文件媒體數(shù)據(jù)中讀取相應(yīng)的實(shí)際電視數(shù)據(jù),當(dāng)讀取最新文件時(shí),采用讀寫鎖實(shí)現(xiàn)讀寫同步;c4、文件切換時(shí),在前一文件的音視頻全部數(shù)據(jù)讀取完成后再切換到后一文件進(jìn)行讀取,并在讀取緩存中分別完成不同數(shù)據(jù)的拼接。
9.根據(jù)權(quán)利要求8所述的基于互聯(lián)網(wǎng)的電視流媒體數(shù)據(jù)實(shí)時(shí)傳輸和服務(wù)方法,其特征在于所述的步驟c3包括在讀寫同步處理中,對讀取當(dāng)前正在寫入文件的客戶請求,在對應(yīng)的處理模塊中設(shè)有讀寫標(biāo)識(shí)位,寫入時(shí)進(jìn)行統(tǒng)一設(shè)定,每個(gè)請求模塊讀取數(shù)據(jù)后分別清除。
10.根據(jù)權(quán)利要求2所述的基于互聯(lián)網(wǎng)的電視流媒體數(shù)據(jù)實(shí)時(shí)傳輸和服務(wù)方法,其特征在于所述的步驟d包括單組播的數(shù)據(jù)包都是由寫入的運(yùn)動(dòng)音視頻標(biāo)準(zhǔn)格式文件時(shí)文件模塊統(tǒng)一生成的,具有相同的時(shí)間基準(zhǔn),單組播切換時(shí)利用此時(shí)間基準(zhǔn)進(jìn)行定位。
11.根據(jù)權(quán)利要求2所述的基于互聯(lián)網(wǎng)的電視流媒體數(shù)據(jù)實(shí)時(shí)傳輸和服務(wù)方法,其特征在于所述的步驟e包括快進(jìn)快退過程中不播放音頻數(shù)據(jù),而只播放媒體數(shù)據(jù)中的視頻關(guān)鍵幀,快進(jìn)快退的速度通過調(diào)整關(guān)鍵幀的播放比率和一幀的持續(xù)時(shí)間進(jìn)行控制,并由數(shù)據(jù)發(fā)送模塊通過播放狀態(tài)參數(shù)的計(jì)錄進(jìn)行控制。
全文摘要
基于互聯(lián)網(wǎng)的電視流媒體數(shù)據(jù)實(shí)時(shí)傳輸和服務(wù)裝置及方法在互聯(lián)網(wǎng)中,利用轉(zhuǎn)碼服務(wù)器,將直接接收的電視媒體數(shù)據(jù)進(jìn)行實(shí)時(shí)轉(zhuǎn)碼,然后向各個(gè)小區(qū)媒體服務(wù)器分發(fā)轉(zhuǎn)碼后的多媒體數(shù)據(jù),再由小區(qū)媒體服務(wù)器對數(shù)據(jù)進(jìn)行存儲(chǔ),同時(shí)向用戶提供電視媒體點(diǎn)播服務(wù)和實(shí)時(shí)直播服務(wù),且兩種服務(wù)可無縫切換,從而在互聯(lián)網(wǎng)中實(shí)現(xiàn)了可以提供服務(wù)質(zhì)量保證的實(shí)時(shí)電視多媒體業(yè)務(wù)的傳輸和服務(wù)。該裝置包括轉(zhuǎn)碼服務(wù)器(1)、數(shù)據(jù)接收存儲(chǔ)實(shí)體(2)、媒體服務(wù)器(3);其中數(shù)據(jù)接收實(shí)體(2)是媒體服務(wù)器(3)的數(shù)據(jù)前端,兩者位于同一物理服務(wù)器上,而與轉(zhuǎn)碼服務(wù)器(1)通過因特網(wǎng)連接并執(zhí)行實(shí)時(shí)傳輸協(xié)議。
文檔編號(hào)H04L29/06GK101083756SQ20071002059
公開日2007年12月5日 申請日期2007年3月14日 優(yōu)先權(quán)日2007年3月14日
發(fā)明者李俊, 王子磊, 盛延敏, 李靖, 許書彬, 殷保群 申請人:中國科學(xué)技術(shù)大學(xué)