CloudHub 文档中心
下载中心 文档中心

RTC 实时音视频


通话中质量监测

功能描述

加入频道后,SDK 会每隔 2 秒 自动触发通话质量相关的下述回调,你可以了解当前通话的网络质量、本地统计信息、音频质量和视频质量。

上下行网络质量报告

onNetworkQuality 回调向你报告当前通话中每个用户 / 主播的上下行 last mile 网络质量,详见 质量打分 。其中,last mile 是指你的设备到 CloudHub 边缘服务器的网络。上行 last mile 网络质量打分基于实际发送码率、上行网络丢包率、平均往返时延和上行网络抖动计算;下行 last mile 网络质量打分基于下行网络丢包率、平均往返时延和下行网络抖动计算。

统计信息报告

onRtcStats 回调向你报告本地通话统计信息。你可以了解到通话时长、当前通话频道中的人数、当前系统的 CPU 使用率、当前 App 的 CPU 使用率和以下重要参数。

参数描述备注
txBytes/rxBytes累计发送 / 接收字节数。自加入频道后累计的字节数。
txAudioBytes/rxAudioByte累计发送 / 接收音频字节数。自加入频道后累计的字节数。
txVideoBytes/rxVideoBytes累计发送 / 接收视频字节数。自加入频道后累计的字节数。
txKBitRate/rxKBitRate发送 / 接收码率。统计周期内实际发送 / 接收的码率。
txAudioKBitRate/rxAudioKBitRate音频发送 / 接收码率。统计周期内实际发送 / 接收的码率。
txVideoKBitRate/rxVideoKBitRate视频发送 / 接收码率。统计周期内实际发送 / 接收的码率。
lastmileDelay本地客户端到 CloudHub 边缘服务器的网络延迟。1. 此处指的是 平均往返时延 的一半,不是客户端到 CloudHub 边缘服务器的单向时延。
2. 此处的网络延迟不区分音频和视频,是 UDP 包得到的数据。
txPacketLossRate本地客户端到 CloudHub 边缘服务器的丢包率。1. 音频和视频上行丢包率中的较大值。
2. 使用 抗丢包 技术前的丢包率。
rxPacketLossRateCloudHub 边缘服务器到本地客户端的丢包率。1. 音频和视频下行丢包率中的较大值。
2. 使用 抗丢包 技术前的丢包率。

音频质量报告

onLocalAudioStats 回调向你报告本地设备发送音频流的统计信息。你可以了解到当前通话声道数(单声道或双声道)、发送音频的采样率和发送音频的码率。

SDK 会每隔 2 秒自动触发本回调,发送音频的采样率指统计周期内发送音频的实际采样率,发送音频的码率指统计周期内发送音频码率的 平均 值。

本地音频的状态发生改变时(包括本地麦克风录制状态和音频编码状态),SDK 会触发 onLocalAudioStateChanged 回调向你报告当前本地音频状态。当本地音频出现故障时,你可以通过错误码排查问题。

onRemoteAudioStats 回调向你报告当前通话中每个远端用户 / 主播音频流的统计信息。你可以了解到每个远端用户 / 主播发送的音频流质量(详见 质量打分 )、声道数(单声道或双声道)和以下重要参数信息。

参数描述备注
networkTransportDelay音频发送端到接收端的网络延迟。图中阶段 2 + 3 + 4
jitterBufferDelay接收端到网络抖动缓冲端的网络延迟。图中阶段 5
audioLossRate统计周期内,实际接收到的远端音频流丢帧率。1. 图中阶段 2 + 3 + 4 + 5
2. 一个统计周期内,音频丢帧率达到 4% 计为一次音频 卡顿
receivedSampleRate统计周期内,接收到的远端音频流的采样率。
receivedBitrate统计周期内,接收到的远端音频流的 平均 码率。
totalFrozenTime远端用户 / 主播在加入频道后发生音频 卡顿 的累计时长。1. CloudHub 定义 totalFrozenTime = 音频 卡顿 次数 × 2 × 1000 (毫秒)。
2. 累计时长是 自加入频道后 累计的时长。
frozenRate远端用户 / 主播音频卡顿累计时长占音频 总有效时长 的百分比。音频 总有效时长 指的是远端用户 / 主播加入频道后,既没有停止发送音频流,也没有禁用音频模块的通话时长。

onRemoteAudioStats 侧重报告远端音频流的全链路音频质量,更贴近你的主观感受。即使网络发生丢包,因为 FEC(Forward Error Correction)、重传恢复和带宽估计等 抗丢包 和拥塞控制技术,最终在接收端的音频丢帧率也可能不高,所以你感知到的音频质量也可能较好。

远端用户 / 主播音频状态发生改变时,SDK 会触发 onRemoteAudioStateChanged 回调向你报告远端音频流当前状态和状态改变的原因。

视频质量报告

onLocalVideoStats 回调向你报告本地设备发送视频流的统计信息。你可以了解视频编码宽 / 高和以下重要参数信息。

如果你此前调用 enableDualStreamMode 方法开启 双流模式 ,则本回调描述本地设备发送的视频大流的统计信息。

参数描述备注
rendererOutputFrameRate本地视频渲染器的输出帧率。
encoderOutputFrameRate本地视频编码器的输出帧率。
targetBitrate当前编码器的目标编码码率。该码率为 SDK 根据当前网络状况预估的一个值。
targetFrameRate当前编码器的目标编码帧率。
encodedBitrate视频编码码率。不包含丢包后 重传 视频等的视频码率。
sentBitrate统计周期内,实际发送视频码率。不包含丢包后 重传 视频等的视频码率。
sentFrameRate统计周期内,实际发送视频帧率。不包含丢包后 重传 视频等的视频帧率。
encodedFrameCount视频发送的累计帧数。自加入频道后的累计值。
codecType视频的编码类型。1.VIDEO_CODEC_VP8 = 1: VP8
2.VIDEO_CODEC_H264 = 2: (默认值)H.264
qualityAdaptIndication本次统计的视频质量自适应情况。相比上次统计(2 秒前)视频质量(基于目标码率 /targetBitrate 和目标帧率 /targetFrameRate),本次视频质量的情况:
1. 本地视频质量不变。本地视频质量改善。
2. 本地视频质量变差。

本地视频的状态发生改变时,SDK 会触发 onLocalVideoStateChanged 回调向你报告当前本地视频状态。当本地视频出现故障时,你可以通过错误码排查问题。

onRemoteVideoStats 回调向你报告当前通话中每个远端用户 / 主播的视频流的统计信息。你可以了解到每个远端用户 / 主播的视频宽 / 高和以下重要参数信息。

参数描述备注
rxStreamType视频流类型。视频大流或小流,详见 双流模式 。
receivedBitrate统计周期内,实际接收到的远端视频码率。
packetLossRate统计周期内,实际接收到的远端视频流丢包率。1. 图中阶段 2 + 3 + 4;
2. 此处指使用 抗丢包 技术之后的丢包率,比使用 抗丢包 技术前的丢包率更低。
decoderOutputFrameRate远端视频解码器的输出帧率。
rendererOutputFrameRate远端视频渲染器的输出帧率。
totalFrozenTime远端用户 / 主播在加入频道后发送视频 卡顿 的累计时长。通话过程中,视频帧率设置不低于 5 fps 时,连续渲染的两帧视频之间间隔超过 500 ms,则计为一次视频 卡顿
frozenRate远端用户 / 主播卡顿累计时长占视频有效时长的百分比。视频 有效时长 指远端用户 / 主播加入频道后,既没有停止发送视频流,也没有禁用视频模块的通话时长。

远端用户 / 主播的视频流状态改变时,SDK 会触发 onRemoteVideoStateChanged 回调向你报告远端视频流当前状态和状态改变的原因。

API 参考

开发注意事项

onLocalAudioStateChangedonRemoteAudioStateChangedonLocalVideoStateChangedonRemoteVideoStateChanged 状态监控回调 不会 每 2 秒被 SDK 自动触发,各自触发条件详见正文。