Webrtc Statistics Dictionary

Identifiers for WebRTC's Statistics API

enum RTCStatsType {
    "codec",                        // RTCPeerConnection流当前正在使用的编解码器                        
    "inbound-rtp",                  // 收到的RTP流统计信息                                           
    "outbound-rtp",                 // 发送的RTP流统计信息                                              
    "remote-inbound-rtp",           // 对端收到的RTP流统计信息                                            
    "remote-outbound-rtp",          // 对端发送的RTP流统计信息                                            
    "media-source",                 // 发送到编码器的媒体信息                                          
    "csrc",                         // RTP流CSRC                                                     
    "peer-connection",              // RTCPeerConnection对象相关的统计信息                               
    "data-channel",                 // RTCDataChannel 相关的统计信息                                   
    "stream",                       // 媒体轨道统计信息包含与特定MediaStream相关的统计信息              
    "track",                        // 媒体轨道统计信息                                                     
    "transceiver",                  // RTCRtpTransceiver                                                
    "sender",                       // 媒体级指标相关的统计信息                                         
    "receiver",                     // 特定接收器相关的统计数据和相应的媒体级指标                        
    "transport",                    // 媒体传输统计信息                                                 
    "sctp-transport",               // RTCSctpTransport 对象相关的 SCTP 传输统计信息                   
    "candidate-pair",               // ICE候选对统计信息                                               
    "local-candidate",              // ICE 本地候选统计信息                                             
    "remote-candidate",             // ICE 远程候选统计信息                                             
    "certificate",                  // RTCIceTransport 使用的证书的信息                                 
    "ice-server"                    // 有关与ICE服务器的连接的信息                                  
};
RTCStatsType                                Dictionary                      
"codec"                                     RTCStats
                                            RTCCodecStats
                                            
"inbound-rtp"                               RTCStats
                                            RTCRtpStreamStats
                                            RTCReceivedRtpStreamStats
                                            RTCInboundRtpStreamStats
                                            
​
"outbound-rtp"                              RTCStats
                                            RTCRtpStreamStats
                                            RTCSentRtpStreamStats
                                            RTCOutboundRtpStreamStats
                                            
"remote-inbound-rtp"                        RTCStats
                                            RTCRtpStreamStats
                                            RTCReceivedRtpStreamStats
                                            RTCRemoteInboundRtpStreamStats
                                            
"remote-outbound-rtp"                       RTCStats        
                                            RTCRtpStreamStats
                                            RTCSentRtpStreamStats
                                            RTCRemoteOutboundRtpStreamStats
                                            
"media-source"                              RTCStats
                                            RTCMediaSourceStats
                                            RTCAudioSourceStats
                                            RTCVideoSourceStats
                                            
"csrc"                                      RTCStats
                                            RTCRtpContributingSourceStats
                                            
"peer-connection"                           RTCStats
                                            RTCPeerConnectionStats
                                            
"data-channel"                              RTCStats
                                            RTCDataChannelStats                 
                                            
"transceiver"                               RTCStats            
                                            RTCRtpTransceiverStats
                                            
"sender"                                    RTCStats
                                            RTCMediaHandlerStats
                                            RTCAudioSenderStats
                                            RTCVideoSenderStats
                                            
"receiver"                                  RTCStats
                                            RTCMediaHandlerStats
                                                                                
"transport"                                 RTCStats        
                                            RTCTransportStats
                                            
"sctp-transport"                            RTCStats
                                            RTCSctpTransportStats
                                            
"candidate-pair"                            RTCStats                    
                                            RTCIceCandidatePairStats
                                            
"local-candidate"                           RTCStats                
                                            RTCIceCandidateStats
                                            
"remote-candidate"                          RTCStats                
                                            RTCIceCandidateStats
                                            
"certificate"                               RTCStats                
                                            RTCCertificateStats
                                            
"ice-server"                                RTCStats        
                                            RTCIceServerStats
                                            

TCRtpStreamStats:适用于任何 RTP 流任何端的统计信息 RTCReceivedRtpStreamStats:在 RTP 流的接收端测量的统计数据,已知是因为它们在本地测量或通过 RTCP 接收器报告 (RR) 或扩展报告 (XR) 块传输。 RTCInboundRtpStreamStats:只能在 RTP 流的本地接收端测量的统计信息。 RTCRemoteInboundRtpStreamStats:与 RTP 流的远程接收端相关的统计信息 - 通常通过将本地数据与通过 RTCP RR 或 XR 块接收的数据相结合来计算。 RTCSentRtpStreamStats:在 RTP 流的发送端测量的统计数据,已知是因为它们是在本地测量的,或者因为它们是通过 RTCP 接收的,通常在 RTCP 发送者报告 (SR) 中 RTCOutboundRtpStreamStats:本地测量的统计数据。 RTCRemoteOutboundRtpStreamStats:与 RTP 流的远程发送端相关的统计信息,通常基于 RTCP SR 计算

dictionary RTCRtpStreamStats : RTCStats {
    required unsigned long      ssrc;           // 同步源标识符,每个[RFC3550]的无符号整数值
    required DOMString          kind;           // “音频”或“视频, 匹配”MediaStreamTrack的kind属性
    DOMString                   transportId;    // 唯一标识符与此RTP流相关联的RTCTransportStats
    DOMString                   codecId;        // 唯一标识符与RTP流关联的RTCCodecStats的对象相关联
};
​
enum RTCCodecType {
    "encode",
    "decode",
};
​
dictionary RTCCodecStats : RTCStats {
    required unsigned long      ;   // RTP编码或解码中使用的有效载荷类型
    RTCCodecType                codecType;      // 编码或解码 取决于此对象是否表示实现准备进行编码或解码的媒体格式
                                                // 如果字典成员不存在,则意味着该媒体格式既可以编码也可以解码
    required DOMString          transportId;    // 使用此编解码器的传输的唯一标识符,可用于查找相应的RTCTransportStats对象
    required DOMString          mimeType;       // 编解码器MIME媒体类型/子类型。 例如:video/vp8或等效文件
    unsigned long               clockRate;      // 媒体采样率
    unsigned long               channels;       // 通道数,立体声使用2,其他大多数情况下都没有
    DOMString                   sdpFmtpLine;    // SDP中的a=fmtp行对应于编解码器,即在PT后面的冒号之后。 这由第 5.7 节中的 [JSEP] 定义。
};
​
dictionary RTCReceivedRtpStreamStats : RTCRtpStreamStats {
    unsigned long long          packetsReceived;        // SSRC接收的RTP数据包总数
    long long                   packetsLost;            // SSRC丢失的RTP数据包总数
    double                      jitter;                 // SSRC数据包抖动,以秒为单位测量
    unsigned long long          packetsDiscarded;       // 由于迟到或早到而被抖动缓冲区丢弃的RTP数据包的累积数量
    unsigned long long          packetsRepaired;        // 应用错误恢复机制 [XRBLOCK-STATS]后修复的丢失RTP数据包的累积数量
    unsigned long long          burstPacketsLost;       // 丢失突发期间丢失的RTP数据包的累积数量
    unsigned long long          burstPacketsDiscarded;  // 在丢弃突发期间丢弃的RTP数据包的累积数量
    unsigned long               burstLossCount;         // 丢失RTP数据包的累积突发数
    unsigned long               burstDiscardCount;      // 丢弃的RTP数据包的累积突发数
    double                      burstLossRate;          // 突发期间丢失的RTP数据包占突发中预期的RTP数据包总数的比例
    double                      burstDiscardRate;       // 突发期间丢弃的RTP数据包占突发中预期的RTP数据包总数的比例
    double                      gapLossRate;            // 在间隙期间丢失的 RTP 数据包的比例
    double                      gapDiscardRate;         // 在间隙期间丢弃的 RTP 数据包的比例
    unsigned long               framesDropped;          // 只存在于视频,在解码之前丢弃或丢弃的帧总数
    unsigned long               partialFramesLost;      // 只存在于视频,丢失的部分帧的累积数量
    unsigned long               fullFramesLost;         // 只存在于视频,丢失的完整帧的累积数量
};
​
dictionary RTCInboundRtpStreamStats : RTCReceivedRtpStreamStats {       // RTP 媒体流的测量指标
    required DOMString  receiverId;                 // 查找接收此流的RTCAudioReceiverStats或RTCVideoReceiverStats 对象的统计ID
    DOMString           remoteId;                   // 用于查找同一 SSRC 的远程 RTCRemoteOutboundRtpStreamStats 对象
    unsigned long       framesDecoded;              // RTP 流正确解码的帧总数,即如果没有丢帧将显示的帧数。
    unsigned long       keyFramesDecoded;           // 只存在于视频。 它表示关键帧的总数
    unsigned long       frameWidth;                 // 只存在于视频。 表示最后解码帧的宽度
    unsigned long       frameHeight;                // 只存在于视频。 表示最后解码帧的高度
    unsigned long       frameBitDepth;              // 只存在于视频。 表示最后一个编码帧的每个像素的位深度。典型值为 24、30 或 36 位
    double              framesPerSecond;            // 只存在于视频。 最后一秒的编码帧数。这可能低于媒体源帧速率
    unsigned long long  qpSum;                      // 只存在于视频。 此接收器解码的帧的 QP 值的总和。 帧数以framesDecoded 为单位
    double              totalDecodeTime;            // 解码此流的 framesDecoded 帧所花费的总秒数,
                                                    // 以通过将此值除以framesDecoded 来计算平均解码时间
                                                    // 解码一帧所需的时间是向解码器馈送一帧和解码器返回该帧的解码数据之间经过的时间
    double              totalInterFrameDelay;       // 连续解码的帧之间的帧间延迟总和(以秒为单位)
                                                    // (totalSquaredInterFrameDelay -   
                                                    // totalInterFrameDelay^2/framesDecoded)/framesDecoded
                                                    // 从totalInterFrameDelay、totalSquaredInterFrameDelay 
                                                    // 和framesDecoded 计算帧间延迟方差
    double              totalSquaredInterFrameDelay;// 连续解码的帧之间的平方帧间延迟的总和(以秒为单位)
    boolean             voiceActivityFlag;          // 只存在于音频。 其帧被传送到 RTCRtpReceiver 的 MediaStreamTrack 
                                                    // 以进行播放的最后一个 RTP 数据包是否包含语音活动,取决于扩展标头中 V 位的存在
    DOMHighResTimeStamp lastPacketReceivedTimestamp;// 表示接收到此 SSRC 的最后一个数据包的时间戳
    double              averageRtcpInterval;        // 两个连续复合 RTCP 数据包之间的平均 RTCP 间隔
    unsigned long long  headerBytesReceived;        // 为此SSRC接收的RTP标头和填充字节的总数。这不包括传输层标头的大小
    unsigned long long  fecPacketsReceived;         // 为此SSRC接收的RTP FEC数据包总数,
                                                    // 当使用媒体数据包(例如,使用 Opus)在带内接收 FEC 数据包时,此计数器也可以增加
    unsigned long long  fecPacketsDiscarded;        // 为该SSRC接收的RTP FEC数据包总数,其中应用程序丢弃了纠错有效负载
    unsigned long long  bytesReceived;              // SSRC接收的总字节数
    unsigned long long  packetsFailedDecryption;    // 程序未能解密的 RTP 数据包的累积数量
    unsigned long long  packetsDuplicated;          // 由于重复而丢弃的累积数据包数。 重复的数据包不计入丢弃的数据包中
    record<USVString, unsigned long long> perDscpPacketsReceived;           
                                                    //为此SSRC接收的数据包总数,DSCP被标识为字符串形式的十进制整数
    unsigned long       nackCount;                  // 计算此接收器发送的图片丢失指示 (PLI) 数据包的总数
    unsigned long       firCount;                   // 只存在于视频。 计算此接收器发送的完整帧内请求 (FIR) 数据包的总数
    unsigned long       pliCount;                   // 只存在于视频。 计算此接收器发送的图片丢失指示 (PLI) 数据包的总数
    unsigned long       sliCount;                   // 只存在于视频。 计算此接收器发送的切片丢失指示 (SLI) 数据包的总数
    double              totalProcessingDelay;       // 每个音频样本或视频帧从收到第一个 RTP 数据包的时间(接收时间戳)
                                                    // 到解码相应样本或帧的时间(解码的时间戳)所用时间的总和
    DOMHighResTimeStamp estimatedPlayoutTimestamp;  // 这是此接收器曲目的估计播放时间。 
                                                    // 播放时间是具有已知时间戳的最后一个可播放音频样本或视频帧的
                                                    // NTP 时间戳(从 RTCP SR 数据包将 RTP 时间戳映射到 NTP 时间戳)
    double              jitterBufferDelay;          // 抖动缓冲区的目的是将 RTP 数据包重新组合成帧(在视频的情况下)并平滑播放。
                                                    // 此处描述的模型假设样本或帧仍处于压缩状态且尚未解码。
                                                    // 它是每个音频样本或视频帧从抖动缓冲区接收到第一个数据包的时间
                                                    //(摄取时间戳)到它退出抖动缓冲区的时间(发出时间戳)所用时间的总和,以秒为单位
                                                    // 在音频的情况下,多个样本属于同一个 RTP 数据包
                                                    // 因此它们将具有相同的摄取时间戳,但不同的抖动缓冲区发出时间戳
                                                    // 在视频的情况下,帧可能是通过多个 RTP 数据包接收的,
                                                    // 因此摄取时间戳是进入抖动缓冲区的最早数据包,发射时间戳是整个帧退出抖动缓冲区的时间
                                                    // 该指标在样本或帧退出时增加,在缓冲区中完成它们的时间
                                                    // (并增加 jitterBufferEmittedCount)
                                                    // 平均抖动缓冲延迟可以通过将 jitterBufferDelay 与 
                                                    // jitterBufferEmittedCount 相除来计算
    unsigned long long  jitterBufferEmittedCount;   // 来自抖动缓冲区的音频样本或视频帧的总数(增加 jitterBufferDelay)
    unsigned long long  totalSamplesReceived;       // 只存在于音频。在此 RTP 流上接收到的样本总数
    unsigned long long  totalSamplesDecoded;        // 只存在于音频。在此 RTP 流上解码的样本总数
    unsigned long long  samplesDecodedWithSilk;     // 仅存在于音频且音频编解码器为Opus时。Opus 编解码器的 SILK 部分解码的样本总数。
    unsigned long long  samplesDecodedWithCelt;     // 仅存在于音频且音频编解码器为Opus时。Opus 编解码器的 CELT 部分解码的样本总数
    unsigned long long  concealedSamples;           // 只存在于音频,隐藏样本的样本总数
    unsigned long long  silentConcealedSamples;     // 只存在于音频,插入的“无声”隐藏样本总数,播放静音样本会导致静音或舒适噪
    unsigned long long  concealmentEvents;          // 只存在于音频,隐藏事件的数量。
    unsigned long long  insertedSamplesForDeceleration; 
                                                    // 只存在于音频,当播放速度减慢时,此计数器会根据接收到的样本数与播放的样本数之间的差异而增加
    unsigned long long  removedSamplesForAcceleration;  
                                                    // 只存在于音频,当播放加速时,此计数器增加接收的样本数与播放的样本数之间的差值
    double              audioLevel;                 // 只存在于音频。有关本地附加轨道的音频级别,请参阅 RTCAudioSourceStats。
                                                    // 该值介于 0..1(线性)之间,其中 1.0 表示 0 dBov,0 表示静音,
                                                    // 0.5 表示声压级从 0 dBov 开始大约 6 dBSPL 变化。
                                                    // 使用 totalAudioEnergy 中描述的算法,在某个小区间内平均 audioLevel。
                                                    // 使用的间隔取决于实现。
    double              totalAudioEnergy;           // 只存在于音频。表示接收轨道的音频能量。有关本地附加轨道的音频能量,
                                                    // 请参阅 RTCAudioSourceStats
                                                    // 对于接收到的每个音频样本(因此按 totalSamplesReceived 计数)
                                                    // 将样本值除以最高强度的可编码值,平方, 然后乘以以秒为单位的样本持续时间。
                                                    // 换句话说,持续时间 * Math.pow(energy/maxEnergy, 2)。
                                                    // 这可用于获得与 audioLevel 使用相同单位的均方根 (RMS) 值,如 [RFC6464] 中所定义。
                                                    // 可以使用公式 
                                                    // Math.sqrt(totalAudioEnergy/totalSamplesDuration) 将其转换为这些单位。
                                                    // 也可以使用两个不同 getStats() 调用的值之间的差异来执行此计算,
                                                    // 以便计算任何所需时间间隔内的平均音频电平。
                                                    // 换句话说,做 Math.sqrt((energy2 - energy1)/(duration2 - duration1))。
                                                    // 例如,如果生成一个 10 毫秒的音频数据包,其 RMS 为 0.5(超出 1.0),
                                                    // 则应将 0.5 * 0.5 * 0.01 = 0.0025 添加到 totalAudioEnergy。
                                                    // 如果接收到另一个 RMS 为 0.1 的 10ms 数据包,
                                                    // 这应该类似地将 0.0001 添加到 totalAudioEnergy。然后, 
                                                    // Math.sqrt(totalAudioEnergy/totalSamplesDuration) 变为 
                                                    // Math.sqrt(0.0026/0.02) = 0.36,
                                                    // 这与通过对连续 20 毫秒音频段进行 RMS 计算获得的值相同。
                                                    // 如果使用多个音频通道,则样本的音频能量是指任一通道的最高能量。
    double              totalSamplesDuration;       // 只存在于音频。 表示接收轨道的音频持续时间。 
                                                    // 有关本地附加轨道的音频持续时间,请参阅 RTCAudioSourceStats
    unsigned long       ramesReceived;              // 只存在于视频。 表示在此 RTP 流上接收到的完整帧的总数
    DOMString           decoderImplementation;      // 标识使用的解码器实现
};
​
dictionary RTCRemoteInboundRtpStreamStats : RTCReceivedRtpStreamStats {
    DOMString          localId;                  // 查找RTCOutboundRtpStreamStats                 
    double             roundTripTime;            // 此 SSRC 的估计往返时间基于 RTCP 接收器报告 (RR) 中的 RTCP 时间戳,以秒为单位
    double             totalRoundTripTime;       // 表示自会话开始以来所有往返时间测量的累积总和(以秒为单位)
    double             fractionLost;             // 为此 SSRC 报告的部分丢包率
    unsigned long long reportsReceived;          // SSRC 接收的 RTCP RR 块的总数
    unsigned long long roundTripTimeMeasurements;// SSRC 接收的包含有效往返时间的 RTCP RR 块的总数
};
​
dictionary RTCSentRtpStreamStats : RTCRtpStreamStats {
    unsigned long       packetsSent;                // SRC发送的RTP数据包总数。这包括重传
    unsigned long long  bytesSent;                  // 为此SSRC发送的总字节数。这包括重传
};
​
dictionary RTCOutboundRtpStreamStats : RTCSentRtpStreamStats {
    unsigned long       rtxSsrc;                    // ssrc
    DOMString           mediaSourceId;              // stats 对象的标识符
    DOMString           senderId;                   // RTCAudioSenderStats 或 RTCVideoSenderStats 对象的统计ID
    DOMString           remoteId;                   // 用于查找同一SSRC的远程 RTCRemoteInboundRtpStreamStats对象
    DOMString           rid;                        // 如果已设置,则公开此 RTP 流的rid 编码参数,否则未定义
    DOMHighResTimeStamp lastPacketSentTimestamp;    // 表示为此 SSRC 发送最后一个数据包的时间戳
    unsigned long long  headerBytesSent;            // 为此 SSRC 发送的 RTP 标头和填充字节的总数。 这不包括传输层标头的大小
                                                    // 例如 IP 或 UDP headerBytesSent + bytesSent等于通过传输作为有效负载发送的字节数
                                                    // 例如 IP 或 UDP headerBytesSent + bytesSent等于通过传输作为有效负载发送的字节数
    unsigned long       packetsDiscardedOnSend;     // 由于套接字错误而被丢弃的此 SSRC 的 RTP 数据包总数
    unsigned long long  bytesDiscardedOnSend;       // 由于套接字错误而被丢弃的此 SSRC 的总字节数
    unsigned long       fecPacketsSent;             // 为此 SSRC 发送的 RTP FEC 数据包总数
    unsigned long long  retransmittedPacketsSent;   // 为此 SSRC 重新传输的数据包总数
    unsigned long long  retransmittedBytesSent;     // 为此 SSRC 重传的字节总数,仅包括有效载荷字节
    double              targetBitrate;              // 编码器目标比特率
    unsigned long long  totalEncodedBytesTarget;    // 每次对帧进行编码时,该值都会增加目标帧大小(以字节为单位)
    unsigned long       frameWidth;                 // 最后一个编码帧的宽度, 编码帧的分辨率可能低于编码源
    unsigned long       frameHeight;                // 最后一个编码帧的高度, 编码帧的分辨率可能低于编码源
    unsigned long       frameBitDepth;              // 每个像素的位深度24、30、36
    double              framesPerSecond;            // 最后一秒解码的帧数
    unsigned long       framesSent;                 // RTP 流上发送的帧总数
    unsigned long       hugeFramesSent;             // 表示此RTP流发送的huge帧总数.根据定义,huge帧编码大小至少是帧平均大小的2.5倍
    unsigned long       framesEncoded;              // RTP 媒体流成功编码的帧总数
    unsigned long       keyFramesEncoded;           // 关键帧的总数
    unsigned long       framesDiscardedOnSend;      // 由于套接字错误而为此 SSRC 丢弃的视频帧总数,即在将数据包交给套接字时发生套接字错误
                                                    // 这可能由于各种原因而发生,包括缓冲区已满或没有可用内存。
    unsigned long long  qpSum;                      // 发送方编码的帧的QP值的总和
    unsigned long long  totalSamplesSent;           // RTP流发送的样本总数
    unsigned long long  samplesEncodedWithSilk;     // 仅存在于音频且音频编解码器为Opus时,Opus编解码器的SILK部分编码的样本总数
    unsigned long long  samplesEncodedWithCelt;     // 仅存在于音频且音频编解码器为 Opus 时。 Opus 编解码器的 CELT 部分编码的样本总数
    boolean             voiceActivityFlag;          // 只存在于音频,根据[RFC6464]中定义的扩展报头中 V 位的存在
                                                    // 最后发送的RTP数据包是否包含语音活动
    double              totalEncodeTime;            // 编码此流的framesEncoded 帧所花费的总秒数。 
                                                    // 可以通过将此值除以framesEncoded 来计算平均编码时间。 
                                                    // 编码一帧所需的时间是向编码器提供一帧和编码器返回该帧的编码数据之间经过的时间。 
                                                    // 这不包括打包结果数据可能花费的任何额外时间
    double               totalPacketSendDelay;      // 总数据包发送延迟
    double               averageRtcpInterval;       // 两个连续复合RTCP数据包之间的平均 RTCP间隔。这是在发送复合 RTCP 报告时由发送端点计算的。
                                                    // 复合数据包必须至少包含一个RTCP RR 或 SR 块和一个带有 CNAME 项的 SDES 数据
    RTCQualityLimitationReason  qualityLimitationReason;    
                                                    // 只存在于视频。 当前限制分辨率和/或帧率的原因,如果不受限制,则为“无”。
    record<DOMString, double> qualityLimitationDurations;   
                                                    // 只存在于视频。 此流在每个质量限制状态中花费的总时间(以秒为单位)的记录
    unsigned long        qualityLimitationResolutionChanges;    
                                                    // 质量限制解决方案变更
    record<USVString, unsigned long long>   perDscpPacketsSent; 
                                                    // 只存在于视频。由于质量受限而更改分辨率的次数,计数器最初为零,并在分辨率上升或下降时增加。 
                                                    // 例如,如果将720p轨道作为480p发送一段时间,然后恢复为720p,   
                                                    // 则qualityLimitationResolutionChanges的值为 2。
    unsigned long        nackCount;                 // 计算此发送方收到的否定确认 (NACK) 数据包的总数
    unsigned long        firCount;                  // 只存在于视频。 计算此发送方收到的完整帧内请求 (FIR) 数据包的总数
    unsigned long        pliCount;                  // 只存在于视频。 计算此发送方收到的图片丢失指示 (PLI) 数据包的总数
    unsigned long        sliCount;                  // 只存在于视频。 计算此发送方收到的切片丢失指示 (SLI) 数据包的总数
    DOMString            encoderImplementation;     // 标识使用的编码器实现
};
​
enum RTCQualityLimitationReason {
    "none",                                 // 分辨率和/或帧率不受限制
    "cpu",                                  // 由于CPU负载,分辨率和/或帧率主要受到限制
    "bandwidth",                            // 由于带宽估计期间的拥塞线索,分辨率和/或帧率主要受到限制。 
                                                // 典型的拥塞控制算法使用到达间隔时间、往返时间、数据包或其他拥塞线索来执行带宽估计
    "other",                                // 分辨率和/或帧率主要由于上述以外的原因而受到限制
};
​
dictionary RTCRemoteOutboundRtpStreamStats : RTCSentRtpStreamStats {
    DOMString           localId;                  // 用于查找同一SSRC的本地RTCInboundRtpStreamStats对象
    DOMHighResTimeStamp remoteTimestamp;          // 表示远端发送这些统计信息的远程时间戳。这与时间戳不同,时间戳表示本端生成或接收统计信息的时间
    unsigned long long  reportsSent;              // SSRC 发送的 RTCP SR 块的总数
    double              roundTripTime;            // rtt往返时间
    double              totalRoundTripTime;       // 总往返时间
    unsigned long long  roundTripTimeMeasurements;// 往返时间测量,SSRC 接收的 RTCP 发送方报告 (SR) 块的总数
};
​
dictionary RTCMediaSourceStats : RTCStats {         // 媒体源-帧速率和分辨率
    required DOMString  trackIdentifier;            // MediaStreamTrack的id属性值
    required DOMString  kind;                       // MediaStreamTrack的kind属性的值。 这是“音频”或“视频”。 
                                                    // 如果它是“音频”, 那么这个stats对象的类型是RTCAudioSourceStats。 
                                                    // 如果它是“video”, 那么这个stats对象的类型是RTCVideoSourceStats
    boolean             relayedSource;              // 源是远程的,例如如果它是通过 RTCPeerConnection 来自另一个主机,则为true。否则为假
};
​
dictionary RTCAudioSourceStats : RTCMediaSourceStats {
    double    audioLevel;                   // 媒体源的音频电平,0-1,其中1.0表示0 dBov,0表示静音,0.5表示声压级从0 dBov开始大约6dBSPL变化
    double    totalAudioEnergy;             // 总音频能量
    double    totalSamplesDuration;         // 媒体源的音频持续时间
    double    echoReturnLoss;               // 回声返回损失,仅当 MediaStreamTrack 来自应用了回声消除的麦克风时才存在。 以分贝计算
    double    echoReturnLossEnhancement;    // 回波回波损耗增强,仅当 MediaStreamTrack 来自应用了回声消除的麦克风时才存在。 以分贝计算
};
​
dictionary RTCVideoSourceStats : RTCMediaSourceStats {
    unsigned long        width;                     // 宽
    unsigned long        height;                    // 高
    unsigned long        bitDepth;                  // 位深
    unsigned long        frames;                    // 总帧数
    double               framesPerSecond;           // 最后一秒的编码帧数。这可能低于媒体源帧速率
};
​
dictionary RTCRtpContributingSourceStats : RTCStats {
    required unsigned long contributorSsrc;         // stats对象表示的贡献源的SSRC标识符,32位无符号整数
    required DOMString     inboundRtpStreamId;      // 入站的RTP流ID
    unsigned long          packetsContributedTo;    // 此贡献源贡献的 RTP 数据包总数
    double                 audioLevel;              // 此源贡献的最后接收到 RTP数据包包含[RFC6465]混音器到客户端音频级别标头扩展, 0-1
};
​
dictionary RTCPeerConnectionStats : RTCStats {      
    unsigned long       dataChannelsOpened;         // 表示在其生命周期内进入“打开”状态的唯一RTCDataChannel的数量
    unsigned long       dataChannelsClosed;         // 表示在其生命周期内离开“打开”状态的唯一RTCDataChannel的数量
    unsigned long       dataChannelsRequested;      // RTCPeerConnection 上成功的createDataChannel()调用返回的唯一RTCDataChannel的数量
     unsigned long      dataChannelsAccepted;       // 在RTCPeerConnection上的ondatachannel事件中发出信号的唯一RTCDataChannel的数量
};
​
dictionary RTCRtpTransceiverStats : RTCStats {
    required DOMString      senderId;       // RTCRtpTransceiver关联的RTCRtpSender的stats对象的标识符
    required DOMString      receiverId;     // 与此stats对象表示的RTCRtpTransceiver关联的RTCRtpReceiver的stats对象的标识符
    DOMString               mid;            // 如果这个stats对象表示的RTCRtpTransceiver有一个不为空的中间值,这就是那个值,否则这个成员不存在
};
​
dictionary RTCMediaHandlerStats : RTCStats {
    DOMString               trackIdentifier;            // 轨道的id属性
    boolean                 ended;                      // 反映轨道的结束状态
    required DOMString      kind;                       // “音频”或“视频”。 这反映了MediaStreamTrack的kind属性
};
​
dictionary RTCVideoHandlerStats : RTCMediaHandlerStats {
};
​
dictionary RTCVideoSenderStats : RTCVideoHandlerStats {
    DOMString               mediaSourceId;              // 媒体源ID
};
​
dictionary RTCVideoReceiverStats : RTCVideoHandlerStats {
};
​
dictionary RTCAudioHandlerStats : RTCMediaHandlerStats {
};
​
dictionary RTCAudioSenderStats : RTCAudioHandlerStats {
    DOMString               mediaSourceId;
};
​
dictionary RTCDataChannelStats : RTCStats {
    DOMString                    label;                     // RTCDataChannel 对象的标签值
    DOMString                    rotocol;                   // RTCDataChannel 对象的协议值
    unsigned short               dataChannelIdentifier;     // RTCDataChannel 对象的id属性
    required RTCDataChannelState state;                     // RTCDataChannel 对象的readyState值
    unsigned long                messagesSent;              // 表示发送的 API“消息”事件总数
    unsigned long long           bytesSent;                 // 表示在此 RTCDataChannel 上发送的有效负载字节总数,即,不包括标头或填充
    unsigned long                messagesReceived;          // 表示收到的 API“消息”事件总数
    unsigned long long           bytesReceived;             // 表示在此RTCDataChannel上接收的总字节数,即不包括头或填充
};
​
dictionary RTCTransportStats : RTCStats {   // RTCTransportStats对象表示与RTCDtlsTransport及其底层RTCIceTransport对应的统计信息
    unsigned long long           packetsSent;               // 表示通过此传输发送的数据包总数
    unsigned long long           packetsReceived;           // 表示在此传输上接收的数据包总数
    unsigned long long           bytesSent;                 // 表示在此RTCIceTransport上发送的有效载荷字节总数,
                                                            // 即不包括标头、填充或ICE连接检查。
    unsigned long long           bytesReceived;             // 表示在此RTCIceTransport上接收的有效载荷字节总数,
                                                            // 即不包括标头、填充或ICE 连接检查
    DOMString                    rtcpTransportStatsId;      // 如果RTP和RTCP未复用,则这是提供RTCP组件统计信息的传输ID,
                                                            // 并且此记录仅包含RTP组件统计信息
    RTCIceRole                   iceRole;                   // ICE角色
    DOMString                    iceLocalUsernameFragment;  // 设置为此RTCIceTransport的消息验证程序中使用的本地用户名片段的当前值。
                                                            // 它可能会在 setLocalDescription()和ICE重启时更新。
    required RTCDtlsTransportState dtlsState;               // 设置为底层 RTCDtlsTransport的state属性的当前值。
    RTCIceTransportState          iceState;                 // 设置为底层 RTCIceTransport 的 state 属性的当前值。
    DOMString                     selectedCandidatePairId;  // 它是与被检查的对象相关联的唯一标识符,
                                                            // 以生成与此传输相关联的RTCIceCandidatePairStats
    DOMString                     localCertificateId;       // 对于协商 DTLS 的组件,提供本地证书
    DOMString                     remoteCertificateId;      // 对于协商 DTLS 的组件,提供远程证书
    DOMString                     tlsVersion;               // TLS版本,仅在 DTLS 协商完成后才存在
    DOMString                     dtlsCipher;               // 用于DTLS传输的密码套件的描述性名称,
                                                            // 如IANA密码套件注册表[IANA-TLS-CIPHERS]的“描述”列中所定义
    DOMString                     srtpCipher;               // 用于SRTP传输的保护配置文件的描述性名称
    DOMString                     tlsGroup;                 // TSL组
    unsigned long                 selectedCandidatePairChanges; // 此传输的选定候选对已更改的次数
};
​
dictionary RTCSctpTransportStats : RTCStats {
    DOMString                     transportId;              // 被检查以生成支持SCTP传输的DTLSTransport和ICETransport的  
                                                            // RTCTransportStats的对象的标识符
    double                        smoothedRoundTripTime;    // 最新平滑的往返时间值
    unsigned long                 congestionWindow;         // 最新的拥塞窗口
    unsigned long                 receiverWindow;           // 最新的接收器窗口
    unsigned long                 mtu;                      // 最新的最大传输单元
    unsigned long                 unackData;                // 未确认的DATA块的数量
};
​
​
dictionary RTCIceCandidateStats : RTCStats {
    required DOMString           transportId;               // 传输标识
    DOMString?                   address;                   // 它是候选地址,允许使用IPv4地址、IPv6地址和完全限定域名
    long                         port;                      // 候选人的端口号
    DOMString                    protocol;                  // 协议传输的有效值是“udp”和“tcp”之一
    required RTCIceCandidateType candidateType;             // 候选人类型
    long                         priority;                  // 优先级
    DOMString                    url;                       // 对于本地候选人,这是从中获取候选人的ICE服务器的URL
    DOMString                    relayProtocol;             // 它是端点用于与TURN服务器通信的协议。这仅适用于本地候选人。
                                                            // 有效值为“udp”、“tcp”或“tls
};
​
​
dictionary RTCIceCandidatePairStats : RTCStats {
    required DOMString                      transportId;                // 传输标识
    required DOMString                      localCandidateId;           // 本地候选人ID
    required DOMString                      remoteCandidateId;          // 远端候选人状态
    required RTCStatsIceCandidatePairState  state;                      // 代表一对本地和远程候选者的清单状态
    boolean                                 nominated;                  // 与更新部分中描述的提名标志相关
    unsigned long long                      packetsSent;                // 在此候选对上发送的数据包总数
    unsigned long long                      packetsReceived;            // 在此候选对上接收到的数据包总数
    unsigned long long                      bytesSent;                  // 此候选对上发送的有效载荷字节总数
    unsigned long long                      bytesReceived;              // 在此候选对上接收的有效载荷字节总数
    DOMHighResTimeStamp                     lastPacketSentTimestamp;    // 在此特定候选对上发送最后一个数据包的时间戳,不包括STUN数据包
    DOMHighResTimeStamp                     lastPacketReceivedTimestamp;// 在此特定候选对上接收到最后一个数据包的时间戳,不包括 STUN 数据包
    DOMHighResTimeStamp                     firstRequestTimestamp;      // 在此特定候选对上发送第一个STUN请求的时间戳
    DOMHighResTimeStamp                     lastRequestTimestamp;       // 在此特定候选对上发送最后一个STUN请求的时间戳  (lastRequestTimestamp - firstRequestTimestamp) / requestsSent
    DOMHighResTimeStamp                     lastResponseTimestamp;      // 此特定候选对上收到最后一个STUN响应的时间戳
    double                                  totalRoundTripTime;         // 自会话开始以来所有往返时间测量的总和(以秒为单位)
    double                                  currentRoundTripTime;       // 以秒为单位的最新往返时间,由两个STUN连接检查[STUN-PATH-CHAR]计算得出
     double                                 availableOutgoingBitrate;   // 可用传出比特率-由底层拥塞控制通过使用此候选对组合所有传出 RTP 流的可用比特率来计算的。 
                                                                            // 比特率测量不计算 IP 或其他传输层(如 TCP 或 UDP)的大小
    double                                  availableIncomingBitrate;   // 可用输入比特率-由底层拥塞控制通过使用此候选对组合所有传入 RTP 流的可用比特率来计算的。 
                                                                            // 比特率测量不计算 IP 或其他传输层(如 TCP 或 UDP)的大小
    unsigned long                           circuitBreakerTriggerCount; // 触发断路器的次数
    unsigned long long                      requestsReceived;           // 收到的连接检查请求总数(包括重传)
    unsigned long long                      requestsSent;               // 发送的连接检查请求总数(不包括重传)
    unsigned long long                      responsesReceived;          // 收到的连接检查响应总数
    unsigned long long                      responsesSent;              // 发送的连接检查响应总数
    unsigned long long                      retransmissionsReceived;    // 收到的连接检查请求重传总数
    unsigned long long                      retransmissionsSent;        // 发送的连接检查请求重传总数
    unsigned long long                      consentRequestsSent;        // 发送的同意请求总数
    DOMHighResTimeStamp                     consentExpiredTimestamp;    // 最新的有效STUN绑定响应过期的时间戳
    unsigned long                           packetsDiscardedOnSend;     // 由于套接字错误而被丢弃的此候选对的数据包总数
    unsigned long long                      bytesDiscardedOnSend;       // 由于套接字错误而被丢弃的此候选对的总字节数
    unsigned long long                      requestBytesSent;           // 为连通性检查发送的总字节数
    unsigned long long                      consentRequestBytesSent;    // 为同意请求发送的总字节数
    unsigned long long                      responseBytesSent;          // 为连通性检查响应发送的总字节数
};
​
enum RTCStatsIceCandidatePairState {
    "frozen",
    "waiting",
    "in-progress",
    "failed",
    "succeeded"
};
​
​
dictionary RTCCertificateStats : RTCStats {
    required DOMString                      fingerprint;                // 证书的指纹
    required DOMString                      fingerprintAlgorithm;       // 用于计算证书指纹的哈希函数
    required DOMString                      base64Certificate;          // 证书的DER编码的base-64
    DOMString                               issuerCertificateId;        // 包含证书链中下一个证书的stats对象
};
​
dictionary RTCIceServerStats : RTCStats {
    required DOMString                      url;                        // ICE服务器的URL
    long                                    port;                       // 客户端使用的端口号
    DOMString                               relayProtocol;              // 端点用于与ICE服务器通信的协议
    unsigned long                           totalRequestsSent;          // 已发送到此服务器的请求总数
    unsigned long                           totalResponsesReceived;     // 从该服务器收到的响应总数
    double                                  totalRoundTripTime;         // 在收到响应的情况下已发送的所有请求的 RTT 总和
};  
​
dictionary RTCMediaStreamStats : RTCStats {     // 由于发送方、接收方和收发器统计对象更适合描述现代 RTCPeerConnection 模型(统一计划)
                                                // 因此整个字典已于 2019 年 9 月过时。
    DOMString                               streamIdentifier;           // stream.id 属性
    sequence<DOMString>                     trackIds;                   // stats 对象的id,并不是TrackID
};
​
dictionary RTCSenderVideoTrackAttachmentStats : RTCVideoSenderStats {
};
​
dictionary RTCSenderAudioTrackAttachmentStats : RTCAudioSenderStats {
};
​
dictionary RTCReceiverVideoTrackAttachmentStats : RTCVideoReceiverStats {};
​
dictionary RTCReceiverAudioTrackAttachmentStats : RTCAudioReceiverStats {};
            
partial dictionary RTCCodecStats {      
    // 已于 2019 年 8 月移RTCInboundRtpStreamStats.RTCInboundRtpStreamStats/decoderImplementation}} 
    DOMString       implementation;             //  和 RTCOutboundRtpStreamStats.encoderImplementation    
};
​
partial dictionary RTCIceCandidateStats {
    boolean         deleted = false;            // 此字段已过时,因为如果删除 ICE 候选对象,它将不再出现在 getStats() 中
    boolean         isRemote;                   // false 表示这代表本地候选人; true 表示这代表远程候选人
};
​
partial dictionary RTCIceCandidatePairStats {
    double             totalRtt;   // 该字段在 2016 年 12 月更名为 totalRoundTripTime
    double             currentRtt; // 该字段于 2016 年 12 月更名为 currentRoundTripTime
    unsigned long long priority;   // 该字段在2018年2月被删除,因为它不能用 53 位表示。如果需要,可以按照 [RFC5245] 第 5.7.2 节中的定义重新计算
};
​
partial dictionary RTCRtpStreamStats {
    DOMString          mediaType;                   // 表示接收轨道的 stats 对象的标识符RTCReceiverAudioTrackAttachmentStats 或 
                                                    // RTCReceiverVideoTrackAttachmentStats,该字段于 2020 年 4 月被淘汰
    double             averageRTCPInterval;
};
​
​
partial dictionary RTCOutboundRtpStreamStats {
    DOMString          trackId;                     // stats 对象的标识符
};
​
partial dictionary RTCMediaHandlerStats {
    RTCPriorityType    priority;                    // 表示已为曲目设置的优先级
    boolean            remoteSource;                // 如果轨道附件在 RTCRtpSender 上,则为 false,
                                                    // 如果轨道附件在 RTCRtpReceiver 上,则为 true,2020 年 4 月过时
};
​
partial dictionary RTCAudioHandlerStats {
    double      audioLevel;                 // 已于 2019 年 6 月移至 RTCAudioReceiverStats 和 RTCAudioSourceStats
    double      totalAudioEnergy;           // 已于 2019 年 6 月移至 RTCAudioReceiverStats 和 RTCAudioSourceStats
    double      totalSamplesDuration;       // 已于 2019 年 6 月移至 RTCAudioReceiverStats 和 RTCAudioSourceStats
    boolean     voiceActivityFlag;          // 该字段已于 2019 年 8 月移至 RTCOutboundRtpStreamStats 和 RTCInboundRtpStreamStats
};
​
partial dictionary RTCAudioSenderStats {
    unsigned long long                      totalSamplesSent;           // 这已于 2019 年 8 月移至 RTCOutboundRtpStreamStats
    double                                  echoReturnLoss;             // 这已于 2019 年 8 月移至 RTCAudioSourceStats
    double                                  echoReturnLossEnhancement;  // 这已于 2019 年 8 月移至 RTCAudioSourceStats
};
        
partial dictionary RTCAudioReceiverStats {                                  // 已于 2019 年 8 月移至 RTCInboundRtpStreamStats
    DOMHighResTimeStamp                     estimatedPlayoutTimestamp;  
    double                                  jitterBufferDelay;          
    unsigned long long                      jitterBufferEmittedCount;
    unsigned long long                      totalSamplesReceived;
    unsigned long long                      concealedSamples;
    unsigned long long                      silentConcealedSamples;
    unsigned long long                      concealmentEvents;
    unsigned long long                      insertedSamplesForDeceleration;
    unsigned long long                      removedSamplesForAcceleration;
    double                                  audioLevel;
    double                                  totalAudioEnergy;
    double                                  totalSamplesDuration;
};
​
partial dictionary RTCVideoHandlerStats {
    unsigned long       frameWidth;     // 已于 2019 年 8 月移至 RTCOutboundRtpStreamStats 和 RTCInboundRtpStreamStats
    unsigned long       frameHeight;    // 已于 2019 年 8 月移至 RTCOutboundRtpStreamStats 和 RTCInboundRtpStreamStats
    double              ramesPerSecond; // 2019 年 5 月被 RTCVideoSourceStats.framesPerSecond 取代,代表轨道的帧速率
                                        // 2019 年 8 月移至 RTCInboundRtpStreamStats,表示解码帧速率
                                        // 2019年8月,RTCOutboundRtpStreamStats中还增加了framesPerSecond,代表编码帧率(可能低于源帧率)
};
​
partial dictionary RTCVideoSenderStats {
    unsigned long       keyFramesSent;              // 2019 年 6 月被 RTCOutboundRtpStreamStats 中的 keyFramesEncoded 替换
    unsigned long       framesCaptured;             // 2019 年 5 月被 RTCVideoSourceStats.frames 取代
    unsigned long       framesSent;                 // 2019 年 8 月移至 RTCOutboundRtpStreamStats
    unsigned long       hugeFramesSent;             // 2019 年 8 月移至 RTCOutboundRtpStreamStats
};
​
partial dictionary RTCVideoReceiverStats {
    unsigned long       keyFramesReceived;          // 2019 年 6 月被 RTCInboundRtpStreamStats 中的 keyFramesDecoded 替换
    DOMHighResTimeStamp estimatedPlayoutTimestamp;  // 2019 年 8 月移至 RTCInboundRtpStreamStats
    double              jitterBufferDelay;          // 2019 年 8 月移至 RTCInboundRtpStreamStats
    unsigned long long  jitterBufferEmittedCount;   // 2019 年 8 月移至 RTCInboundRtpStreamStats
    unsigned long       framesReceived;             // 2019 年 8 月移至 RTCInboundRtpStreamStats
    unsigned long       framesDecoded;              // 2019 年 8 月移至 RTCInboundRtpStreamStats
    unsigned long       framesDropped;              // 2019 年 8 月移至 RTCInboundRtpStreamStats
    unsigned long       partialFramesLost;          // 2019 年 8 月移至 RTCInboundRtpStreamStats
    unsigned long       fullFramesLost;             // 2019 年 8 月移至 RTCInboundRtpStreamStats
};
​
Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐