You need to enable JavaScript to run this app.
导航
通话质量监测
最近更新时间:2024.06.26 11:29:00首次发布时间:2022.04.07 10:42:09

RTC SDK 通过回调,通话过程中提供了丰富的信息和统计数据报告,包括网络质量、音视频流质量和状态、设备性能和通话信息统计信息。你可以根据这些信息,通过 UI 向用户展示通话质量看板,进行通话中的状态展示,帮助用户进行通话问题定位,提升使用体验。

前提条件

你已经集成 RTC SDK,实现了基础音视频通话功能。

质量统计

质量统计看板通常包含由这几个部分信息组成

  • 系统负载。

  • 上下行的网络指标。

  • 视频质量指标。其中,视频包括摄像头流和屏幕共享流。

  • 音频质量指标。

本节介绍如何利用相关回调,在客户端构建一个通话质量看板。

如果你需要对 appId 下所有用户的通话质量进行监测和数据分析,前往 控制台 > 质量概览 进行查看。

系统负载

系统负载主要展示了 App 对当前设备的占用情况,包含 CPU 和内存的占用比例。
你可以通过 onSysStats 回调获取当前 App 的 CPU 使用率、当前 App 的 内存使用率等相关参数,如下表。 onSysStats 为周期回调,在用户进房后自动开启,频率是每 2s 一次。

参数描述

CPU 使用情况

  • cpu_app_usage:当前 App 的 CPU 使用率

  • cpu_total_usage: 系统的 CPU 使用率

通过 cpu_total_usage - cpu_app_usage 可以计算出其他 App 和系统的 CPU 使用率。

内存使用情况

  • full_memory:内存大小

  • memory_usage:当前 App 的内存使用

  • total_memory_usage:已使用的内存大小,通过减去 memory_usage 可以得出其他 App 和系统的占用大小

  • free_memory:空闲内存大小

你也可以通过使用内存使用率数据将展示的数据切换为百分比。

点击下表中的链接,查看各端的回调说明。

回调AndroidiOSMacWindows
设备统计信息报告onSysStatsrtcEngine:onSysStats:rtcEngine:onSysStats:onSysStats

网络环境

用户进房后,通过每 2s 一次的 onRoomStats 回调获取网络信息,包括带宽、丢包率、抖动和时延等,实现网络指标的动态展示。
用户进房后和用户的网络类型改变时,都会触发 onNetworkTypeChanged 回调,你可以从中获取到用户当前的网络类型并通过 UI 进行展示。

参数描述备注

带宽

上行:txKBitRate
下行:rxKBitRate

单位,kbps

丢包率

上行:txLostrate
下行:rxLostrate

(无)

时延rtt客户端到服务端数据传输的往返时延,单位,ms

抖动

上行:txJitter
下行:rxJitter

单位,ms

点击下表中的链接,查看各端的回调说明。

回调AndroidiOSMacWindows

房间的网络信息报告

onRoomStats

rtcRoom:onRoomStats:

rtcRoom:onRoomStats:

onRoomStats

网络类型

onNetworkTypeChanged

rtcEngine:onNetworkTypeChanged:

rtcEngine:onNetworkTypeChanged:

onNetworkTypeChanged

音视频质量报告

你可以通过以下回调获取发布和订阅的音视频质量信息。

音频

  • 音频质量:分别从 onLocalStreamStatsonRemoteStreamStats 回调获取上、下行媒体流的质量信息。通过远端音频回调可以通过 onActiveSpeaker 筛选出当前活跃用户的音频数据。

  • 麦克风音量:通过 onLocalAudioPropertiesReport 获取麦克风音量。

  • 扬声器音量:通过 onRemoteAudioPropertiesReport 获取扬声器音量。

参数描述备注

上行码率

sendKBitrate

发送码率,指统计周期内发送音频码率的平均值。单位为 kbps 。
实际码率和设定的码率越接近,网络质量越好

下行码率receivedKBitrate接收码率。统计周期内的音频接收码率
麦克风音量nonlinearVolume本地音频混音后音量大小
扬声器音量nonlinearVolume远端音频音量大小

视频

分别从 onLocalStreamStatsonRemoteStreamStats 回调获取上、下行媒体流的质量信息。当同时订阅多路远端视频时,建议选择用户的焦点视频的数据进行展示。常用的视频信息包括:

  • 分辨率

  • 帧率

  • 码率

注意:当本地设置发送多路流时,即,内容相同但分辨率不同的视频流时,上述回调返回的是分辨率最大流的相关信息。

屏幕共享

和视频质量信息类似的,你可以从 onLocalStreamStatsonRemoteStreamStats 回调中获取屏幕共享的分辨率、帧率和码率等信息。

点击下表中的链接,查看各端的回调说明。

回调AndroidiOSMacWindows
本端音视频质量报告onLocalStreamStatsrtcEngine:onLocalStreamStats:rtcRoom:onLocalStreamStats:onLocalStreamStats
远端音视频质量报告onRemoteStreamStatsrtcRoom:onRemoteStreamStats:rtcRoom:onRemoteStreamStats:onRemoteStreamStats
麦克风音量onLocalAudioPropertiesReportrtcEngine:onLocalAudioPropertiesReport:rtcEngine:onLocalAudioPropertiesReport:onLocalAudioPropertiesReport
扬声器音量onRemoteAudioPropertiesReportrtcEngine:onRemoteAudioPropertiesReport:totalRemoteVolume:rtcEngine:onRemoteAudioPropertiesReport:totalRemoteVolume:onRemoteAudioPropertiesReport
音频活跃用户回调onActiveSpeakerrtcEngine:onActiveSpeaker:uid:rtcEngine:onActiveSpeaker:uid:onActiveSpeaker

媒体流状态监控

你可以通过音视频流的状态检测回调,控制 UI 显示用户的状态。例如,是否开麦、是否开启了摄像头等。

  • 当本地用户开关音/视频时,将触发 onLocalAudioStateChangedonLocalVideoStateChanged 回调。

  • 当已订阅的远端用户开关音/视频时,将触发 onRemoteAudioStateChangedonRemoteVideoStateChanged 回调。

点击下表中的链接,查看各端的回调说明。

回调AndroidiOSMacWindows
本地音频状态监控onLocalAudioStateChangedrtcEngine:onLocalAudioStateChanged:error:rtcEngine:onLocalAudioStateChanged:error:onLocalAudioStateChanged
本地视频状态监控onLocalVideoStateChangedrtcEngine:onLocalVideoStateChanged:withStreamState:withStreamError:rtcEngine:onLocalVideoStateChanged:withStreamState:withStreamError:onLocalVideoStateChanged

远端音频状态监控

onRemoteAudioStateChanged

rtcEngine:onRemoteAudioStateChanged:state:reason:

rtcEngine:onRemoteAudioStateChanged:state:reason:

onRemoteAudioStateChanged

远端视频状态监控onRemoteVideoStateChangedrtcEngine:onRemoteVideoStateChanged:withVideoState:withVideoStateReason:rtcEngine:onRemoteVideoStateChanged:withVideoState:withVideoStateReason:onRemoteVideoStateChanged

弱网提示

网络质量是影响用户通话体验的重要因素,当用户处于弱网状态下时,通过 UI 进行提示,相当于给了用户通话质量可能变差的心理预期和原因解释,将有效提升使用体验。
用户进房后,通过每 2s 一次的 onNetworkQuality 回调获取本地用户和已订阅的远端用户的上下行网络质量评分。
根据 NetworkQuality 的数值,对网络状况进行判定并采取相应措施。

  • NETWORK_QUALITY_BAD:媒体流网络质量差沟通不顺畅,建议降低采样率、码率或通过 UI 提示用户是否切换为纯语音通话。

  • NETWORK_QUALITY_VERY_BAD:媒体流网络质量非常差,建议通过 UI 给出弱网提示。