RTCEncodedAudioFrame:getMetadata() 方法
注意:此功能在专用 Web 工作线程中可用。
getMetadata()
方法是 RTCEncodedAudioFrame
接口的一个方法,它返回一个包含与帧关联的元数据的对象。
这包括有关帧的信息,包括使用的音频编码、同步源和贡献源,以及序列号(对于传入帧)。
语法
getMetadata()
参数
无。
返回值
具有以下属性的对象
synchronizationSource
-
一个正整数,指示此帧描述的 RTP 数据包流的同步源 (“ssrc”)。源可能类似于麦克风,或者组合多个源的混音器应用程序。来自同一源的所有数据包共享相同的时钟源和序列空间,因此可以相互排序。请注意,具有相同值的两个帧指的是相同的源。
payloadType
-
一个介于 0 到 127 之间的正整数,描述 RTP 负载的格式。值的格式映射在 RFC3550 中定义,更具体地说,在 RFC3551 的第 6 节:有效负载类型定义中定义。
contributingSources
-
已为帧做出贡献的源 (ssrc) 的
数组
。考虑一个会议应用程序,它组合来自多个用户的音频。synchronizationSource
将包含应用程序的 ssrc,而contributingSources
将包含所有单个音频源的 ssrc 值。 sequenceNumber
-
传入音频帧(不适用于传出帧)的序列号,可用于重建帧的原始发送顺序。这是一个介于 0 到 32767 之间的数字。请注意,虽然在发送时按顺序分配数字,但它们将在 32767 溢出并从 0 重新开始。因此,为了比较两个帧序列号,以便确定一个是否假定在另一个之后,您必须使用序列号算术。
示例
此示例WebRTC 编码转换实现展示了如何在 transform()
函数中获取帧元数据并记录它。
addEventListener("rtctransform", (event) => {
const async transform = new TransformStream({
async transform(encodedFrame, controller) {
// Get the metadata and log
const frameMetaData = encodedFrame.getMetadata();
console.log(frameMetaData)
// Enqueue the frame without modifying
controller.enqueue(encodedFrame);
},
});
event.transformer.readable
.pipeThrough(transform)
.pipeTo(event.transformer.writable);
});
来自本地麦克风的最终对象可能如下所示。请注意,由于只有一个源,因此没有贡献源,并且没有 sequenceNumber
,因为这是一个传出帧。
{
"payloadType": 109,
"synchronizationSource": 1876443470
}
规范
规范 |
---|
WebRTC 编码转换 # dom-rtcencodedaudioframe-getmetadata |
浏览器兼容性
BCD 表仅在启用 JavaScript 的浏览器中加载。