5. SDP规范 (SDP Specification)
SDP描述由媒体类型"application/sdp"表示(参见第8节)。
SDP描述完全是文本形式的。SDP字段名和属性名仅使用UTF-8 [RFC3629]的US-ASCII子集,但文本字段和属性值可以(MAY)使用UTF-8编码的完整ISO 10646字符集,或由"a=charset:"属性(第6.10节)定义的其他字符集。使用完整UTF-8字符集的字段和属性值永远不会被直接比较,因此不需要UTF-8规范化。选择文本形式而不是二进制编码(如ASN.1或XDR)是为了增强可移植性,使各种传输方式能够被使用,并允许灵活的基于文本的工具集用于生成和处理会话描述。然而,由于SDP可能用于会话描述的最大允许大小受限的环境中,编码被特意设计得很紧凑。此外,由于描述可能通过非常不可靠的方式传输或被中间缓存服务器损坏,编码设计了严格的顺序和格式规则,以便大多数错误会导致格式错误的会话描述,可以轻松检测并丢弃。
SDP描述由许多行文本组成,格式为:
<type>=<value>
其中<type>是一个区分大小写的字符,<value>是结构化文本,其格式取决于<type>。通常,<value>是由单个空格字符分隔的若干子字段,或者是自由格式字符串,并且区分大小写,除非特定字段另有定义。"="符号两侧不使用空白分隔符,但是,值可以包含前导空白作为其语法的一部分,即该空白是值的一部分。
SDP描述必须(MUST)符合第9节中定义的语法。以下是语法概述。
SDP描述由会话级部分组成,后跟零个或多个媒体描述。会话级部分以"v="行开始,并继续到第一个媒体描述(或整个描述的末尾,以先到者为准)。每个媒体描述以"m="行开始,并继续到下一个媒体描述或整个会话描述的末尾,以先到者为准。通常,会话级值是所有媒体的默认值,除非被媒体级的等效值覆盖。
每个描述中的某些行是必需的,某些是可选的,但如果存在,它们必须(MUST)按照此处给出的确切顺序出现。(固定顺序大大增强了错误检测并允许使用简单的解析器)。在以下概述中,可选项用"*"标记。
会话描述 (Session description)
v= (协议版本 protocol version)
o= (发起者和会话标识符 originator and session identifier)
s= (会话名称 session name)
i=* (会话信息 session information)
u=* (描述的URI URI of description)
e=* (电子邮件地址 email address)
p=* (电话号码 phone number)
c=* (连接信息 connection information -- 如果包含在所有媒体描述中则不需要)
b=* (零个或多个带宽信息行 zero or more bandwidth information lines)
一个或多个时间描述:
("t=", "r=" 和 "z=" 行; 见下文)
k=* (已废弃 obsolete)
a=* (零个或多个会话属性行 zero or more session attribute lines)
零个或多个媒体描述
时间描述 (Time description)
t= (会话活动时间 time the session is active)
r=* (零个或多个重复时间 zero or more repeat times)
z=* (可选时区偏移行 optional time zone offset line)
媒体描述,如果存在 (Media description, if present)
m= (媒体名称和传输地址 media name and transport address)
i=* (媒体标题 media title)
c=* (连接信息 connection information -- 如果包含在会话级别则可选)
b=* (零个或多个带宽信息行 zero or more bandwidth information lines)
k=* (已废弃 obsolete)
a=* (零个或多个媒体属性行 zero or more media attribute lines)
类型字母集故意很小,不打算扩展——SDP解析器必须(MUST)完全忽略或拒绝任何包含它不理解的类型字母的会话描述。属性机制("a=",在第5.13节中描述)是扩展SDP并使其适应特定应用程序或媒体的主要手段。某些属性(第6节中列出的属性)具有定义的含义,但其他属性可以在媒体或会话特定的基础上添加。(除了媒体特定和会话特定范围之外的属性范围也可以在本文档的扩展中定义,例如[RFC5576]和[RFC8864])。SDP解析器必须(MUST)忽略任何它不理解的属性。
SDP描述可以包含在"u="、"k="和"a="行中引用外部内容的URI。在某些情况下,这些URI可能被解引用,使会话描述不是自包含的。
会话级部分中的连接("c=")信息适用于该会话的所有媒体描述,除非被媒体描述中的连接信息覆盖。例如,在下面的示例中,每个音频媒体描述的行为就像它被赋予了"c=IN IP4 198.51.100.1"一样。
一个SDP描述示例是:
v=0
o=jdoe 3724394400 3724394405 IN IP4 198.51.100.1
s=Call to John Smith
i=SDP Offer #1
u=http://www.jdoe.example.com/home.html
e=Jane Doe <[email protected]>
p=+1 617 555-6011
c=IN IP4 198.51.100.1
t=0 0
m=audio 49170 RTP/AVP 0
m=audio 49180 RTP/AVP 0
m=video 51372 RTP/AVP 99
c=IN IP6 2001:db8::2
a=rtpmap:99 h263-1998/90000
包含文本的字段,如会话名称字段和信息字段,是可能包含任何八位字节的八位字节字符串,但0x00(Nul)、0x0a(ASCII换行符)和0x0d(ASCII回车符)除外。序列CRLF(0x0d0a)用于结束一行,尽管解析器应该(SHOULD)容忍并接受以单个换行符终止的行。如果不存在"a=charset:"属性,这些八位字节字符串必须(MUST)被解释为包含UTF-8编码的ISO-10646字符。当存在"a=charset:"属性时,会话名称字段、信息字段和某些属性字段根据所选字符集进行解释。
会话描述可以在"o="、"u="、"e="、"c="和"a="行中包含域名。SDP中使用的任何域名必须(MUST)符合[RFC1034]和[RFC1035]。国际化域名(IDN)必须(MUST)使用[RFC5890]中定义的ASCII兼容编码(ACE)形式表示,不得(MUST NOT)直接用UTF-8或任何其他编码表示(此要求是为了与[RFC2327]和其他早期SDP相关标准兼容,这些标准早于国际化域名的发展)。
5.1. 协议版本 (Protocol Version "v=")
v=0
"v="行(version-field)给出会话描述协议的版本。本备忘录定义版本0。没有次版本号。
5.2. 起源 (Origin "o=")
o=<username> <sess-id> <sess-version> <nettype> <addrtype> <unicast-address>
"o="行(origin-field)给出会话的发起者(其用户名和用户主机的地址)以及会话标识符和版本号:
-
<username>是用户在发起主机上的登录名,如果发起主机不支持用户ID概念,则为"-"。<username>不得(MUST NOT)包含空格。 -
<sess-id>是一个数字字符串,使得<username>、<sess-id>、<nettype>、<addrtype>和<unicast-address>的元组形成会话的全局唯一标识符。<sess-id>的分配方法由创建工具决定,但建议使用时间戳(自1900年1月1日UTC以来的秒数)以确保唯一性。 -
<sess-version>是此会话描述的版本号。其用法由创建工具决定,只要在对会话描述进行修改时增加<sess-version>即可。同样,与<sess-id>一样,建议(RECOMMENDED)使用时间戳。 -
<nettype>是给出网络类型的文本字符串。最初,"IN"被定义为表示"Internet"(互联网),但将来可以(MAY)注册其他值(参见第8节)。 -
<addrtype>是给出后续地址类型的文本字符串。最初,定义了"IP4"和"IP6",但将来可以(MAY)注册其他值(参见第8节)。 -
<unicast-address>是创建会话的机器的地址。对于地址类型"IP4",这是机器的完全限定域名或机器的IP版本4地址的点分十进制表示。对于地址类型"IP6",这是机器的完全限定域名或按照[RFC5952]第4节中指定的方式表示的机器地址。对于"IP4"和"IP6",应该(SHOULD)给出完全限定域名形式,除非这不可用,在这种情况下可以(MAY)替换全局唯一地址。
通常,"o="行作为此版本会话描述的全局唯一标识符,除版本外的子字段一起标识会话,而不受任何修改的影响。
出于隐私原因,有时需要混淆会话发起者的用户名和IP地址。如果这是一个问题,可以(MAY)选择任意的<username>和私有的<unicast-address>来填充"o="行,前提是这些选择方式不影响字段的全局唯一性。
5.3. 会话名称 (Session Name "s=")
s=<session name>
"s="行(session-name-field)是文本会话名称。每个会话描述必须(MUST)有且仅有一个"s="行。"s="行不得(MUST NOT)为空。如果会话没有有意义的名称,则建议(RECOMMENDED)使用"s= "或"s=-"(即单个空格或破折号作为会话名称)。如果存在会话级"a=charset:"属性,则它指定"s="字段中使用的字符集。如果不存在会话级"a=charset:"属性,"s="字段必须(MUST)包含UTF-8编码的ISO 10646字符。
5.4. 会话信息 (Session Information "i=")
i=<session information>
"i="行(information-field)提供有关会话的文本信息。每个会话描述最多可以有一个会话级"i="行,每个媒体描述中最多有一个"i="行。除非提供了媒体级"i="行,否则会话级"i="行适用于该媒体描述。如果存在"a=charset:"属性,则它指定"i="行中使用的字符集。如果不存在"a=charset:"属性,"i="行必须(MUST)包含UTF-8编码的ISO 10646字符。
每个媒体描述最多可以使用一个"i="行。在媒体定义中,"i="行主要用于标记媒体流。因此,当单个会话具有多个相同媒体类型的不同媒体流时,它们最有可能有用。例如,两个不同的白板,一个用于幻灯片,一个用于反馈和问题。
"i="行旨在提供会话或媒体流目的的自由格式、人类可读的描述。它不适合自动机解析。
5.5. URI ("u=")
u=<uri>
"u="行(uri-field)指定统一资源标识符。URI应该(SHOULD)是指向有关会话的附加信息的指针。此字段是可选的(OPTIONAL)。
5.6. 电子邮件地址和电话号码 (Email Address and Phone Number)
e=<email-address>
p=<phone-number>
"e="行(email-field)和"p="行(phone-field)指定负责会议的人员的联系信息。这不一定与"o="行中给出的会话创建者相同,因为某人可能创建会话公告代表其他人行事。
会话描述中至多应该(SHOULD)有一个"e="字段和一个"p="字段。
如果提供了电子邮件地址或电话号码,则必须(MUST)遵守以下格式:
电子邮件地址:电子邮件地址的格式必须(MUST)符合[RFC5322]。电子邮件地址可以采用[RFC5322]定义的多种合法形式中的任何一种。例如:
[email protected] (Jane Doe)
e=Jane Doe <[email protected]>
电话号码:电话号码应该(SHOULD)使用[E.164]建议的格式给出。电话号码可以用空格分隔以帮助可读性。例如:
p=+1 617 555-6011
"e="和"p="字段都是会话级的,并且不受"a=charset:"属性的影响——即,它们必须(MUST)包含UTF-8编码的ISO 10646字符。
5.7. 连接信息 (Connection Information "c=")
c=<nettype> <addrtype> <connection-address>
"c="行(connection-field)包含连接数据。
会话描述必须(MUST)包含"c="行在每个媒体描述中,或在会话级包含单个"c="行。如果会话级和媒体级都提供了"c="行,则可以(MAY)在会话级提供额外的"c="行。
第一个子字段(<nettype>)是网络类型,它是一个文本字符串,给出网络的类型。最初定义了"IN",表示"Internet"(互联网),但将来可能会添加其他值(参见第8节)。
第二个子字段(<addrtype>)是地址类型。这允许SDP用于不基于IP的会话。本备忘录仅定义了IP4和IP6,但将来可以定义其他值(参见第8节)。
第三个子字段(<connection-address>)是连接地址。当<addrtype>是IP4和IP6时,允许连接地址的其他值取决于<addrtype>字段的值。
对于IP4和IP6地址:
<connection-address>是完全限定域名或单播IP地址或多播IP地址。
如果会话是多播的,连接地址将是IP多播组地址。如果会话不是多播的,则连接地址包含希望从其接收数据的单播IP地址。
IPv4多播连接地址:
使用ABNF,IPv4多播地址可以写为:
IPv4-multicast = m1 3( "." decimal-uchar )
m1 = ("22" ("4"/"5"/"6"/"7"/"8"/"9")) / ("23" DIGIT)
decimal-uchar = DIGIT / ("1" DIGIT) / ("2" ("0"/"1"/"2"/"3"/"4"))
换句话说,它是224.0.0.0-239.255.255.255范围内的地址。
IPv6多播连接地址:
IPv6多播地址根据[RFC4291]的规范给出。
单播连接地址:
单播连接地址是希望从其接收媒体的地址,对于将数据发送到该会话的实体。对于IPv4,这可能是发送方希望数据去向的地址,或者如果数据只会被一个实体接收,则是该实体的单播地址。对于IPv6,这通常是接收数据的实体的单播地址。
单播地址的示例:
c=IN IP4 198.51.100.1
c=IN IP6 2001:db8::1
多播地址的生存时间(TTL):
IPv4多播连接地址可以有多播地址附加一个生存时间(TTL)值,格式为:
<connection-address>/<ttl>
<ttl>值指示多播数据包将被分发的范围。TTL值必须(MUST)在0-255范围内。TTL对单播IP地址和IPv6多播地址无效,不得(MUST NOT)存在。
示例:
c=IN IP4 224.2.36.42/127
分层或分层编码方案:
分层或分层编码方案是一种在多个多播组上传输媒体的机制。SDP允许使用以下符号表示分层编码方案的地址,该符号表示连续的多播地址。格式为:
<base multicast address>[/<ttl>]/<number of addresses>
<number of addresses>必须(MUST)是整数大于等于1。它定义了从基地址开始的连续多播地址的数量。
示例:
c=IN IP4 224.2.1.1/127/3
表示地址224.2.1.1、224.2.1.2和224.2.1.3,每个都带有TTL 127。
对于IPv6,不使用此符号,因为IPv6多播地址不形成连续块。相反,必须在媒体("m=")级别包含多个"c="行,以指定用于分层或分层编码方案的不同地址。
5.8. 带宽信息 (Bandwidth Information "b=")
b=<bwtype>:<bandwidth>
"b="行(bandwidth-field)表示建议的带宽。<bwtype>是一个字母数字修饰符,给出带宽数字的含义。本规范定义了两个值,但可能会通过注册添加其他值(参见第8节和[RFC3556]):
-
CT:如果提供带宽类型CT(Conference Total),则它给出会议的建议上限,以千比特每秒为单位。CT修饰符的底层假设与RTP [RFC3550]中的"会话带宽"概念相同。
-
AS:AS(Application-Specific Maximum)修饰符是特定于应用程序的最大带宽概念。对于RTP传输的会话,AS解释为[RFC3550]中定义的RTP"会话带宽",包括所有RTP和RTCP数据包。对于不使用RTP的应用程序,AS为单个媒体流提供应用程序特定的最大带宽概念(尽管它可能仍然包括任何传输、网络或其他分层开销)。
<bandwidth>以千比特每秒(1000位/秒)为单位解释。
<bandwidth>被定义为整数,符合ABNF [RFC7405],并且必须(MUST)表示为十进制。
带宽字段是可选的(OPTIONAL),可能会出现多次。如果出现,它应该(SHOULD)在时间字段之后,在媒体字段之前。可以在会话级和/或媒体级指定它。媒体级带宽字段覆盖会话级带宽字段。
注意:CT给出了RTP会话的总带宽,而AS给出了单个RTP流的带宽。
示例:
b=CT:1000
b=AS:200
5.9. 时间活动 (Time Active "t=")
t=<start-time> <stop-time>
"t="行(time-field)指定会话的开始和停止时间。会话描述中必须(MUST)至少指定一个"t="行。如果会话在多个不规则时间段内活动,则可以使用多个"t="行来指定这些时间;否则应使用单个"t="行。每个时间字段都由其自己的重复("r=")字段修改(参见第5.10节)。
第一个值是会话的开始时间,第二个值是停止时间。这两个值都是网络时间协议(NTP)时间值,以秒为单位,自1900年以来[RFC5905]。
为了将这些值转换为UNIX时间,需要减去十进制2208988800。
如果<stop-time>为零,则会话不受限制,尽管它在<start-time>之前不会变为活动状态。如果<start-time>也为零,则会话被视为永久会话。
强烈不鼓励(STRONGLY RECOMMENDED against)永久会话的使用,并且仅应用于向后兼容。永久会话在会话公告中没有明确的结束时间,因此很难确定何时删除过时的会话。
NTP时间戳可以由POSIX(或其他)时间戳加上NTP固定点偏移量2208988800组成。表示NTP时间戳的ABNF生产式允许任意大的十进制整数,但建议实现限制自己为64位值。
示例:
t=3724394400 3724398000
这表示会话从2018年1月1日10:00 UTC开始,到2018年1月1日11:00 UTC结束。
值"t=0 0"表示永久会话。
5.10. 重复时间 (Repeat Times "r=")
r=<repeat interval> <active duration> <offsets from start-time>
"r="行(repeat-field)指定重复的会话时间。例如,如果会话在每周一上午10点活动1小时,持续三个月,则可以使用"r="行来表达这一点。
重复时间是可选的(OPTIONAL)。如果指定,它跟随在相关的"t="字段之后,并修改该字段的含义。可以指定多个"r="字段,每个都表示相关"t="字段的另一组重复间隔。"r="行包含以下字段:
-
<repeat interval>:指示会话重复的时间段。例如,如果此字段为"7d",则会话每7天重复一次。 -
<active duration>:指示每次重复中会话活动的持续时间。 -
<offsets from start-time>:一个或多个值,指示会话重复应该开始的偏移量。这些偏移是相对于"t="字段中指定的开始时间的。
时间值默认以秒为单位,但也可以使用单位说明符。允许的单位说明符有:
- d - 天(86400秒)
- h - 小时(3600秒)
- m - 分钟(60秒)
- s - 秒(1秒,默认)
因此,相同的会话可以使用以下任何一种方式描述:
r=604800 3600 0 90000
r=7d 1h 0 25h
r=7 days 1 hour 0 25 hours
月份和年份单位不允许使用,因为它们不是固定的时间长度。
示例:假设一个会话每周四下午10点(UTC)开始,持续1小时,连续3个月(从1996年8月开始)。相应的"t="和"r="字段可能是:
t=2873397496 2881173896
r=604800 3600 0 25200 50400 75600 100800 126000
或等效地:
t=2873397496 2881173896
r=7d 1h 0 7h 14h 21h 28h 35h
第一个重复在开始时间发生(偏移量0),后续重复在每7天的7小时、14小时、21小时、28小时和35小时偏移处发生。
5.11. 时区调整 (Time Zone Adjustment "z=")
z=<adjustment time> <offset> <adjustment time> <offset> ...
"z="行(timezone-field)指定时区偏移的改变,例如夏令时的开始或结束。这允许精确计算在时区偏移改变期间的会话活动时间。
时区调整字段是可选的(OPTIONAL)。如果指定,它跟随最后一个"t="或"r="字段。
"z="行包含一系列<adjustment time>和<offset>对,指示会话描述中使用的UTC时间何时发生时区偏移改变,以及该改变的幅度。
-
<adjustment time>:偏移改变发生的NTP格式时间戳。 -
<offset>:从基准UTC时间的偏移量。时间可以用秒、分钟、小时或天来表示(使用前面描述的单位说明符)。正偏移表示向东移动时区,负偏移表示向西移动。
如果会话跨越时区偏移改变但没有提供"z="字段,则会话时间应解释为UTC时间。
示例:
z=2882844526 -1h 2898848070 0
这表示在NTP时间2882844526(1996年10月29日),时区偏移从UTC变为UTC-1小时(向西移动),然后在NTP时间2898848070(1997年3月30日),偏移返回到UTC。
5.12. 加密密钥 (Encryption Keys "k=")
k=<method>
k=<method>:<encryption key>
注意:使用"k="字段已过时。新实现不应(SHOULD NOT)使用它,应该(SHOULD)使用密钥管理协议或其他更安全的密钥交换机制。
"k="字段(key-field)用于在某些传统应用中传输加密密钥。存在此字段表示媒体流是加密的。
如果包含,它必须(MUST)在所有"t="和"r="行之后,在任何"a="行之前。它可以在会话级或媒体级提供。
<method>指示如何获取加密密钥。允许的方法是:
-
clear:
<encryption key>直接在"k="行中明文给出,格式为k=clear:<encryption key>。不建议使用此方法。 -
base64:
<encryption key>在"k="行中以base64编码形式给出,格式为k=base64:<encoded encryption key>。不建议使用此方法。 -
uri:提供一个URI,可以从中获取密钥,格式为
k=uri:<URI>。 -
prompt:不提供密钥,而是在使用会话描述时提示用户输入密钥,格式为
k=prompt。
示例:
k=clear:password
k=base64:cGFzc3dvcmQ=
k=uri:http://www.example.com/key
k=prompt
5.13. 属性 (Attributes "a=")
a=<attribute>
a=<attribute>:<value>
"a="行(attribute-field)用于扩展SDP。属性可以在会话级(在第一个"m="行之前)或媒体级(在"m="行之后)定义。
会话级属性是那些适用于整个会话的属性,媒体级属性是那些仅适用于单个媒体流的属性。某些属性可以在两个级别中的任何一个提供;媒体级属性覆盖会话级属性。
属性字段可以是以下两种形式之一:
-
属性字段(attribute-field),不带值。格式为
a=<attribute>。这用于表示属性的存在,其本身就是意义所在。 -
带值的属性字段(attribute-value-field)。格式为
a=<attribute>:<value>。这用于提供与属性关联的参数化信息。
属性名称必须(MUST)使用US-ASCII子集的字符,值可以使用允许的任何字符集(默认为UTF-8)。
第6节定义了一组标准属性。可以根据第8.2.4节中定义的过程注册其他属性。
如果属性不被理解,它必须(MUST)被忽略。
5.14. 媒体描述 (Media Descriptions "m=")
m=<media> <port> <proto> <fmt> ...
会话描述可以包含许多媒体描述。每个媒体描述以"m="行(media-field)开始,并继续到下一个媒体描述或会话描述的末尾。
媒体字段具有以下几个子字段:
5.14.1. <media>
<media>是媒体类型。定义的媒体类型有:
- audio:音频
- video:视频
- text:文本媒体,例如字幕或实时转录
- application:应用程序数据,例如白板或共享应用程序
- message:用于即时消息应用程序的消息流
可以通过向IANA注册来定义新的媒体类型(参见第8.2.2节)。
5.14.2. <port>
<port>是媒体流发送到的传输端口。端口的含义取决于第三个子字段中指定的传输协议。可以指定其他端口(例如,在使用RTP时的RTCP端口),或者在某些传输协议的媒体流使用多个端口时使用。
对于基于RTP的传输协议,指定的端口应该是媒体流的RTP端口,相应的RTCP端口是下一个(奇数)端口。例如,如果RTP端口是49170,则RTCP端口是49171。
如果应用程序使用多个端口,格式为<port>/<number of ports>。例如:
m=video 49170/2 RTP/AVP 31
表示端口49170和49171将用于视频。
如果传输协议不使用端口(例如,某些网络模拟应用程序),则可以使用值0,但除非协议定义另有说明,否则这不应该(SHOULD NOT)完成。
5.14.3. <proto>
<proto>是传输协议。传输协议的含义取决于地址类型字段。本规范为基于IP的媒体定义了几个值:
- udp:表示未指定的协议在UDP上运行
- RTP/AVP:表示使用音频视频配置文件(AVP) [RFC3551]的RTP [RFC3550]在UDP上运行
- RTP/SAVP:表示使用安全音频视频配置文件(SAVP) [RFC3711]的安全RTP在UDP上运行
- RTP/AVPF:表示使用AVP和RTCP基于反馈的扩展[RFC4585]的RTP在UDP上运行
- RTP/SAVPF:表示使用SAVP和RTCP基于反馈的扩展[RFC5124]的安全RTP在UDP上运行
可以通过向IANA注册来定义新的传输协议(参见第8.2.3节)。许多其他传输协议已在单独的RFC中定义。
5.14.4. <fmt>
<fmt>是媒体格式描述。对于音频和视频媒体,这通常是媒体有效负载类型,如[RFC3551]及其后继者中定义的。
当使用基于RTP的传输协议时,<fmt>子字段包含RTP有效负载类型号。当在媒体定义中列出多个有效负载类型号时,这意味着在会话期间可以使用所有这些有效负载格式,但第一个是首选格式。对于动态有效负载类型分配,必须使用"a=rtpmap:"属性(参见第6.6节)将有效负载类型号映射到媒体编码名称,该名称标识要使用的有效负载格式。
对于非RTP传输协议,<fmt>字段的解释特定于协议。
5.14.5. 示例
m=audio 49170 RTP/AVP 0
a=rtpmap:0 PCMU/8000
m=video 51372 RTP/AVP 99
a=rtpmap:99 h263-1998/90000
第一个媒体描述指定音频流将使用RTP/AVP协议发送到端口49170,使用有效负载类型0(PCMU)。
第二个媒体描述指定视频流将使用RTP/AVP协议发送到端口51372,使用动态有效负载类型99,该类型映射到H.263-1998视频编解码器。