流媒體技術中根據rtp包生成iso媒體文件的方法
2023-05-25 22:24:36
專利名稱:流媒體技術中根據rtp包生成iso媒體文件的方法
技術領域:
本發明涉及一種流媒體技術,具體說,涉及一種流媒體技術中根據RTP 包生成ISO媒體文件的方法。
背景技術:
在固網流媒體和移動流媒體中,需要流媒體伺服器把直播編碼器傳下來 的RTP數據包按照一定的策略轉存為符合標準的ISO媒體文件格式發布, 供以後點播。轉存媒體文件非常關鍵的一個步驟就是要把RTP的負栽數據, 復原成原始的媒體數據和流化數據。一般的做法是對於具體的編碼格式,按照其流化標準定義,解析RTP 負栽數據中的流化信息,復原出真實的媒體樣本,然後生成對應的流化樣本 數據。RTP負載數據由流化信息和採樣數據兩部分組成。其中流化信息不屬 於媒體樣本數據,所以以直接存儲在媒體文件的流化樣本數據中,RTP負栽 中的採樣數據可以包括一個或多個媒體樣本,或者一個媒體樣本的一部分, 這些數據應該保存在媒體樣本的數據中,流化樣本中不再保存這些數據,而 是按照文件定義的結構保存指向對應媒體樣本的索引。由於現有技術中的支持的編碼格式比較多,每種編碼的流化標準不同, 而且流化的方式比較靈活,所以根據RTP數據包負載數據復原原始的媒體 樣本比較繁瑣,而且很難做到正確復原所有的媒體樣本的問題,此外這種作 法也存在擴展性問題。發明內容本發明所解決的技術問題是提供一種流媒體技術中根據RTP包生成 ISO媒體文件的方法,不依賴於具體的編碼格式及其流化標準,不解析RTP
負栽數據,直接生成虛擬的媒體樣本,並生成其對應的流化樣本,而且具有 良好的擴展性,可以比較容易地兼容以後擴充的編碼格式。技術方案如下流媒體技術中根據RTP包生成ISO媒體文件的方法,步驟如下(1) 確定流化樣本的邊界;(2) 生成虛擬媒體樣本的採樣數據;(3) 確定虛擬媒體樣本的序號;(4) 生成流化樣本的數據;(5) 按照ISO媒體文件格式的規定生成媒體文件;(6) 流媒體伺服器讀取生成的媒體文件。進一步,步驟(1)具體為根據RTP包頭的mark位確定當前的流化 樣本的邊界。進一步,步驟(l)中,所述流化樣本包括至少一個RTP數據包。進一步,步驟(l)中,所述流化樣本的邊界包括時戳。進一步,步驟(2)具體為將所述流化樣本中包括的所有RTP負載數 據作為虛擬媒體樣本的採樣數據。進一步,步驟(2)中,所述RTP負載數據包括流化信息和採樣數據。進一步,步驟(3)具體為將糹某體樣本統一編號,得到所迷虛擬々某體 樣本的序號。進一步,步驟(4)中,所述流化樣本的數據包括RTP負載數據的入口 。 進一步,步驟(6)具體為(61) 讀流化軌索引;(62) 根據流化軌索引到流化軌對應的數據區讀流化樣本的數據,讀出 每個RTP包頭和RTP負栽數據的索引;(63) 根據RTP負載數據的索引讀取對應媒體軌索引,計算出對應媒 體樣本的數據位置和長度;(64 )根據媒體軌索引讀媒體樣本的數據,生成完整的RTP數據包。利用本發明方法,可以不依賴於具體的編碼格式及其流化標準,不解析 RTP負栽數據,直接生成虛擬的媒體樣本,並生成其對應的流化樣本,按照 ISO媒體文件格式規定生成媒體文件。轉存後的媒體文件可以提供給通用的 流媒體伺服器提供服務,流媒體伺服器讀取轉存後的媒體文件發出的RTP 負載數據與轉存之前的RTP負載數據完全相同。與現有技術相比,簡化了 處理流程,可以不關心具體的編碼格式,基本上保存了原有RTP的負栽數 據,可以真實地再現原有的RTP數據。而且這種方法具有良好的擴展性, 可以比較容易地兼容以後擴充的編碼格式。附閨說明圖l是《RFC3016》中的流化格式定義;圖2是本發明方法的流程圖;圖3是媒體文件流化軌和媒體軌的恢復流程圖;圖4是《RFC3640》中對RTP負載數據的定義;圖5是媒體文件流化軌和媒體軌的恢復流程圖;具體實施方式
本發明能夠方便準確把RTP數據包恢復成ISO媒體文件中媒體軌和流 化軌數據,支持通過流伺服器播放。ISO媒體文件包括但不限於ISO 14496-12中定義的基礎媒體文件格式,IS014496-14定義的MP4文件格式, IS014496-15定義的AVC文件格式,3GPP TS26.244定義的3GPP文件格式, 3GPP2C.S0050-0定義的3GPP2文件格式。本發明技術方案的核心是將一個流化樣本所包括的所有RTP負載數據 (包括流化信息和採樣數據)虛擬成一個媒體樣本,流化樣本的所有入口數 據指向同一個虛擬媒體樣本數據。這種方法生成的虛擬媒體樣本和流化樣本 --對應,具有相同的樣本序號和間隔。
下面參照附圖,對本發明的優選實施例作詳細描述。以《RFC3016》流化標準來描述虛擬樣本生成的過程。參照
圖1所示,《RFC3016》中對MPEG4視頻編碼格式的流化做了規定。RTP數據包由RTP頭(RTP Header)和RTP負栽構成,RTP頭為標準RTP Header結構;RTP負栽由MPEG4 VOP Header和VOP Data Fragment組成。結合圖2和圖3所示,按照定義的流化格式生成一組RTP數據包。流化過程為1. 確定流化樣本的邊界。一個流化樣本包括在幾個RTP數據包中,以mark位置1作為流化樣 本的邊界。考慮到網絡丟包的情況,把時戳發生跳轉也作為流化樣本的邊界。 一個流化樣本包括n個(n>=l) RTP數據包。根據RTP包頭的mark位置1確定當前處理的流化樣本,該流化樣本包 括3個RTP數據包,RTP數據包序號分別為11、 12和13。2. 生成虛擬媒體樣本的採樣數據。將一個流化樣本中所包括的所有RTP負栽數據看作一個虛擬媒體樣本 的採樣數據。生成的虛擬媒體樣本數據為負載11+負栽12+負栽13,長度為Ll+L2 + L3等同於真實的i某體樣本VOP HeaderfVOP fragment(l)+VOP fragment(2)+VOP fragment(3)。3. 確定虛擬糹某體樣本的序號。媒體樣本統一編號,得出此虛擬媒體樣本的序號,依次累加即可。假設 當前的虛擬々某體樣本的序號為m 。4. 生成流化樣本的數據。流化樣本有n個入口 ,每個入口都以ISO 14496-12中定義的數據結構2 形式存在,即都是指向對應媒體軌的樣本數據。每個入口對應同一個虛擬士某 生成的流化樣本有3個RTP包,每個RTP包的RTP負栽數據有一個入 口,為RTP負栽數據八口。第1個RTP負栽數據入口 從媒體樣本(m)的數據0開始,長度為LI 。第2個RTP負栽數據入口 從媒體樣本(m)的數據LI開始,長度為L2。第3個RTP負栽數據入口 從媒體樣本(m)的數據(Ll+L2)開始,長度為L3。對於此類RTP負栽完全由媒體數據組成的情況,生成的虛擬媒體樣本 完全等同於真實的媒體樣本,此時生成的媒體文件不但支持流化播放,還支 持一般的本地播放。5、按照ISO媒體文件格式的規定生成媒體文件。將生成的虛擬媒體樣本和流化樣本分別組成媒體軌和流化軌,及其索 引,按照IS(H某體文件格式生成正確的々某體文件。《RFC3640》中對AAC音頻編碼格式的流化做了規定。如圖4所示,對AAC音頻的RTP的結構作了定義。RTP數據包由RTP頭(RTP Header)和RTP負載構成,RTP頭為標準RTP Header結構;RTP負載由多個AUHeader和AU數據組成。《RFC3640》中對AAC音頻編碼格式的流化做了規定。如圖5所示,按照圖示中定義的流化格式生成一組RTP數據包。流化過程為1、 確定流化樣本的邊界。一個流化樣本包括在幾個RTP數據包中,以mark位置1作為流化樣 本的邊界。考慮到網絡丟包的情況,把時戳發生跳轉也作為流化樣本的邊界。 一個流化樣本包括n個(nX)RTP數據包。根據RTP包頭的mark位確定當前處理的流化樣本,該流化樣本包括3 個RTP數據包,RTP數據包序號為21。2、 生成虛擬媒體樣本的採樣數據。
將一個流化軌樣本中所包括的所有RTP負栽數據看作一個虛擬々某體樣 本的採樣數據。生成的虛擬媒體樣本數據為負栽21,長度為Ll。其中 包括了流化信息和兩個真實媒體樣本AU1和AU2的數據。3、 確定虛擬媒體樣本的序號。虛擬媒體樣本統一編號,得出此虛擬媒體樣本的序號,依次累加即可, 假設當前的虛擬媒體樣本的序號為m。4、 生成流化樣本的數據。流化樣本有n個入口 ,每個入口都以ISO 14496-12中定義的數據結構2形式存在,即都是指向對應媒體軌的樣本數據。每個入口對應同一個虛擬媒 體樣本的不同數據段。生成的流化樣本有1個RTP包,RTP包的負栽數據只有一個入口 ,為 RTP負載數據入口。RTP負載數據入口 從序號為m的媒體樣本的數據0開始,長度為Ll。對於此類RTP負載不完全由媒體數據組成,還包括某些流化信息的情 況,生成的虛擬媒體樣本不等同於真實的媒體樣本,此時生成的媒體文件支 持流化播放。5、 按照ISO媒體文件格式的規定生成媒體文件。將生成的虛擬媒體樣本和流化樣本分別組成媒體軌和流化軌,及其索 引,按照ISOi某體文件格式生成正確的媒體文件。現有技術中通常的做法是解析負載中的AUHeaderLen和每個 AUHeader,分離出此RTP包中所包括的媒體樣本個數和釆樣數據,復原媒 體樣本。生成的流化樣本有1個RTP數據包,RTP包的RTP負載數據至少 有3個入口。其中,入口 1用於保存流化信息,包括AUHeaderLen和每個AUHeader。 這個入口可能有多個,根據流化信息的長度而定,每個入口最多只能保存 14個字節。入口 2從士某體樣本(AU1的序號)的數據0開始,長度為AU1的 採樣數據長度。入口 3從媒體樣本(AU2的序號)的數據0開始,長度為AU2 的採樣數據長度。
如果採用的是帶交織的流化方式,還需要緩衝n個RTP數據包,根據 RTP的時戳和負栽中的流化信息,對媒體樣本進行排序,排序後才能最終確定媒體樣本的序號,也才能開始生成對應的流化樣本數據。由此可見,對亍 這種編碼格式來說,採用本發明中所介紹的方法可以大大的降低實現的複雜度。6、流媒體伺服器讀取生成的媒體文件。 讀取4某體文件的順序具體如下(1) 讀取流化軌的索引。(2) 根據索引到流化軌對應的數據區讀流化樣本數據,讀出每個RTP 包頭和RTP負載數據的索引。(3) 根據RTP負載數據的索引讀取對應媒體軌索引,得出對應媒體樣 本的數據位置和長度。(4) 根據索引讀媒體樣本數據,生成完整的RTP數據包。由此流程可以看出,伺服器不關心媒體軌數據和真實的採樣數據有何直 接關係,所以本發明方法可以很好地保留原有的RTP數據格式。
權利要求
1. 一種流媒體技術中根據RTP包生成ISO媒體文件的方法,步驟如下(1)確定流化樣本的邊界;(2)生成虛擬媒體樣本的採樣數據;(3)確定虛擬媒體樣本的序號;(4)生成流化樣本的數據;(5)按照ISO媒體文件格式的規定生成媒體文件;(6)流媒體伺服器讀取生成的媒體文件。
2、 根據權利要求1所述的流媒體技術中根據RTP包生成ISO媒體文件 的方法,其特徵在於,步驟(1)具體為根據RTP包頭的mark位確定當 前的流化樣本的邊界。
3、 根據權利要求2所述的流媒體技術中根據RTP包生成ISO媒體文件 的方法,其特徵在於,步驟(l)中,所述流化樣本包括至少一個RTP數據 包。
4.根據權利要求1所述的流媒體技術中根據RTP包生成ISO媒體文件的方法,其特徵在於,步驟(1)中,所述流化樣本的邊界包括時戳.
5.根據權利要求1所述的流媒體技術中根據RTP包生成ISO媒體文件的方法,其特徵在於,步驟(2)具體為:將所述流化樣本中包括的所有RTP負載數據作為虛擬媒體樣本的採樣數據.
6、 根據權利要求1所述的流媒體技術中根據RTP包生成ISO媒體文件 的方法,其特徵在於,步驟(3)具體為媒體樣本統一編號,得到所述虛 擬媒體樣本的序號。
7、 根據權利要求1所述的流媒體技術中根據RTP包生成ISO媒體文件 的方法,其特徵在於,步驟(4)中,所迷流化樣本的數據包括RTP負栽數 據的入口。
8、根據權利要求1所迷的流媒體技術中根據RTP包生成ISO媒體文件 的方法,其特徵在於,步驟(6)具體為(61) 讀流化軌索引;(62) 根據流化軌索引到流化軌對應的數據區讀流化樣本的數據,讀出 每個RTP包頭和RTP負栽數據的索引;(63) 根據RTP負載數據的索引讀取對應媒體軌索引,計算出對應媒 體樣本的數據位置和長度;(64) 根據媒體軌索引讀媒體樣本的數據,生成完整的RTP數據包。
全文摘要
本發明公開了一種流媒體技術中根據RTP包生成ISO媒體文件的方法,步驟如下確定流化樣本的邊界;生成虛擬媒體樣本的採樣數據;確定虛擬媒體樣本的序號;生成流化樣本的數據;按照ISO媒體文件格式的規定生成媒體文件;流媒體伺服器讀取生成的媒體文件。與現有技術相比,簡化了處理流程,可以不關心具體的編碼格式,基本上保存了原有RTP的負載數據,可以真實地再現原有的RTP數據,而且這種方法具有良好的擴展性,可以比較容易地兼容以後擴充的編碼格式。
文檔編號H04L29/06GK101212476SQ20061017226
公開日2008年7月2日 申請日期2006年12月30日 優先權日2006年12月30日
發明者王志英, 阮亞平 申請人:中興通訊股份有限公司