RFC 3016 中文

编程入门 行业动态 更新时间:2024-10-16 00:23:09

RFC 3016 <a href=https://www.elefans.com/category/jswz/34/1769975.html style=中文"/>

RFC 3016 中文

组织:中国互动出版网(/)
RFC文档中文翻译计划(.htm)
E-mail:ouyang@china-pub
译者: 李超(licc_li ,licc_li@sina)
译文发布时间: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。
   注意:当一个RTP负载携带了多个VOP时,第一个VOP后的VOP时间戳在解码时通过计算得到。
该操作仅当RTP包标志位为1且RTP负载开始符合起始码时才是必须的。 (见3.1节时间戳和标志
位)
   (5) 建议一个视频包组成一个RTP包进行发送。视频包的大小应该按如下方式来决定,即,结
果RTP包大大小不得超过路径MTU的大小。
   注意:规则(5)不适用于以下场合,编码器配置禁止视频包(通过将VOL头中的
resync_marker_disable设置为1),或者编码工具不支持视频包。在此情况下,一个VOP可能得
经过在任意字节位置进行分片后才能发送。
   视频包从VOP头或视频包头开始,后面紧接着是motion_shape_texture(),以 
next_resync_marker()或next_start_code()结束。
3.3 MPEG-4视觉码流组包示例
   Figure 2所示为按照3.2描述标准产生的RTP包的例子。
   (a)例表示包含了配置信息的MPEG-4视觉码流中第一个RTP包或随机访问点。根据规则 (1),
视觉对象序列头应位于RTP负载的开始处,视觉对象头和视频对象层头(VO header, VOL header)
之前。3.2中定义的分片规则保证了从visual_object_sequence_start_code开始的配置信息通常
都位于RTP负载的开始位置,RTP接收端可通过检查RTP负载的头32位字段是否是
visual_object_sequence_start_code来检测随机访问点。
   (b)是另一个包含配置信息的RTP包例子。它同(1)的区别为该RTP包在VOP中的配置信息后还包
含有视频包。由于配置信息长度很短(一般为数十字节),一个RTP包如果仅含有配置信息会造
成系统开销的上升,因此配置信息和其后的GOV和/或(部分)VOP可以打包到同一个RTP包中,如此
例中所示。
   (c)是RTP包中包含了Group_of_VideoObjectPlane(GOV)的例子。根据规则(1),GOV位于RTP
负载的开始位置。一个仅有GOV字段的RTP包大小只有7个字节,这是对RTP/IP头开销的极大浪费。
因此后续的VOP(或部分地)可以如本例所示打到同一个RTP包中。
   (d)例中,一个视频包被打包到一个RTP包中。当网络中包丢失率很高时推荐采用该方法。甚
至当包含有VOP头的RTP包被丢弃时其它RTP包还可通过使用视频包头中的HEC信息进行解码。无需
任何额外的RTP头字段。
   (e)例为多个视频包打在一个RTP包中的情况。 在底层网络速率很低时这种组包方式可高效地
节约RTP/IP头开销。不过,由于一个RTP包的丢失会导致将多个视频包同时丢失,这种方法会降
低丢包恢复率。一个RTP包中理想的视频包数目和RTP包长度可通过丢包率和底层网络传输的比特
率来决定。
   (f)示例为在VOL头中将resync_marker_disable设置为1从而禁止使用视频包。在此情况下,
一个VOP可按照任意字节位置分为多个RTP包。比如将一个VOP按照固定长度进行分片。这种编码
配置方法和RTP分片可应用于能提供极低错误率保证的网络。另一方面,由于它的丢包恢复率很
差,建议不要在error-prone环境中使用。
Figure 3 所示为按3.2规则建立的RTP包。
按照(a)中将一个头分片到多个RTP包不仅造成RTP/IP头开销增加,也导致了错误恢复能力
的下降。因此在规则(3)中禁止这样做。
当将多个视频包串联到一个RTP包中时,VOP头或video_packet_header()不应放到RTP负载
的中间。基于错误恢复的目的,(b)中的组包方法违反了规则(2)。比较该例同图2中的例6,尽管
两者都是把两个视频包映射到两个RTP包中,其丢包恢复率却不一样。即是说,假设第二个RTP
包丢失了,图3例(b)中两个视频包都将丢失,而在图2例(d)中仅丢失视频包2。
    +------+------+------+------+
(a) | RTP  |  VS  |  VO  | VOL  |
    |header|header|header|header|
    +------+------+------+------+

    +------+------+------+------+------------+
(b) | RTP  |  VS  |  VO  | VOL  |Video Packet|
    |header|header|header|header|            |
    +------+------+------+------+------------+

    +------+-----+------------------+
(c) | RTP  | GOV |Video Object Plane|
    |header|     |                  |
    +------+-----+------------------+

    +------+------+------------+  +------+------+------------+
(d) | RTP  | VOP  |Video Packet|  | RTP  |  VP  |Video Packet|
    |header|header|    (1)     |  |header|header|    (2)     |
    +------+------+------------+  +------+------+------------+

    +------+------+------------+------+------------+------+------------+
(e) | RTP  |  VP  |Video Packet|  VP  |Video Packet|  VP  |Video Packet|
    |header|header|     (1)    |header|    (2)     |header|    (3)     |
    +------+------+------------+------+------------+------+------------+

    +------+------+------------+  +------+------------+
(f) | RTP  | VOP  |VOP fragment|  | RTP  |VOP fragment|
    |header|header|    (1)     |  |header|    (2)     | ___
    +------+------+------------+  +------+------------+

     图2 – RTP组包的MPEG-4视觉码流示例
    +------+-------------+  +------+------------+------------+
(a) | RTP  |First half of|  | RTP  |Last half of|Video Packet|
    |header|  VP header  |  |header|  VP header |            |
    +------+-------------+  +------+------------+------------+

    +------+------+----------+  +------+---------+------+------------+
(b) | RTP  | VOP  |First half|  | RTP  |Last half|  VP  |Video Packet|
    |header|header| of VP(1) |  |header| of VP(1)|header|    (2)     |
    +------+------+----------+  +------+---------+------+------------+

   图3 – 禁止RTP组包的MPEG-4视觉码流示例

4. MPEG-4音频码流的RTP组包
本节规定了MPEG-4音频码流的RTP组包规则。MPEG-4音频流必须通过LATM工具进行格式化,
然后基于LATM的流将按照下面三节的描述映射到RTP包上。
4.1 RTP包格式
基于LATM的流由一个包含了一个或多个音频帧的audioMuxElements序列组成。一个完整或
部分完整的audioMuxElement可直接映射到一个RTP负载上,无需删除任何audioMuxElement语法
元素 (见图4)。每个audioMuxElement的第一个字节应该位于RTP包第一个负载所在的位置。
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
:                 audioMuxElement (byte aligned)                :Payload
|                                                               |
|                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               :...OPTIONAL RTP padding        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
             图4 – 一个MPEG-4音频RTP包
为了对audioMuxElement进行解码,必需得在其后通过带外方法指明muxConfigPresent。当
SDP用于此指示时,MIME参数"cpresent“就对应了muxConfigPresent信息。(见5.3节).
muxConfigPresent: 如果该值为1(带内模式),audioMuxElement应包括一个指示位
"useSameStreamMux"并且可能包括一个音频压缩配置信息"StreamMuxConfig"。
UseSameStreamMux位表示是否前一帧中的StreamMuxConfig元素也应用于本帧。如果
useSameStreamMux位指示要使用前一帧的StreamMuxConfig,而前一帧已经丢失,则将无法对当
前帧进行解码。因此,在带内模式下,StreamMuxConfig元素应根据网络条件重复传输。相反,
如果muxConfigPresent设为0(带外模式),StreamMuxConfig元素需要通过带外方式传输。如果是
SDP,则要使用MIME参数"config" (见5.3节).
4.2 MPEG-4音频中RTP头字段的使用
   负载类型(PT): 为这种新的包格式分配RTP负载类型超出了本文的范畴,不在此赘述。特
定类型应用程序的RTP框架应该负责为编码分配负载类型,如若不能则应该通过带外信令协
议(如,H.245,SIP等)在动态范围内选择一个负载类型。在为可伸缩流动态分配RTP负载类
型时,应该为每一层分配不同的值。这些值应按层依赖关系的强弱顺序进行分配,最基本的
层拥有最小的值。
   标志位(M): 标志位指出了audioMuxElement范围。置为1说明RTP包包含有完整的   
audioMuxElement或audioMuxElement分片的最后一片。
   时间戳: 时间戳表示RTP包中第一个音频帧的采样时间。从安全角度出发,建议时间戳从一个
随机值开始。除非指定使用带外方式,时间戳的分辨率设为缺省值90KHz。
   顺序号: 为了更加安全,顺序号应从一个随机初始化值开始,每发送一个RTP数据包加1。
   其它头字段的使用遵照RFC 1889 [8]。
4.3 MPEG-4音频码流分片
建议每个RTP包中只放一个audioMuxElement。如果audioMuxElement的大小保持得足够小,
使得RTP包的大小不超过路径MTU的大小,则没有问题。否则就得将audioMuxElement分片到多个
包中。
5. MPEG-4视听流MIME类型注册
   接下来的几节描述了MPEG-4视听流的MIME类型注册。MPEG-4视觉流的MIME类型注册和SDP使用
在5.1和5.2节中描述,而MPEG-4音频流的MIME类型注册和SDP用法在5.3和5.4中描述。
5.1 MPEG-4视觉MIME类型注册
   MIME媒体类型名: video
   MIME子类型名: MP4V-ES
   必需的参数: none
   可选参数:
      rate(速率): 该参数仅用于RTP传输。表示RTP头时间戳字段的分辨率。如果未指定该参数
则使用缺省值90000(90KHz)。
      profile-level-id(框架级别ID): 一个表示Table G-1 of ISO/IEC 14496-2 [2][4]定义
的MPEG-4视觉框架和级别值的十进制数 (profile_and_level_indication)。该参数可用于性能
交换或事务建立过程中以表示MPEG-4视觉框架和MPEG-4视觉编码器能达到的级别组合。如未指定
该参数,则采用缺省值1。
      Config(配置): 该参数用于表示相应MPEG-4视觉流的配置。不应用于表示性能交换过程中
的编码能力。它是一个16进制形式的8位字节串,可表示ISO/IEC14496-2 [2][4][9]6.2.1小节中
定义的MPEG-4视觉配置信息。该配置信息可按照MSB(最高有效位)优先原则直接映射到8位字节
串。配置信息的第一位应位于第一个8位组的MSB。该参数表示的配置信息应和相应的MPEG-4视觉
流的配置信息相同,除了first_half_vbv_occupancy和latter_half_vbv_occupancy,如果存在,
那么它在MPEG-4视觉流内重复的配置信息方面有所不同。(见ISO/IEC14496-2的6.2.1小节“开始
编码”).
      关于该参数的用法示例如下:
        -  MPEG-4 Visual Simple Profile/Level 1:
            Content-type: video/mp4v-es; profile-level-id=1
        -  MPEG-4 Visual Core Profile/Level 2:
            Content-type: video/mp4v-es; profile-level-id=34
        -  MPEG-4 Visual Advanced Real Time Simple Profile/Level 1:
            Content-type: video/mp4v-es; profile-level-id=145
   已发行规范:
      MPEG-4视觉流规范参见ISO/IEC 14469-2 [2][4][9]。RTP负载格式在RFC 3016中描述。
   编码考虑:
      视频位流必须参照MPEG-4视觉规范(ISO/IEC 14496-2)产生。一个视频位流是二进制数据,
必须编码为可按非二进制传输(对于Email,Base64编码就已经足够了)。该类型也定义为通过RTP
传输。RTP包必须遵照RFG 3016定义的MPEG-4视觉RTP负载格式进行组包。
   安全性考虑:
      参见RFC 3016第6节。
   互操作考虑:
      MPEG-4视觉为视觉对象编码提供了大量丰富的工具集。为了高效地实现标准,也为特定的
应用提供了MPEG-4视觉工具子集。这些子集称做'Profiles',限制了实现一个编码器所需要的工
具集的大小。为了控制计算复杂性,每个Profile分为若干级别。Profile@Level组合如下:
? 一个编解码器开发者,负责实现所需的标准子集,维护和相同组合内其它MPEG-4设备
的相互作用。
? 检查MPEG-4设备是否符合标准 ('一致性测试')。
      视觉流应同参数"profile-level-id"中规定的MPEG-4视觉Profile@Level兼容。
      发送方与接收方的互操作性,通过在MIME内容中指定参数"profile-level-id",或者通过
协调性能交换/声明过程将该参数设为相同值来实现。
   使用该媒体类型的应用:
      视听流和会议工具,Internet消息和电子邮件应用。
   附带信息: 无
   联系人及其邮件地址:
      RFC 3016作者(见第8节)。
   预期用法: COMMON
   作者或修订者:
      RFC 3016作者(见第8节)。
5.2 MPEG-4视觉中SDP的用法
   MIME媒体类型video/MP4V-ES串可映射到SDP(RFC 2327),如下:
? MIME类型(video)加入SDP "m="作为媒体名。
? MIME子类型加入SDP "a=rtpmap"作为编码名。
? 可选参数"rate"加入"a=rtpmap"作为时钟速率
? 可选参数"profile-level-id"和"config"加入"a=fmtp"行分别表示编码器能力和配
置。这些参数以分号分隔,按照“参数=值”的成对形式表示为MIME媒体类型串。
   下面是SDP中的媒体表示示例:
Simple Profile/Level 1, rate=90000(90kHz), "profile-level-id"且"config"存在于 
"a=fmtp"行:
? m=video 49170/2 RTP/AVP 98
? a=rtpmap:98 MP4V-ES/90000
? a=fmtp:98 
profile-level-id=1;config=000001B001000001B5090000010000000120008440FA282C
2090A21F
Core Profile/Level 2, rate=90000(90kHz), "profile-level-id"存在于"a=fmtp"行:
? m=video 49170/2 RTP/AVP 98
? a=rtpmap:98 MP4V-ES/90000
? a=fmtp:98 profile-level-id=34
Advance Real Time Simple Profile/Level 1, rate=90000(90kHz),"profile-level-id"存在于
"a=fmtp"行:
  m=video 49170/2 RTP/AVP 98
  a=rtpmap:98 MP4V-ES/90000
  a=fmtp:98 profile-level-id=145
5.3 MPEG-4音频MIME类型登记
   MIME媒体类型名: audio
   MIME子类型名: MP4A-LATM
   必需参数:
      速率: 速率参数表示RTP时间戳的时钟速率。缺省值为90000。仅当该值设置为与音频
采样频率(每秒钟采样数)相同值时也可指定其它非缺省速率。
   可选参数:
profile-level-id: 一个十进制形式的MPEG-4音频框架级别表示值,定义于
ISO/IEC 14496-1 ([6]及其修订版本)。该参数表示解码器可以使用哪个MPEG-4音频工
具子集。如果没有在性能交换或者事务建立过程中指定该参数,则使用缺省值30(自然
音频Profile/Level 1)
object: 一个十进制形式的MPEG-4音频对象类型值,定义于ISO/IEC 14496-3 [5]。
该参数指定了编码器使用的工具。可用该参数来限制性能于规定的"profile-level-id"
之下。
bitrate: 音频数据流的数据传输率。
cpresent: 一个布尔值参数,表示音频负载配置数据是否已经复用到一个RTP负载
中(参见4.1)。0表示尚未复用,1表示已经复用。该参数的缺省值为1。
config: 一个16进制形式的8位字节串,可表示ISO/IEC 14496-3 [5] (参见4.1)
定义的MPEG-4音频负载配置数据"StreamMuxConfig"。该配置信息可按照MSB(最高有效
位)优先原则直接映射到8位字节串。配置数据的第一位应位于第一个8位组的MSB。在
最后一个8位组中,如果需要,应该在配置数据后跟随填充0。
ptime: 推荐的包持续时间,单位毫秒。
   已发行规范:
      本文描述了负载格式规范。
      编码规范遵照ISO/IEC 14496-3 [3][5]。
   编码考虑:
      该类型仅定义为用于通过RTP进行传输。
   安全性考虑:
      参见RFC 3016第6节。
   互操作性考虑:
      MPEG-4音频提供了大量而丰富的工具用于音频对象编码。为了更高效地实现标准,还
提供了MPEG-4音频工具子集(类似于5.1中的MPEG-4视觉)。音频流工具应同
"profile-level-id"参数指定的Profile@Level一致。发送方与接收方之间的互操作性可通
过在MIME内容中指定参数"profile-level-id",或在协商性能交换过程中,设置该参数为相
同值来实现。此外参数"object"可用于在性能交换中将能力限制于指定的Profile@Level级
别范围内。
   使用该媒体类型的应用:
      视听流与会议工具。
   附加信息: 无
   联系人:
      参见RFC 3016第8节.
   预期用法: COMMON
   作者/修订者:
      参见RFC 3016第8节.
5.4 SDP usage of MPEG-4 Audio
MIME媒体类型audio/MP4A-LATM串可以映射到SDP(RFC 2327)的字段上, 如下:
? MIME类型(audio)加入SDP"m="中作为媒体名。
? MIME子类型(MP4A-LATM)加入SDP"a=rtpmap"作为编码名称
? 必需参数"rate"加入"a=rtpmap"的作为时钟速率。
? 可选参数"ptime"加入SDP "a=ptime"属性
? 可选参数"profile-level-id"加入"a=fmtp"行表示编码器能力。参数"object"
加入"a=fmtp" 属性,负载格式相关参数"bitrate", "cpresent"和 "config"
加入"a=fmtp"行。这些参数以分号分隔,按照“参数=值”的成对形式表示MIME
媒体类型串。
   下面是SDP中媒体表示的例子: 
对于6 kb/s的CELP码流 (音频采样频率为8 kHz),
? m=audio 49230 RTP/AVP 96
? a=rtpmap:96 MP4A-LATM/8000
? a=fmtp:96 profile-level-id=9; object=8; cpresent=0; 
config=9128B1071070
? a=ptime:20
对于64 kb/s的AAC LC立体声码流(音频采样频率为24 kHz),
? m=audio 49230 RTP/AVP 96
? a=rtpmap:96 MP4A-LATM/24000
? a=fmtp:96 profile-level-id=1; bitrate=64000; cpresent=0;
? config=9122620000
   在上面两个例子中,音频配置数据仅通过SDP进行了描述,并没有复用到RTP负载中去。
此外,"时钟速率(clock rate)"也设置为音频采样速率。
   如果时钟速率设置为缺省值,并且必须要取得音频采样速率,则可通过解析参数"config"
来实现。举例如下:
? m=audio 49230 RTP/AVP 96
? a=rtpmap:96 MP4A-LATM/90000
? a=fmtp:96 object=8; cpresent=0; config=9128B1071070
   下例显示RTP负载中的音频配置数据。      
? m=audio 49230 RTP/AVP 96
? a=rtpmap:96 MP4A-LATM/90000
? a=fmtp:96 object=2; cpresent=1
6. 安全性考虑
本规范中描述的RTP包负载格式从属于RTP规范[8]中讨论的安全性考虑。这意味着媒体
流的机密性要通过加密来实现。由于负载格式中数据压缩是端到端的,加密也可在压缩数据
上进行,两种操作间并无矛盾。
完整的MPEG-4系统允许传输各种类型的数据,包括Java小程序(MPEG-J)和脚本。本负
载格式限定为音频和视频流,因而不能用于传输这些活动内容。

更多推荐

RFC 3016 中文

本文发布于:2024-02-06 13:23:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1749592.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:中文   RFC

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!