?? rfc3016_4.c
字號:
組織:中國互動出版網(http://www.china-pub.com/)
RFC文檔中文翻譯計劃(http://www.china-pub.com/compters/emook/aboutemook.htm)
E-mail:ouyang@china-pub.com
譯者: 李超(licc_li ,licc_li@sina.com)
譯文發布時間:2001-4-26
版權:本中文翻譯文檔版權歸中國互動出版網所有。可以用于非商業用途自由轉載,但必須
保留本文檔的翻譯及版權信息。
Network Working Group Y. Kikuchi
Request for Comments: 3016 Toshiba
Category: Standards Track T. Nomura
NEC
S. Fukunaga
Oki
Y. Matsui
Matsushita
H. Kimata
NTT
November 2000
用于MPEG-4視聽流的RTP負載格式
(RRC3016 RTP Payload Format for MPEG-4 Audio/Visual Streams)
本備忘錄的狀態
本文檔講述了一種Internet社區的Internet標準跟蹤協議,它需要進一步進行討論和建議以
得到改進。請參考最新版的“Internet正式協議標準” (STD1)來獲得本協議的標準化程度
和狀態。本備忘錄的發布不受任何限制。
版權聲明
Copyright (C) The Internet Society (2000). All Rights Reserved.
摘要
本文描述了在不使用MPEG-4系統的情況下攜帶MPEG-4音頻和視覺碼流的RTP負載格式。為了能
直接將MPEG-4音頻/視覺碼流映射到RTP包上,它提供了RTP包頭字段的使用規范和分片規則。同
時文檔中還規定了MIME類型注冊和會話描述協議(SDP)的使用。
目錄
本備忘錄的狀態 1
版權聲明 1
摘要 1
1. 介紹 2
1.1 MPEG-4視覺RTP負載格式 3
1.2 MPEG-4音頻RTP負載格式 3
2. 要求的術語 4
3. MPEG-4視覺碼流的RTP組包 4
3.1 MPEG-4視覺中RTP頭字段的使用 4
3.2 MPEG-4視覺碼流分片 5
3.3 MPEG-4視覺碼流組包示例 6
4. MPEG-4音頻碼流的RTP組包 7
4.1 RTP包格式 7
4.2 MPEG-4音頻中RTP頭字段的使用 8
4.3 MPEG-4音頻碼流分片 9
5. MPEG-4視聽流MIME類型注冊 9
5.1 MPEG-4視覺MIME類型注冊 9
5.2 MPEG-4視覺中SDP的用法 10
5.3 MPEG-4音頻MIME類型登記 11
5.4 SDP usage of MPEG-4 Audio 12
6. 安全性考慮 13
7. 參考文獻 13
8. 作者地址 13
9. 版權聲明 14
致謝 14
1. 介紹
本文描述的RTP負載格式規定了如何對MPEG-4音頻流[3][5]和MPEG-4視覺流[2][4]進行分
片并直接映射到RTP包中。
通過定義這些RTP負載格式,應用在不使用MPEG-4系統同步和流管理功能的情況下也能直接
傳輸MPEG-4音頻/視覺流。本文的RTP負載格式可應用于那些本身有流管理功能且不需要MPEG-4
系統中類似功能的系統。例如H.323終端,其MPEG-4音/視頻流的管理就不通過MPEG-4系統對象描
述符進行管理,而是使用了H.245。流直接映射到RTP包中,并沒有使用MPEG-4系統同步層。其它
例子包括SIP和RTSP,它們使用了MIME和SDP。本文所述之RTP負載格式定義了MIME類型和SDP的用
法,直接規定了不使用MPEG-4系統時的音/視覺流屬性(如,媒體類型,打包格式和編碼配置)。
這樣做明顯的優點在于可以象對付那些非MPEG-4編碼格式一樣,采用一種通用的方法來對這些
MPEG-4音頻/視覺RTP負載格式進行處理。而缺點在于同基于MPEG-4系統環境的互操作可能會比較
困難,其它負載格式則更適用于這些應用。
在此情況下,RTP包頭的語義必須定義的非常清晰,其中包括MPEG-4音/視頻數據元素的關
系。此外,為了增強錯誤恢復能力,在MPEG-4視頻流內部提供錯誤恢復工具,最好能為MPEG-4
視頻流定義好RTP包的分片規則。
1.1 MPEG-4視覺RTP負載格式
MPEG-4視覺是一種視覺編碼標準,它具有如下新特征:高編碼效率;高錯誤恢復性;基于
多樣的,任意形的對象編碼;等等[2]。其速率范圍介于數Kbps到幾Mbps。并且它能適應從無差
錯網絡到高錯誤率的移動網絡等多種網絡類型。
針對本文中定義的MPEG-4視覺碼流的分片規則我們應當注意到,由于MPEG-4視覺將用于多
種網絡類型,因此在分片方面不應有太多的限制。諸如“單個視頻包需映射到單個RTP包”這樣
的分片規則是不合理的。另一方面,大意,以及未知媒體分片也可能導致錯誤恢復率和帶寬利用
率的下降。本文描述的分片規則十分靈活,但在應用MPEG-4視覺錯誤恢復功能時為了避免無意義
的分片也要定義一個最小的規則集。
分片規則建議不要在一個RTP包中映射多個VOP,這樣可以保證RTP時間戳能唯一地表示VOP
分幀時間。而相反地,由于MPEG-4視頻可以產生非常小的VOP,如一個只包含VOP頭的空VOP
(vop_coded=0)或者一個僅有少量碼塊的任意形VOP。為了減低開銷,分片規則應允許將多個VOP
連接到一個RTP包中。(參見3.2節分片規則(4)和3.1節標志位和時間戳)
在H.261或MPEG-1/2等視頻編碼工具中往往通過所定義的額外媒體RTP包頭來幫助在包丟失
時恢復損壞的圖片包頭,而MPEG-4視覺已經為此提供了錯誤恢復功能,它們可用于RTP/IP網絡,
也可用于其它網絡(H.223/Mobile,MPEG-2/TS等)。因此,無需在MPEG-4視覺RTP負載格式中定
義額外的RTP包頭。
1.2 MPEG-4音頻RTP負載格式
MPEG-4音頻是一種集成了多種類型音頻編碼工具的新型音頻標準。LATM(低負擔MPEG-4音頻傳
輸復用)通過相當小的耗費來管理音頻數據序列。對那些僅有音頻的應用,不使用MPEG-4系統而
采用直接將基于LATM的MPEG-4音頻碼流映射到RTP包的方式是很值得的。
LATM有如下幾項復用特性:
- 在音頻數據中攜帶配置信息,
- 將多個音頻幀連接到一個音頻流中,
- 多對象(程序)復用
- 可伸縮層的復用,
在RTP傳輸中不需要最后兩項性質。因此,基于本文規定的RTP組包原則的應用程序不能使
用這兩個性質。由于LATM是為自然音頻編碼工具所開發,而非為合成工具開發,要用其來傳輸結
構化音頻(SA)數據和文語轉換接口(TTSI)數據是很困難的。所以不能通過本文檔的RTP組包方法
傳輸SA數據和TTSI數據。
為了傳輸可伸縮流,每層的音頻數據都應當打包到不同的RTP包,如此才可保證在IP層對不
同層有不同的處理,比如通過一些區分服務。另一方面,可伸縮流的所有配置數據都包含于一個
LATM配置數據"SteamMuxConfig"中,并且每一層共享該 StreamMuxConfig。層與其配置數據的映
射是通過音頻數據附帶的LATM頭信息來完成的。為了表示可縮放流的依賴信息,還針對負載類型
(PT)值(見4.2節)的動態分配規則使用了一種限制措施。
對于MPEG-4音頻編碼工具而言,如果負載為單個音頻幀,則包的丟失不會影響鄰近包的解
碼。這同樣也適用于其它音頻編碼器。因此MPEG-4音頻不需要附加的用于錯誤恢復的媒體特定頭。
可采用已經存在的一些RTP保護機制來提高錯誤恢復率,如通用前向糾錯(RFC 2733)和冗余音頻
數據(RFC 2198)。
2. 要求的術語
本文中的關鍵字“必須”,“必須不”,“要求的”,“應該”,“不應該”,“會”,“不會”,
“建議”,“或許”,“可選的”在 RFC 2119 中解釋。
3. MPEG-4視覺碼流的RTP組包
本節規定了MPEG-4視覺內容的RTP組包規則。一個MPEG-4視覺碼流可直接映射到RTP包而不
需要增加額外的頭字段或者刪除任何視覺語法元素。為了將基本流的配置信息在相同的RTP端口
上傳送,必須使用合并配置/基本流模式。(參見ISO/IEC 14496-2[2][9][4]中6.2.1"開始編碼")
配置信息可以通過帶外方式規定。對于H.323終端,必須使用H.245碼
點"decoderConfigurationInformation"。如果系統使用MIME內容類型和SDP參數,如SIP和RTSP,
則必須用可選參數"config"來規定配置信息(參見5.1和5.2)。
當使用了短視頻頭模式時,應該H.263的RTP負載格式(建議使用RFC2429定義的格式,但也
可使用RFC2190格式以實現同舊系統的兼容性)。
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X| CC |M| PT | sequence number | RTP
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| timestamp | Header
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| synchronization source (SSRC) identifier |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| contributing source (CSRC) identifiers |
| .... |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
| | RTP
| MPEG-4 Visual stream (byte aligned) | Pay-
| | load
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| :...OPTIONAL RTP padding |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
Figure 1 – 一個MPEG-4視覺流的RTP包
3.1 MPEG-4視覺中RTP頭字段的使用
負載類型(PT): 為新的包格式分配RTP負載類型超出了本文的范疇,不在此贅述。特定類
型應用程序的RTP框架應該負責負載類型的分配,如若不能則應該通過帶外信令協議(如,
H.245,SIP等)在動態范圍內選擇一個負載類型。
擴展位(Extension-X bit): 由使用的RTP框架定義。
序列號(Sequence Number): 為了安全從一個隨機初始化值開始,每發送一個RTP數據包加1。
標志位(Marker-M) bit: 標志位設為1標志這是VOP的最后一個(或僅有一個)RTP包。若一
個RTP包中攜帶有多個VOP則標志位也設為1。
時間戳(Timestamp): 時間戳表示RTP包中的VOP采樣時間。為了安全,加上了一個隨機常數
偏移。
- 當一個RTP包攜帶多個VOP時,時間戳表示其中最早的一個VOP的時間。其它VOP的時間戳信
息通過VOP頭的時間戳字段可得(modulo_time_base和vop_time_increment)。
- 如果RTP包只含有配置信息或Group_of_VideoObjectPlane()字段,使用編碼隊列中下一個
VOP的時間戳。
- 如果RTP包僅含有visual_object_sequence_end_code信息,使用編碼隊列中前一個VOP
的時間戳。
除非由帶外方式規定,時間戳分辨率設為缺省值90KHz。
其它頭字段的使用見RFC 1889 [8]。
3.2 MPEG-4視覺碼流分片
使用合并配置/基本流模式,經過分片的MPEG-4視覺碼流直接映射到RTP負載而不用增加任何
額外頭字段或者刪除視覺語法元素。分片時可應用如下規則。
下文中,頭(Header)可能表示如下信息:
- 配置信息(視覺對象序列頭,視覺對象頭和視頻對象層頭)
- visual_object_sequence_end_code
- 基本流的進入點函數頭(Group_of_VideoObjectPlane(),
video_plane_with_short_header(), MeshObject()或FaceObject())
- 視頻包頭 (video_packet_header(),next_resync_marker()除外)
- gob_layer()頭
配置信息和進入點函數的定義參見ISO/IEC 14496-2 [2][9][4]的6.2.1 "開始編碼"
(1) 配置信息和Group_of_VideoObjectPlane()字段應位于RTP負載的開始位置或在語法上的
上層函數頭之后。
(2) 如果RTP負載中存在一個或多個頭,則RTP負載應從語法上的最高函數頭開始。
注意: visual_object_sequence_end_code作為最低函數。
(3) 一個頭不應分到多個RTP包中。
(4) 不同的VOP應該分片為不同的RTP包,一個RTP包只包括與唯一VOP的時間相關的數據(在
RTP包頭的時間戳字段中指出)。例外情況是如果VOP很小,則單個RTP包攜帶多個按解碼順序連
續的VOP。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -