1. RTP 相关统计
1.1 inbound-rtp (接收端统计)
接收到的 RTP 流统计信息,包含以下关键指标:
bytesReceived
: 接收到的字节总数packetsReceived
: 接收到的数据包总数packetsLost
: 丢失的数据包数量jitter
: 数据包到达时间的抖动(毫秒)framesDecoded
: 已解码的视频帧数frameWidth
: 视频帧宽度frameHeight
: 视频帧高度framesPerSecond
: 每秒解码的帧数kind
: 媒体类型(“video” 或 “audio”)
1.2 outbound-rtp (发送端统计)
发送的 RTP 流统计信息,包含以下关键指标:
bytesSent
: 发送的字节总数packetsSent
: 发送的数据包总数retransmittedPacketsSent
: 重传的数据包数量retransmittedBytesSent
: 重传的字节总数kind
: 媒体类型(“video” 或 “audio”)
1.3 remote-inbound-rtp (对端接收统计)
对端接收到的 RTP 流统计信息,包含:
packetsLost
: 对端报告的丢包数jitter
: 对端报告的抖动roundTripTime
: 往返时间(RTT)totalRoundTripTime
: 总往返时间
1.4 remote-outbound-rtp (对端发送统计)
对端发送的 RTP 流统计信息,包含:
packetsSent
: 对端发送的数据包数bytesSent
: 对端发送的字节数timestamp
: 时间戳
2. 媒体轨道相关统计
2.1 track (媒体轨道统计)
媒体轨道的统计信息,包含:
frameWidth
: 视频帧宽度frameHeight
: 视频帧高度framesPerSecond
: 每秒帧数framesSent
: 发送的帧数framesReceived
: 接收的帧数framesDecoded
: 解码的帧数framesDropped
: 丢弃的帧数
2.2 media-source (媒体源统计)
媒体源的统计信息,包含:
width
: 源视频宽度height
: 源视频高度framesPerSecond
: 源视频帧率frames
: 总帧数
2.3 media-playout (媒体播放统计)
媒体播放的统计信息,包含:
framesDecoded
: 解码的帧数framesDropped
: 丢弃的帧数framesCorrupted
: 损坏的帧数totalFramesDuration
: 总帧持续时间
3. 编解码器相关统计
3.1 codec (编解码器统计)
编解码器的统计信息,包含:
payloadType
: 负载类型mimeType
: MIME 类型clockRate
: 时钟频率channels
: 通道数sdpFmtpLine
: SDP 格式参数
4. 传输相关统计
4.1 transport (传输层统计)
传输层的统计信息,包含:
bytesReceived
: 接收的字节数bytesSent
: 发送的字节数packetsReceived
: 接收的数据包数packetsSent
: 发送的数据包数selectedCandidatePairId
: 选中的候选者对 ID
4.2 candidate-pair (候选者对统计)
ICE 候选者对的统计信息,包含:
state
: 连接状态priority
: 优先级nominated
: 是否被提名writable
: 是否可写readable
: 是否可读currentRoundTripTime
: 当前往返时间availableOutgoingBitrate
: 可用输出比特率requestsReceived
: 接收到的请求数requestsSent
: 发送的请求数responsesReceived
: 接收到的响应数responsesSent
: 发送的响应数
4.3 local-candidate (本地候选者统计)
本地 ICE 候选者的统计信息,包含:
ip
: IP 地址port
: 端口号protocol
: 协议类型candidateType
: 候选者类型priority
: 优先级
4.4 remote-candidate (远程候选者统计)
远程 ICE 候选者的统计信息,包含:
ip
: IP 地址port
: 端口号protocol
: 协议类型candidateType
: 候选者类型
5. 数据通道相关统计
5.1 data-channel (数据通道统计)
数据通道的统计信息,包含:
state
: 通道状态messagesSent
: 发送的消息数bytesSent
: 发送的字节数messagesReceived
: 接收的消息数bytesReceived
: 接收的字节数
使用示例
// 获取所有统计信息
pc.getStats(null).then(stats => {stats.forEach(report => {switch(report.type) {case 'inbound-rtp':console.log('接收统计:', {bitrate: report.bytesReceived,packetsLost: report.packetsLost,jitter: report.jitter});break;case 'outbound-rtp':console.log('发送统计:', {bitrate: report.bytesSent,packetsSent: report.packetsSent});break;case 'candidate-pair':if (report.state === 'succeeded') {console.log('网络质量:', {rtt: report.currentRoundTripTime,bitrate: report.availableOutgoingBitrate});}break;}});
});
注意事项
- 统计信息的可用性取决于浏览器实现
- 某些统计信息可能只在特定条件下可用
- 统计信息的更新频率可能因浏览器而异
- 建议定期获取统计信息以监控连接质量
- 某些统计信息可能需要权限才能访问