專利名稱:媒體流數(shù)據(jù)處理方法及其裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域中的流媒體技術(shù),尤其涉及媒體流數(shù)據(jù)處理方法及其裝置。
背景技術(shù):
目前,市場上視頻監(jiān)控產(chǎn)品的生產(chǎn)廠家較多,而不同的廠家都使用自己私有的碼 流格式,沒有統(tǒng)一的標(biāo)準(zhǔn),這使得不同廠家的產(chǎn)品難以整合。如果在未知接入廠家碼流格式 的情況下,就很難實現(xiàn)媒體數(shù)據(jù)的統(tǒng)一存儲和回放。對于第三方設(shè)備,在大多數(shù)情況下如果 不能知道其具體的碼流格式,只能使用設(shè)備本身的本地存儲方案來解決?,F(xiàn)有的解決方案一般有兩種,一種是在已知碼流格式的情況下,這是一種最好的 情況,只需要解析對方碼流,獲取到其中I幀組(即Group of Pictures,簡稱GOP)的信 息,然后分別寫入到具體存儲格式的相應(yīng)結(jié)構(gòu)中;在回放時可以通過分析存儲格式中的時 間戳,并利用I幀組信息進(jìn)行回放的控制,從而達(dá)到和原播放碼流一樣的效果。另一種是在未知碼流格式的情況下,由于無法解析對方碼流,只能直接把原碼流 保存下來。這種情況下,在回放的時候就難以控制發(fā)包的大小和發(fā)包的速度,無法還原碼 流,結(jié)果可能導(dǎo)致出現(xiàn)圖像跳幀、延時或者無法解析圖像。發(fā)明人在實現(xiàn)本發(fā)明的過程中,發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題在未知碼流格式的情況下,無法根據(jù)回放需要而存儲音視頻碼流,也無法對音視 頻碼流的回放進(jìn)行控制,以致無法還原音視頻碼流。
發(fā)明內(nèi)容
本發(fā)明提供了一種媒體流處理方法及其裝置,用以解決在未知媒體流格式的情況 下,現(xiàn)有技術(shù)無法處理媒體流的問題。本發(fā)明提供的一種媒體流處理方法,包括接收媒體流數(shù)據(jù)包,并記錄每個數(shù)據(jù)包的接收時間和數(shù)據(jù)包的長度;其中,每當(dāng)設(shè) 定時長到達(dá)時,將在該時長內(nèi)接收到的數(shù)據(jù)包以及所記錄的數(shù)據(jù)包接收時間信息和數(shù)據(jù)包 長度信息,作為一個數(shù)據(jù)單元存儲至媒體文件的數(shù)據(jù)區(qū)域。上述方法中,在將數(shù)據(jù)單元存儲至媒體文件的數(shù)據(jù)區(qū)域中時,將數(shù)據(jù)包接收時間 信息和數(shù)據(jù)包長度信息設(shè)置于相應(yīng)數(shù)據(jù)包的頭區(qū)域,或設(shè)置于相應(yīng)數(shù)據(jù)包負(fù)荷部分的頭區(qū) 域中。上述方法中,將數(shù)據(jù)單元存儲至媒體文件的數(shù)據(jù)區(qū)域時,還包括將數(shù)據(jù)單元的總 長度信息設(shè)置于數(shù)據(jù)單元的頭區(qū)域;或/和,將數(shù)據(jù)單元中包含的數(shù)據(jù)包數(shù)量信息記錄在 所述數(shù)據(jù)區(qū)域中。上述方法中,所述媒體文件還包括索引區(qū)域,該方法還包括以所述設(shè)定時長的 時間單位作為索引,將每個設(shè)定時長內(nèi)接收到的數(shù)據(jù)包數(shù)量作為索引項設(shè)置于所述索引區(qū) 域。
上述方法,還包括當(dāng)需要播放所述媒體文件時,從媒體文件數(shù)據(jù)區(qū)域的數(shù)據(jù)單元 中獲取媒體流數(shù)據(jù)包,并將獲取到的數(shù)據(jù)包發(fā)送至媒體播放裝置,其中,按照數(shù)據(jù)包的接收 時間順序,在每個所述設(shè)定時長內(nèi)發(fā)送從相應(yīng)數(shù)據(jù)單元中獲取到的媒體流數(shù)據(jù)包。上述方法中,在一個設(shè)定時長內(nèi)發(fā)送從相應(yīng)數(shù)據(jù)單元中獲取到的媒體流數(shù)據(jù)包的 步驟,包括根據(jù)相應(yīng)數(shù)據(jù)單元中每個數(shù)據(jù)包的接收時間和數(shù)據(jù)包長度,分別獲取所述數(shù)據(jù)單 元中每個時間單元內(nèi)接收到的數(shù)據(jù)包,并在每個時間單元內(nèi)僅發(fā)送該時間單元內(nèi)接收到的 數(shù)據(jù)包,所述時間單元的長度小于所述設(shè)定時長。上述方法中,其特征在于,所述媒體文件為高級系統(tǒng)格式ASF文件,所述數(shù)據(jù)單元 為I幀組。本發(fā)明提供的媒體流數(shù)據(jù)處理裝置,其特征在于,包括接收單元,用于接收媒體流數(shù)據(jù)包;記錄單元,與所述接收單元連接,用于記錄所述接收單元接收到的每個數(shù)據(jù)包的 接收時間和數(shù)據(jù)包的長度;存儲單元,分別與所述接收單元和所述記錄單元連接,用于每當(dāng)設(shè)定時長到達(dá)時, 將所述接收單元在該時長內(nèi)接收到的數(shù)據(jù)包以及所述記錄單元所記錄的數(shù)據(jù)包接收時間 信息和數(shù)據(jù)包長度信息,作為一個數(shù)據(jù)單元存儲至媒體文件的數(shù)據(jù)區(qū)域。上述裝置中,所述存儲單元具體用于,在將數(shù)據(jù)單元存儲至媒體文件的數(shù)據(jù)區(qū)域 中時,將數(shù)據(jù)包接收時間信息和數(shù)據(jù)包長度信息設(shè)置于相應(yīng)數(shù)據(jù)包的頭區(qū)域,或設(shè)置于相 應(yīng)數(shù)據(jù)包負(fù)荷部分的頭區(qū)域中。上述裝置中,所述存儲單元具體用于,在將數(shù)據(jù)單元存儲至媒體文件的數(shù)據(jù)區(qū)域 中時,將數(shù)據(jù)單元中包含的數(shù)據(jù)包數(shù)量信息記錄在所述數(shù)據(jù)區(qū)域中;或/和,將數(shù)據(jù)單元的 總長度信息設(shè)置于數(shù)據(jù)單元的頭區(qū)域。上述裝置中,所述媒體文件還包括索引區(qū)域,所述存儲單元還用于,以所述設(shè)定時 長的時間單位作為索引,將每個設(shè)定時長內(nèi)接收到的數(shù)據(jù)包數(shù)量作為索引項設(shè)置于所述索 引區(qū)域。上述裝置,還包括獲取單元,用于當(dāng)需要播放所述媒體文件時,從媒體文件數(shù)據(jù)區(qū)域的數(shù)據(jù)單元中 獲取媒體流數(shù)據(jù)包;發(fā)送單元,用于將所述獲取單元獲取到的媒體流數(shù)據(jù)包發(fā)送至媒體流播放裝置, 其中,按照數(shù)據(jù)包的接收時間順序,在每個所述設(shè)定時長內(nèi)發(fā)送從相應(yīng)數(shù)據(jù)單元中獲取到 的媒體流數(shù)據(jù)包。上述裝置中,所述發(fā)送單元在一個設(shè)定時長內(nèi)發(fā)送從相應(yīng)數(shù)據(jù)單元中獲取到的媒 體流數(shù)據(jù)包時具體用于,根據(jù)相應(yīng)數(shù)據(jù)單元中每個數(shù)據(jù)包的接收時間和數(shù)據(jù)包長度,分別 獲取所述數(shù)據(jù)單元中每個時間單元內(nèi)接收到的數(shù)據(jù)包,并在每個時間單元內(nèi)僅發(fā)送該時間 單元內(nèi)接收到的數(shù)據(jù)包,所述時間單元的長度小于所述設(shè)定時長。本發(fā)明的有益技術(shù)效果包括通過在接收媒體流數(shù)據(jù)包時,記錄每個數(shù)據(jù)包的接收時間和數(shù)據(jù)包長度,并每當(dāng) 設(shè)定時長到達(dá)時,將在該時長內(nèi)接收到的數(shù)據(jù)包以及所記錄的數(shù)據(jù)包接收時間信息和數(shù)據(jù)包長度信息,作為一個數(shù)據(jù)單元存儲至媒體文件的數(shù)據(jù)區(qū)域,從而提供了一種通用的數(shù)據(jù) 存儲方式,而不用關(guān)心媒體流的數(shù)據(jù)格式。本發(fā)明提供的另一種媒體流處理方法,包括從媒體文件數(shù)據(jù)區(qū)域的數(shù)據(jù)單元中獲取媒體流數(shù)據(jù)包,其中,按照數(shù)據(jù)包的接收 時間順序,每個數(shù)據(jù)單元中存儲的是相應(yīng)設(shè)定時長內(nèi)接收到的媒體流數(shù)據(jù)包;將獲取到的數(shù)據(jù)包發(fā)送至媒體播放裝置,其中,按照數(shù)據(jù)包的接收時間順序,在每 個所述設(shè)定時長內(nèi)發(fā)送從相應(yīng)數(shù)據(jù)單元中獲取到的媒體流數(shù)據(jù)包。上述方法中,在一個設(shè)定時長內(nèi)發(fā)送從相應(yīng)數(shù)據(jù)單元中獲取到的媒體流數(shù)據(jù)包的 步驟,包括根據(jù)相應(yīng)數(shù)據(jù)單元中每個數(shù)據(jù)包的接收時間和數(shù)據(jù)包長度,分別獲取所述數(shù)據(jù) 單元中每個時間單元內(nèi)接收到的數(shù)據(jù)包,并在每個時間單元內(nèi)僅發(fā)送該時間單元內(nèi)接收到 的數(shù)據(jù)包,所述時間單元的長度小于所述設(shè)定時長。上述方法中,所述媒體文件為ASF文件,所述數(shù)據(jù)單元為I幀組。本發(fā)明提供的另一種媒體流數(shù)據(jù)處理裝置,包括獲取單元,用于從媒體文件的數(shù)據(jù)區(qū)域的數(shù)據(jù)單元中獲取媒體流數(shù)據(jù)包,其中,按 照數(shù)據(jù)包的接收時間順序,每個數(shù)據(jù)單元中存儲的是相應(yīng)設(shè)定時長內(nèi)接收到的媒體流數(shù)據(jù) 包;發(fā)送單元,用于將所述獲取單元獲取到的媒體流數(shù)據(jù)包發(fā)送給媒體流播放裝置, 其中,按照數(shù)據(jù)包的接收時間順序,在每個所述設(shè)定時長內(nèi)發(fā)送從相應(yīng)數(shù)據(jù)單元中獲取到 的媒體流數(shù)據(jù)包。上述裝置中,所述發(fā)送單元在一個設(shè)定時長內(nèi)發(fā)送從相應(yīng)數(shù)據(jù)單元中獲取到的媒 體流數(shù)據(jù)包時具體用于,根據(jù)相應(yīng)數(shù)據(jù)單元中每個數(shù)據(jù)包的接收時間和數(shù)據(jù)包長度,分別 獲取所述數(shù)據(jù)單元中每個時間單元內(nèi)接收到的數(shù)據(jù)包,并在每個時間單元內(nèi)僅發(fā)送該時間 單元內(nèi)接收到的數(shù)據(jù)包,所述時間單元的長度小于所述設(shè)定時長。本發(fā)明的有益技術(shù)效果包括通過從媒體文件數(shù)據(jù)區(qū)域的數(shù)據(jù)單元獲取數(shù)據(jù)包并發(fā)送到媒體播放裝置時,按照 數(shù)據(jù)包的接收時間順序,在每個設(shè)定時長內(nèi)發(fā)送從相應(yīng)數(shù)據(jù)單元中獲取到的媒體流數(shù)據(jù) 包,從而提供了 一種通用的媒體流數(shù)據(jù)回放方式,而不用關(guān)心媒體流數(shù)據(jù)的格式。
圖1為現(xiàn)有技術(shù)中ASF格式的示意圖;圖2為本發(fā)明實施例提供的ASF格式示意圖;圖3為本發(fā)明實施例提供的數(shù)據(jù)存儲流程示意圖;圖4為本發(fā)明實施例提供的數(shù)據(jù)回放流程示意圖;圖5、圖6和圖7分別為本發(fā)明實施例提供的媒體流數(shù)據(jù)處理裝置的結(jié)構(gòu)示意圖。
具體實施例方式為了解決現(xiàn)有技術(shù)存在的上述問題,本發(fā)明實施例通過在接收媒體流數(shù)據(jù)包時, 記錄每個數(shù)據(jù)包的接收時間和數(shù)據(jù)包的長度,其中,每當(dāng)設(shè)定時長到達(dá)時,將在該時長內(nèi)接 收到的數(shù)據(jù)包以及所記錄的數(shù)據(jù)包接收時間信息和數(shù)據(jù)包長度信息,作為一個數(shù)據(jù)單元存儲至媒體文件的數(shù)據(jù)區(qū)域,從而在未知媒體流格式的情況下,提供了一種通用的存儲方式。 當(dāng)需要播放以上述方式存儲的媒體文件時,從媒體文件數(shù)據(jù)區(qū)域的數(shù)據(jù)單元中獲取媒體流 數(shù)據(jù)包,并將獲取到的數(shù)據(jù)包發(fā)送至媒體播放裝置,其中,按照數(shù)據(jù)包的接收時間在每個設(shè) 定時長內(nèi)發(fā)送從相應(yīng)數(shù)據(jù)單元中獲取到的媒體流數(shù)據(jù)包,從而在未知媒體流格式的情況 下,提供了一種通用的回放方式。為了更清楚的說明本發(fā)明實施例的實現(xiàn)過程,下面以ASF(AdVanCed Streaming Format,高級串流格式)作為存儲格式進(jìn)行詳細(xì)闡述。ASF格式是一種可擴(kuò)展文件格式,用于存儲同步的多媒體數(shù)據(jù)。它支持通過各種網(wǎng) 絡(luò)和協(xié)議的數(shù)據(jù)傳遞,同時適用于本地播放。ASF格式分為三個部分文件頭區(qū)域、數(shù)據(jù)區(qū) 域、索引區(qū)域。每個部分又包括頭信息、具體數(shù)據(jù)兩部分,如圖1所示。其中文件頭區(qū)域,記錄有整個文件的屬性,如播放的時間等;數(shù)據(jù)區(qū)域,存儲的是媒體流數(shù)據(jù)。數(shù)據(jù)按Data Packet(數(shù)據(jù)包)來管理,每個Data Packet包含有不同大小的Payload (負(fù)荷),Payload用來存儲具體的數(shù)據(jù)。數(shù)據(jù)部分是以 I幀組(GOP)為單位組織的,每一個存儲I幀數(shù)據(jù)的Payload都有一個標(biāo)志位,用來說明該 Payload存儲的是I幀數(shù)據(jù);索引區(qū)域,包括索引頭和索引項,索引頭中指出了索引區(qū)域的大小,索引項是以秒 為單位組織的,每秒對應(yīng)一個索引項,每個索引項中包含了要查找的Data Packet的號碼, 以及Data Packet的數(shù)量。本發(fā)明實施例中,對于未知格式的媒體流數(shù)據(jù),依然使用ASF格式的基本結(jié)構(gòu)來 存儲,但是對數(shù)據(jù)區(qū)域所存儲的內(nèi)容進(jìn)行了改進(jìn)。如圖2所示,在本發(fā)明實施例所提供的ASF結(jié)構(gòu)中數(shù)據(jù)區(qū)域中,數(shù)據(jù)以本發(fā)明實施 例定義的GOP為單位組織,為區(qū)別現(xiàn)有G0P,將本發(fā)明實施例定義的GOP稱為虛擬G0P。虛 擬GOP內(nèi)可包含多個Data Packet,一個虛擬GOP由1秒鐘(該時長也可根據(jù)文件格式的規(guī) 定自定義,對于ASF文件格式可定義為1秒)內(nèi)收到的多個Data Packet組成,在一個虛擬 GOP最前面是當(dāng)前虛擬GOP的數(shù)據(jù)長度,在每一個Data Packet前面(即Data Packet頭 區(qū)域)分別記錄有收到Data Packet時的時間戳(Object Time)和該Data Packet的長度 (Object Size)。Data Packet的媒體流數(shù)據(jù)可存放在Payload中。此外,該媒體流數(shù)據(jù)存儲結(jié)構(gòu)中,文件頭區(qū)域可存儲文件的屬性信息;索引區(qū)域可 存儲索引信息(文件頭區(qū)域和索引區(qū)域未在圖2中示出)。基于圖2所示的媒體流數(shù)據(jù)存儲結(jié)構(gòu),圖3示出了數(shù)據(jù)存儲流程。當(dāng)接收到未知格 式的媒體流的實況數(shù)據(jù)時,將接收到的媒體流數(shù)據(jù)存儲到圖2所示的存儲結(jié)構(gòu)中的過程, 可包括步驟301、調(diào)用媒體流接口,獲取媒體流數(shù)據(jù)。該步驟中,可通過調(diào)用第三方實況收流接口(即接收媒體流的接口)來獲取媒體 流數(shù)據(jù)。步驟302、在接收Data Packet時,針對接收到的每個Data Packet記錄當(dāng)前的系 統(tǒng)時間(此處以time (η)表示,即接收第η個Data Packet時的系統(tǒng)時間),該時間可精確 到毫秒,還記錄Data Packet的長度(此處以length (η)表示,即第η個Data Packet的長 度),并在緩存中保存接收到的Data Packet和對應(yīng)于每個接收到的Data Packet所記錄的系統(tǒng)時間和包長度。步驟303、是否到達(dá)1秒,如果到達(dá)1秒,則執(zhí)行步驟304 ;否則,參照步驟302的描 述繼續(xù)接收Data Packet以及進(jìn)行相關(guān)記錄(步驟305)。該步驟中,由于圖2所示的數(shù)據(jù)存儲結(jié)構(gòu)中的索引區(qū)域是以秒進(jìn)行索引的,因此 此處設(shè)置為1秒,即每經(jīng)歷1秒鐘時執(zhí)行步驟304。步驟304、將上述1秒鐘內(nèi)接收到的Data Packet以及記錄的系統(tǒng)時間和Data Packet的長度從緩存中讀出,并寫入圖2所示的數(shù)據(jù)存儲結(jié)構(gòu)中的一個虛擬GOP。該步驟中,在將緩存的數(shù)據(jù)寫入圖2所示的數(shù)據(jù)存儲結(jié)構(gòu)時,可在該虛擬GOP的頭 部的Size區(qū)域?qū)懭肷鲜?秒中內(nèi)接收到的所有Data Packet的長度,該值可通過每個Data Packet的長度計算得到;并針對上述1秒鐘內(nèi)緩存中保持的每個Data Packet,以第η個 Data Packet為例,執(zhí)行以下步驟從緩存讀出Data Packet η寫入一個虛擬GOP的Data Packet區(qū)域中的Object Data區(qū)域,并在Data Packet η區(qū)域頭部的Object Time區(qū)域 寫入Data Packet η的接收時間time (η),在Ob ject Size區(qū)域?qū)懭隓ata Packet η長度 length(η)。步驟305、繼續(xù)參照步驟302接收Data Packet以及進(jìn)行相關(guān)記錄。當(dāng)所有Data Packet接收完成之后,本流程結(jié)束。進(jìn)一步的,還可以在該數(shù)據(jù)存儲結(jié)構(gòu)中的文件頭區(qū)域?qū)懭朊襟w流的屬性信息,如 媒體流的長度和媒體流的時長;流媒體的長度可根據(jù)文件頭區(qū)域的長度、數(shù)據(jù)區(qū)域的長度 和索引區(qū)域的長度計算得到,即三個區(qū)域長度之和;媒體流的時長即為接收該媒體流所用 的時長。還可以在索引區(qū)域?qū)懭胨饕畔ⅲ渲?,索引區(qū)域的索引頭可指出該索引區(qū)域的長 度,索引項可以是以秒為單位組織的,每秒對應(yīng)一個索引項,每個索引項中包含了 1秒鐘內(nèi) 接收到的Data Packet的數(shù)量。經(jīng)過以上流程后,接收到的媒體流數(shù)據(jù)將以圖2所示的數(shù)據(jù)存儲結(jié)構(gòu)存儲,該數(shù) 據(jù)存儲結(jié)構(gòu)基本與ASF文件結(jié)構(gòu)相同,即以ASF文件格式方式存儲接收到的媒體流數(shù)據(jù),但 數(shù)據(jù)區(qū)域是以虛擬GOP組織的,即以1秒鐘內(nèi)接收到的Data Packet進(jìn)行組織,Data Packet 對應(yīng)的Object Time是接收到該Data Packet的系統(tǒng)時間。需要說明的是,在執(zhí)行步驟303以及步驟304的過程中,并不中斷對Data Packet 的接收和相關(guān)的記錄操作。圖4示出了基于圖2所示的媒體流數(shù)據(jù)存儲結(jié)構(gòu)所存儲的媒體流的回放流程。當(dāng) 需要回放以圖2所示的媒體流數(shù)據(jù)存儲結(jié)構(gòu)存儲的媒體流時,如圖4所示,該流程可包括步驟401、找到需要回放的媒體流數(shù)據(jù)的起始位置和結(jié)束位置。該步驟中,由于圖2所示的數(shù)據(jù)存儲結(jié)構(gòu)基本與ASF格式相同,因此可按照ASF格 式方式找到需要回放的數(shù)據(jù)的起始位置和結(jié)束位置。具體的,如果回放的起始位置為媒體 流的起始位置,則在圖2所示的數(shù)據(jù)存儲結(jié)構(gòu)的數(shù)據(jù)區(qū)域中找到第一個虛擬GOP ;如果回放 的起始位置不是媒體流的起始位置,則可根據(jù)所選擇的回放時間起點,在索引區(qū)域找到對 應(yīng)的索引項(索引項是以時間單位進(jìn)行索引的),根據(jù)該索引項找到對應(yīng)的虛擬G0P。由于 本發(fā)明實施例中,虛擬GOP中記錄的是1秒鐘內(nèi)接收到的Data Packet,而索引項也是以秒 為單位進(jìn)行索引的,因此,GOP和索引項存在一定的對應(yīng)關(guān)系。這樣,可通過回放時間起點 找到對應(yīng)的索引項,進(jìn)而找到對應(yīng)的虛擬G0P。同理,結(jié)束位置所對應(yīng)的虛擬GOP也可以根
8據(jù)該方式確定。步驟402、讀取回放起始位置的虛擬GOP的長度,根據(jù)該長度讀取一個虛擬GOP內(nèi) 的Data Packet至Ij緩存中。該步驟中,由于ASF Payload格式的關(guān)系,如果一個虛擬GOP包含多個Data Packet,則在讀取Data Packet時需要過濾頭信息,如過濾掉各Data Packet的Object Size 信息禾口 Object Time 信息。步驟403、將讀入到緩存中的Data Packet發(fā)送給媒體播放裝置進(jìn)行回放。該步驟中,可根據(jù)每個Data Packet的接收時間和Data Packet長度,分別獲取虛 擬GOP中每個時間單元內(nèi)接收到的Data Packet,并在每個時間單元內(nèi)僅發(fā)送該時間單元 內(nèi)接收到的Data Packet。本發(fā)明實施例中的虛擬GOP是以特定時間長度內(nèi)接收到的Data Packet進(jìn)行組織的,因此,上述每個時間單元都小于該特定時間長度,優(yōu)選的,可以將該特 定時間長度進(jìn)行η (η為整數(shù))等分,所得到的每個時間段就是一個時間單元。該時間單元 可根據(jù)系統(tǒng)的時鐘函數(shù)的精確度來確定。以系統(tǒng)的時鐘處理函數(shù)能夠精確到25ms為例(即時間單元為25ms),步驟303的 具體實現(xiàn)可以是根據(jù)緩存中的每一個Data Packet前的時間戳和長度,找到虛擬GOP所包 含的Data Packet中第一個25ms內(nèi)的所有Data Packet,在第一個25ms內(nèi)連續(xù)發(fā)送這些 Data Packet,如果這些Data Packet發(fā)送完成了,但還未到25ms,則可等到到達(dá)25ms時再 發(fā)送第二個25ms內(nèi)的Data Packet,以此來控制媒體流的回放速度。以此類推,在一個25ms 內(nèi)的所有Data Packet發(fā)送完畢后,再發(fā)送下一個25ms內(nèi)的所有Data Packet,直到一個虛 擬GOP內(nèi)的Data Packet發(fā)送完畢。步驟404、在下一秒鐘到達(dá)時,讀取下一個虛擬GOP所包含的Data Packet到緩存, 并按照步驟403的方式發(fā)送給媒體播放裝置。當(dāng)然,也可以預(yù)先將下一個虛擬GOP所包含的 Data Packet讀取到緩存中,在下一秒鐘達(dá)到時,發(fā)送該預(yù)先讀取的虛擬GOP所包含的Data Packet。針對每個虛擬GOP重復(fù)以上操作,即在完成一個虛擬GOP所包含的Data Packet 的回放操作后,將下一秒鐘對應(yīng)的虛擬GOP所包含的Data Packet進(jìn)行回放,直到到達(dá)回放
結(jié)束位置。可以看出,對于接收到的媒體流實況數(shù)據(jù)按照本發(fā)明實施例提供的方式存儲后, 在回放時,再按照上述方式發(fā)送給媒體播放裝置進(jìn)行回放,其發(fā)送給媒體播放裝置的方式 與其接收媒體流實況數(shù)據(jù)的方式相應(yīng),對于媒體播放裝置來說,可以基本還原該媒體流實 況數(shù)據(jù)。在本發(fā)明的另一實施例中,對于ASF格式文件,在向其存儲媒體流數(shù)據(jù)時,可以不 必在每個Data Packet之前記錄時間戳和包長度信息,而只在Payload頭區(qū)域中進(jìn)行記錄, 這樣可以節(jié)省存儲空間,這是因為根據(jù)ASF格式的規(guī)定,需要在Payload頭區(qū)域中記錄相 關(guān)信息,如Data Packet的長度,因此就沒有必要在每個Data Packet之前(即Data Packet 頭區(qū)域中)重復(fù)記錄了。在本發(fā)明的另一實施例中,對于ASF格式文件,在向其存儲媒體流數(shù)據(jù)時,可以不 必記錄GOP的總長度,因為通過記錄在Data Packet頭區(qū)域中的Payload個數(shù)(該P(yáng)ayload 個數(shù)也就是Data Packet個數(shù))以及每個Data Packet的長度可以計算得到GOP的總長度,以便在媒體流回放時根據(jù)GOP長度讀取其中的Data Packet,這樣可以節(jié)省存儲空間。通過以上描述可以看出,本發(fā)明實施例通過將1秒鐘內(nèi)接收到的Data Packet作 為一個GOP保存在ASF格式文件中的數(shù)據(jù)區(qū)域,從而不需要關(guān)心具體的媒體流格式,實現(xiàn)了 統(tǒng)一存儲。當(dāng)需要進(jìn)行媒體流回放時,可從該ASF中獲取Data Packet,并按照接收的時間 進(jìn)行回放,從而實現(xiàn)了統(tǒng)一回放,并且對于具體的存儲格式?jīng)]有要求,且基本無需變化?;谙嗤募夹g(shù)構(gòu)思,本發(fā)明實施例還提供了實現(xiàn)上述流程的媒體流數(shù)據(jù)處理裝 置。如圖5所示,媒體流數(shù)據(jù)處理裝置10可應(yīng)用于圖3所示流程,該裝置可包括接收 單元301、記錄單元302和存儲單元303,其中接收單元301,用于接收媒體流數(shù)據(jù)包;記錄單元302,與接收單元301連接,用于記錄接收單元301接收到的每個數(shù)據(jù)包 的接收時間和數(shù)據(jù)包的長度;存儲單元303,分別與接收單元301和記錄單元302連接,用于每當(dāng)設(shè)定時長到達(dá) 時,將接收單元301在該時長內(nèi)接收到的數(shù)據(jù)包以及記錄單元302所記錄的數(shù)據(jù)包接收時 間信息和數(shù)據(jù)包長度信息,作為一個數(shù)據(jù)單元存儲至媒體文件的數(shù)據(jù)區(qū)域。上述裝置中,存儲單元303可在將數(shù)據(jù)單元存儲至媒體文件的數(shù)據(jù)區(qū)域中時,將 數(shù)據(jù)包接收時間信息和數(shù)據(jù)包長度信息設(shè)置于相應(yīng)數(shù)據(jù)包的頭區(qū)域,或設(shè)置于相應(yīng)數(shù)據(jù)包 負(fù)荷部分的頭區(qū)域中。上述裝置中,存儲單元303還可在將數(shù)據(jù)單元存儲至媒體文件的數(shù)據(jù)區(qū)域中時, 將數(shù)據(jù)單元中包含的數(shù)據(jù)包數(shù)量信息記錄在所述數(shù)據(jù)區(qū)域中。上述裝置中,數(shù)據(jù)單元包括頭區(qū)域,相應(yīng)的,存儲單元303可在將數(shù)據(jù)單元存儲至 媒體文件的數(shù)據(jù)區(qū)域時,將數(shù)據(jù)單元的總長度信息設(shè)置于數(shù)據(jù)單元的頭區(qū)域。上述裝置中,所述媒體文件還包括索引區(qū)域,相應(yīng)的,存儲單元303還可用于,以 所述設(shè)定時長的時間單位作為索引,將每個設(shè)定時長內(nèi)接收到的數(shù)據(jù)包數(shù)量作為索引項設(shè) 置于所述索引區(qū)域。如圖6所示,媒體流數(shù)據(jù)處理裝置20可應(yīng)用于圖4所示流程,該裝置可包括獲取單元601,用于從媒體文件的數(shù)據(jù)區(qū)域的數(shù)據(jù)單元中獲取媒體流數(shù)據(jù)包,其 中,按照數(shù)據(jù)包的接收時間順序,每個數(shù)據(jù)單元中存儲的是相應(yīng)設(shè)定時長內(nèi)接收到的媒體 流數(shù)據(jù)包;發(fā)送單元602,用于將獲取單元601獲取到的媒體流數(shù)據(jù)包發(fā)送給媒體流播放裝 置,其中,按照數(shù)據(jù)包的接收時間順序,在每個設(shè)定時長內(nèi)發(fā)送從相應(yīng)數(shù)據(jù)單元中獲取到的 媒體流數(shù)據(jù)包。上述裝置中,發(fā)送單元602在一個設(shè)定時長內(nèi)發(fā)送從相應(yīng)數(shù)據(jù)單元中獲取到的媒 體流數(shù)據(jù)包時,可根據(jù)相應(yīng)數(shù)據(jù)單元中每個數(shù)據(jù)包的接收時間和數(shù)據(jù)包長度,分別獲取所 述數(shù)據(jù)單元中每個時間單元內(nèi)接收到的數(shù)據(jù)包,并在每個時間單元內(nèi)僅發(fā)送該時間單元內(nèi) 接收到的數(shù)據(jù)包,所述時間單元的長度小于所述設(shè)定時長。圖5所示的媒體流數(shù)據(jù)處理裝置10和圖6所示的媒體流數(shù)據(jù)處理裝置20相結(jié)合, 可得到如圖7所示的媒體流數(shù)據(jù)處理裝置30,該裝置中的各功能模塊的具體功能和實現(xiàn), 分別與圖5和圖6中所示的功能模塊相同或相似,在此不再贅述。
需要說明的是,以上實施例僅以ASF文件為例描述,本領(lǐng)域技術(shù)人員根據(jù)以上實 施例的描述,可采用其它格式的文件實現(xiàn)上述技術(shù)方案。通過以上的實施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可借助 軟件加必需的通用硬件平臺的方式來實現(xiàn),當(dāng)然也可以通過硬件,但很多情況下前者是更 佳的實施方式?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的 部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若 干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者核心網(wǎng)節(jié)點設(shè)備等)執(zhí) 行本發(fā)明各個實施例所述的方法。以上公開的僅為本發(fā)明的幾個具體實施例,但是,本發(fā)明并非局限于此,任何本領(lǐng) 域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明的保護(hù)范圍。
權(quán)利要求
一種媒體流數(shù)據(jù)處理方法,其特征在于,包括接收媒體流數(shù)據(jù)包,并記錄每個數(shù)據(jù)包的接收時間和數(shù)據(jù)包的長度;其中,每當(dāng)設(shè)定時長到達(dá)時,將在該時長內(nèi)接收到的數(shù)據(jù)包以及所記錄的數(shù)據(jù)包接收時間信息和數(shù)據(jù)包長度信息,作為一個數(shù)據(jù)單元存儲至媒體文件的數(shù)據(jù)區(qū)域。
2.如權(quán)利要求1所述的方法,其特征在于,在將數(shù)據(jù)單元存儲至媒體文件的數(shù)據(jù)區(qū)域 中時,將數(shù)據(jù)包接收時間信息和數(shù)據(jù)包長度信息設(shè)置于相應(yīng)數(shù)據(jù)包的頭區(qū)域,或設(shè)置于相 應(yīng)數(shù)據(jù)包負(fù)荷部分的頭區(qū)域中。
3.如權(quán)利要求1所述的方法,其特征在于,將數(shù)據(jù)單元存儲至媒體文件的數(shù)據(jù)區(qū)域時, 還包括將數(shù)據(jù)單元的總長度信息設(shè)置于數(shù)據(jù)單元的頭區(qū)域;或/和將數(shù)據(jù)單元中包含的數(shù)據(jù)包數(shù)量信息記錄在所述數(shù)據(jù)區(qū)域中。
4.如權(quán)利要求1所述的方法,其特征在于,所述媒體文件還包括索引區(qū)域,該方法還包括以所述設(shè)定時長的時間單位作為索引,將每個設(shè)定時長內(nèi)接收到的數(shù)據(jù)包數(shù)量作為索 引項設(shè)置于所述索引區(qū)域。
5.如權(quán)利要求1至4任一項所述的方法,其特征在于,還包括當(dāng)需要播放所述媒體文件時,從媒體文件數(shù)據(jù)區(qū)域的數(shù)據(jù)單元中獲取媒體流數(shù)據(jù)包, 并將獲取到的數(shù)據(jù)包發(fā)送至媒體播放裝置,其中,按照數(shù)據(jù)包的接收時間順序,在每個所述 設(shè)定時長內(nèi)發(fā)送從相應(yīng)數(shù)據(jù)單元中獲取到的媒體流數(shù)據(jù)包。
6.如權(quán)利要求5所述的方法,其特征在于,在一個設(shè)定時長內(nèi)發(fā)送從相應(yīng)數(shù)據(jù)單元中 獲取到的媒體流數(shù)據(jù)包的步驟,包括根據(jù)相應(yīng)數(shù)據(jù)單元中每個數(shù)據(jù)包的接收時間和數(shù)據(jù)包長度,分別獲取所述數(shù)據(jù)單元中 每個時間單元內(nèi)接收到的數(shù)據(jù)包,并在每個時間單元內(nèi)僅發(fā)送該時間單元內(nèi)接收到的數(shù)據(jù) 包,所述時間單元的長度小于所述設(shè)定時長。
7.如權(quán)利要求1至4任一項所述的方法,其特征在于,所述媒體文件為高級系統(tǒng)格式 ASF文件,所述數(shù)據(jù)單元為I幀組。
8.一種媒體流數(shù)據(jù)處理裝置,其特征在于,包括接收單元,用于接收媒體流數(shù)據(jù)包;記錄單元,與所述接收單元連接,用于記錄所述接收單元接收到的每個數(shù)據(jù)包的接收 時間和數(shù)據(jù)包的長度;存儲單元,分別與所述接收單元和所述記錄單元連接,用于每當(dāng)設(shè)定時長到達(dá)時,將所 述接收單元在該時長內(nèi)接收到的數(shù)據(jù)包以及所述記錄單元所記錄的數(shù)據(jù)包接收時間信息 和數(shù)據(jù)包長度信息,作為一個數(shù)據(jù)單元存儲至媒體文件的數(shù)據(jù)區(qū)域。
9.如權(quán)利要求8所述的裝置,其特征在于,所述存儲單元具體用于,在將數(shù)據(jù)單元存儲 至媒體文件的數(shù)據(jù)區(qū)域中時,將數(shù)據(jù)包接收時間信息和數(shù)據(jù)包長度信息設(shè)置于相應(yīng)數(shù)據(jù)包 的頭區(qū)域,或設(shè)置于相應(yīng)數(shù)據(jù)包負(fù)荷部分的頭區(qū)域中。
10.如權(quán)利要求8所述的裝置,其特征在于,所述存儲單元具體用于,在將數(shù)據(jù)單元存 儲至媒體文件的數(shù)據(jù)區(qū)域中時,將數(shù)據(jù)單元中包含的數(shù)據(jù)包數(shù)量信息記錄在所述數(shù)據(jù)區(qū)域 中;或/和,將數(shù)據(jù)單元的總長度信息設(shè)置于數(shù)據(jù)單元的頭區(qū)域。
11.如權(quán)利要求8所述的裝置,其特征在于,所述媒體文件還包括索引區(qū)域,所述存儲單元還用于,以所述設(shè)定時長的時間單位作為索引,將每個設(shè)定時長內(nèi)接收到的數(shù)據(jù)包數(shù) 量作為索引項設(shè)置于所述索引區(qū)域。
12.如權(quán)利要求8至11任一項所述的裝置,其特征在于,還包括獲取單元,用于當(dāng)需要播放所述媒體文件時,從媒體文件數(shù)據(jù)區(qū)域的數(shù)據(jù)單元中獲取 媒體流數(shù)據(jù)包;發(fā)送單元,用于將所述獲取單元獲取到的媒體流數(shù)據(jù)包發(fā)送至媒體流播放裝置,其中, 按照數(shù)據(jù)包的接收時間順序,在每個所述設(shè)定時長內(nèi)發(fā)送從相應(yīng)數(shù)據(jù)單元中獲取到的媒體 流數(shù)據(jù)包。
13.如權(quán)利要求12所述的裝置,其特征在于,所述發(fā)送單元在一個設(shè)定時長內(nèi)發(fā)送從相應(yīng)數(shù)據(jù)單元中獲取到的媒體流數(shù)據(jù)包時具 體用于,根據(jù)相應(yīng)數(shù)據(jù)單元中每個數(shù)據(jù)包的接收時間和數(shù)據(jù)包長度,分別獲取所述數(shù)據(jù)單 元中每個時間單元內(nèi)接收到的數(shù)據(jù)包,并在每個時間單元內(nèi)僅發(fā)送該時間單元內(nèi)接收到的 數(shù)據(jù)包,所述時間單元的長度小于所述設(shè)定時長。
14.一種媒體流數(shù)據(jù)處理方法,其特征在于,包括從媒體文件數(shù)據(jù)區(qū)域的數(shù)據(jù)單元中獲取媒體流數(shù)據(jù)包,其中,按照數(shù)據(jù)包的接收時間 順序,每個數(shù)據(jù)單元中存儲的是相應(yīng)設(shè)定時長內(nèi)接收到的媒體流數(shù)據(jù)包;將獲取到的數(shù)據(jù)包發(fā)送至媒體播放裝置,其中,按照數(shù)據(jù)包的接收時間順序,在每個所 述設(shè)定時長內(nèi)發(fā)送從相應(yīng)數(shù)據(jù)單元中獲取到的媒體流數(shù)據(jù)包。
15.如權(quán)利要求14所述的方法,其特征在于,在一個設(shè)定時長內(nèi)發(fā)送從相應(yīng)數(shù)據(jù)單元 中獲取到的媒體流數(shù)據(jù)包的步驟,包括根據(jù)相應(yīng)數(shù)據(jù)單元中每個數(shù)據(jù)包的接收時間和數(shù)據(jù)包長度,分別獲取所述數(shù)據(jù)單元中 每個時間單元內(nèi)接收到的數(shù)據(jù)包,并在每個時間單元內(nèi)僅發(fā)送該時間單元內(nèi)接收到的數(shù)據(jù) 包,所述時間單元的長度小于所述設(shè)定時長。
16.如權(quán)利要求14或15所述的方法,其特征在于,所述媒體文件為ASF文件,所述數(shù)據(jù) 單元為I幀組。
17.一種媒體流數(shù)據(jù)處理裝置,其特征在于,包括獲取單元,用于從媒體文件的數(shù)據(jù)區(qū)域的數(shù)據(jù)單元中獲取媒體流數(shù)據(jù)包,其中,按照數(shù) 據(jù)包的接收時間順序,每個數(shù)據(jù)單元中存儲的是相應(yīng)設(shè)定時長內(nèi)接收到的媒體流數(shù)據(jù)包;發(fā)送單元,用于將所述獲取單元獲取到的媒體流數(shù)據(jù)包發(fā)送給媒體流播放裝置,其中, 按照數(shù)據(jù)包的接收時間順序,在每個所述設(shè)定時長內(nèi)發(fā)送從相應(yīng)數(shù)據(jù)單元中獲取到的媒體 流數(shù)據(jù)包。
18.如權(quán)利要求17所述的裝置,其特征在于,所述發(fā)送單元在一個設(shè)定時長內(nèi)發(fā)送從相應(yīng)數(shù)據(jù)單元中獲取到的媒體流數(shù)據(jù)包時具 體用于,根據(jù)相應(yīng)數(shù)據(jù)單元中每個數(shù)據(jù)包的接收時間和數(shù)據(jù)包長度,分別獲取所述數(shù)據(jù)單 元中每個時間單元內(nèi)接收到的數(shù)據(jù)包,并在每個時間單元內(nèi)僅發(fā)送該時間單元內(nèi)接收到的 數(shù)據(jù)包,所述時間單元的長度小于所述設(shè)定時長。
全文摘要
本發(fā)明公開了一種媒體流數(shù)據(jù)處理方法及其裝置,用以解決在未知媒體流格式的情況下,現(xiàn)有技術(shù)無法處理媒體流的問題。該方法包括接收媒體流數(shù)據(jù)包,并記錄每個數(shù)據(jù)包的接收時間和數(shù)據(jù)包的長度;其中,每當(dāng)設(shè)定時長到達(dá)時,將在該時長內(nèi)接收到的數(shù)據(jù)包以及所記錄的數(shù)據(jù)包接收時間信息和數(shù)據(jù)包長度信息,作為一個數(shù)據(jù)單元存儲至媒體文件的數(shù)據(jù)區(qū)域。當(dāng)需要播放所述媒體文件時,從媒體文件數(shù)據(jù)區(qū)域的數(shù)據(jù)單元中獲取媒體流數(shù)據(jù)包,并將獲取到的數(shù)據(jù)包發(fā)送至媒體播放裝置,其中,按照數(shù)據(jù)包的接收時間順序,在每個設(shè)定時長內(nèi)發(fā)送從相應(yīng)數(shù)據(jù)單元中獲取到的媒體流數(shù)據(jù)包。
文檔編號H04L12/56GK101895736SQ20101021964
公開日2010年11月24日 申請日期2010年7月7日 優(yōu)先權(quán)日2010年7月7日
發(fā)明者呂志明 申請人:杭州華三通信技術(shù)有限公司