RTCRtpSender: getParameters() 方法

Baseline 广泛可用 *

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2020 年 1 月⁩ 起,所有主流浏览器均已支持。

* 此特性的某些部分可能存在不同级别的支持。

RTCRtpSender 接口的 getParameters() 方法返回一个对象,该对象描述了发送方 track 的当前配置,以及该配置如何被编码并传输到远程 RTCRtpReceiver

语法

js
getParameters()

参数

无。

返回值

一个指示发送方当前配置的对象。

encodings

一个对象数组,每个对象指定了一个可以用来编码轨道媒体的编解码器的参数和设置。对象的属性包括:

激活

如果正在发送编码,则为 true(默认值);如果未发送或未使用,则为 false

codec 可选

选择此编码的 RTP 流使用的 媒体编解码器。如果未设置,用户代理可以选择任何为发送而协商的编解码器。

channels 可选

一个正整数,指示编解码器支持的通道数。例如,对于音频编解码器,值为 1 表示单声道,值为 2 表示立体声。

clockRate

一个正整数,指定编解码器的时钟频率(以赫兹 (Hz) 为单位)。时钟频率是编解码器的 RTP 时间戳前进的速率。大多数编解码器都有特定的允许值或允许值范围。IANA 维护着一个编解码器及其参数列表,包括其时钟频率。

mimeType

一个字符串,指示编解码器的 MIME 媒体类型和子类型,格式为 "type/subtype"。RTP 使用的 MIME 类型字符串与别处使用的不同。IANA 维护着一个有效 MIME 类型注册表。另请参阅 WebRTC 使用的编解码器,了解可能在此引用的潜在编解码器的详细信息。

sdpFmtpLine 可选

一个字符串,提供本地描述提供的特定于格式的参数。

dtx 已弃用 非标准

仅用于 RTCRtpSender 且其 kindaudio 的情况。此属性指示是否正在使用不连续传输(一种电话自动关闭或麦克风静音的功能,在没有语音活动时使用)。值可以是 enableddisabled

maxBitrate

一个正整数,表示用户代理允许分配给使用此编码进行编码的轨道的每秒最大比特数。其他参数可能会进一步限制比特率,例如 maxFramerate 的值,或用于传输或物理网络的可用带宽。

该值使用标准 Transport Independent Application Specific Maximum (TIAS) 带宽计算,该带宽由 RFC 3890, section 6.2.2 定义;这是所需的最大带宽,不考虑 IP、TCP 或 UDP 等协议的开销。

请注意,比特率可以通过多种方式实现,具体取决于媒体和编码。例如,对于视频,低比特率可能通过丢帧来实现(比特率为零可能只允许发送一帧);而对于音频,如果比特率太低而无法发送,轨道可能必须停止播放。

maxFramerate

一个指定允许此编码的最大每秒帧数的值。

优先级

一个字符串,指示 RTCRtpSender 的优先级,这可能会决定用户代理如何在发送方之间分配带宽。允许的值为 very-lowlow(默认值)、mediumhigh

rid

一个字符串,如果设置,则指定将使用 RID 头部扩展发送的RTP 流 IDRID)。此参数不能通过 setParameters() 修改。其值只能在收发器首次创建时设置。

scaleResolutionDownBy

仅用于轨道 kindvideo 的发送方。这是一个浮点值,指定编码过程中视频缩小的因子。默认值 1.0 表示视频将以其原始大小编码。值为 2.0 表示视频帧在每个维度上缩小 2 倍, resulting in a video 1/4 the size of the original. 该值不得小于 1.0(尝试将视频放大将抛出 RangeError)。

transactionId

一个包含唯一 ID 的字符串。此值用于确保 setParameters() 只能用于修改由特定先前调用 getParameters() 返回的参数。调用者无法更改此参数。

codecs

一个对象数组,描述发送方已设置为启用的、并准备使用的 媒体编解码器。此参数在初始设置后无法更改。

数组中的每个编解码器对象可能具有以下属性:

channels 可选

一个正整数,指示编解码器支持的通道数。例如,对于音频编解码器,值为 1 表示单声道,值为 2 表示立体声。

clockRate

一个正整数,指定编解码器的时钟频率(以赫兹 (Hz) 为单位)。时钟频率是编解码器的 RTP 时间戳前进的速率。大多数编解码器都有特定的允许值或允许值范围。IANA 维护着一个编解码器及其参数列表,包括其时钟频率。

mimeType

一个字符串,指示编解码器的 MIME 媒体类型和子类型,格式为 "type/subtype"。RTP 使用的 MIME 类型字符串与别处使用的不同。IANA 维护着一个有效 MIME 类型注册表。另请参阅 WebRTC 使用的编解码器,了解可能在此引用的潜在编解码器的详细信息。

payloadType

用于标识此编解码器的 RTP 有效载荷类型

sdpFmtpLine 可选

一个字符串,提供本地描述提供的特定于格式的参数。

headerExtensions

一个零个或多个 RTP 头部扩展的数组,每个扩展都标识了发送方或接收方支持的扩展。头部扩展在 RFC 3550, section 5.3.1 中进行了描述。此参数在初始设置后无法更改。

rtcp

一个对象,提供用于发送方的 RTCP 的配置参数。此参数无法更改。

该对象可以具有以下属性:

cname

一个只读字符串,提供 RTCP 使用的规范名称 (CNAME)(例如,在 SDES 消息中)。

reducedSize

一个只读布尔值,如果配置了缩小尺寸 RTCP(RFC 5506),则为 True;如果指定了复合 RTCP(RFC 3550),则为 False

degradationPreference 已弃用 可选

指定 WebRTC 层在带宽受限情况下优化带宽与质量的首选方式。可能的值为 maintain-frameratemaintain-resolutionbalanced。默认值为 balanced

示例

此示例获取发送方的当前事务 ID;事务 ID 唯一标识当前一组参数,以确保对 setParameters() 的调用始终按正确的顺序处理,避免意外地用旧参数覆盖参数。

js
function getSenderTransactionID(sender) {
  let parameters = sender.getParameters();

  return parameters.transactionId;
}

同样,此代码获取 RTCRtpSender 上用于 RTCP 的规范名称 (CNAME)。

js
function getRtpCNAME(sender) {
  let parameters = sender.getParameters();

  return parameters.rtcp.cname;
}

规范

规范
WebRTC:浏览器中的实时通信
# dom-rtcrtpsender-getparameters

浏览器兼容性

另见