RTCAudioSourceStats
**RTCAudioSourceStats
** 字典是 WebRTC API 的一部分,它提供有关音频轨道(MediaStreamTrack
)的统计信息,该音频轨道附加到一个或多个发送器(RTCRtpSender
)。
可以通过迭代 RTCStatsReport
来获取这些统计信息,该统计信息由 RTCRtpSender.getStats()
或 RTCPeerConnection.getStats()
返回,直到找到一个 type
为 media-source
且 kind
为 audio
的报告。
**注意:**有关远程来源轨道(正在接收的轨道)的音频信息,请参见 RTCInboundRtpStreamStats
。
实例属性
audioLevel
实验性 可选-
一个表示媒体源音频级别的数字。
totalAudioEnergy
实验性 可选-
一个表示媒体源在统计对象生命周期内的总音频能量的数字。
totalSamplesDuration
实验性 可选-
一个表示媒体源在统计对象生命周期内产生的所有样本的总持续时间的数字。
常见的媒体源属性
以下属性存在于 RTCAudioSourceStats
和 RTCVideoSourceStats
中。
trackIdentifier
-
一个包含与音频源关联的
MediaStreamTrack
的id
值的字符串。 kind
-
一个字符串,指示该对象是否表示视频源或媒体源的统计信息。对于
RTCAudioSourceStats
,这将始终为audio
。
常见的实例属性
以下属性是所有统计对象共有的。
id
-
一个唯一标识正在监控以生成此组统计信息的对象的字符串。
timestamp
-
一个
DOMHighResTimeStamp
对象,指示为此统计对象获取样本的时间。 type
-
一个值为
"media-source"
的字符串,指示该对象是RTCAudioSourceStats
或RTCVideoSourceStats
的实例。
描述
该接口提供有关附加到一个或多个发送器的音频媒体源的统计信息。信息包括当前音频级别,该级别是在短时间(实现依赖)内平均得到的。
统计信息还包括在特定时间戳处的累计总能量和总样本持续时间。总计可用于确定统计对象生命周期内的平均音频级别。可以使用以下公式计算与 audioLevel
相同单位的均方根 (RMS) 值
还可以使用累计总计来计算任意时间段内的平均音频级别。
统计对象的总音频能量通过将每个样本的能量加起来在统计对象生命周期内累计,而总持续时间通过将每个样本的持续时间加起来累计。每个样本的能量使用以下公式确定,其中 sample_level
是样本的级别,max_level
是可编码的最高强度值,duration
是样本的持续时间(以秒为单位)。
可以使用以下公式计算两次不同的 getStats()
调用之间的平均音频级别,无论持续时间如何
示例
此示例演示了如何迭代从 RTCRtpSender.getStats()
返回的统计对象以获取音频源统计信息,然后提取 audioLevel
。
// where sender is an RTCRtpSender
const stats = await sender.getStats();
let audioSourceStats = null;
stats.forEach((report) => {
if (report.type === "media-source" && report.kind==="audio") {
audioSourceStats = report;
break;
}
});
const audioLevel = audioSourceStats?.audioLevel;
规范
规范 |
---|
WebRTC 统计 API 的标识符 # dom-rtcaudiosourcestats |
浏览器兼容性
BCD 表格仅在浏览器中加载