通话质量检测可以从通话前和通话中两个维度来梳理。
startLastmileProbeTest:通话前网络质量检测
在用户加入频道前,或直播观众切换为主播前,调用该方法对本地 Last-mile 网络质量进行探测,判断和预测目前的上行网络质量是否足够好。
启用该方法后,SDK 会依次返回如下 2 个回调:
startEchoTest:通话前设备及网络连接检测
在加入频道前,调用该方法对本地音频设备(麦克风或扬声器)和网络连接进行测试,可以排除音频设备硬件故障。
测试过程中,用户先说一段话,声音会在设置的时间间隔后放出来。如果用户能正常听到自己刚才说的话,就表示系统音频设备和网络连接都是正常的。
通话过程中,SDK 会每 2 秒触发以下回调。如果是反应远端用户的网络质量,则如果远端有多个用户或主播,则每 2 秒触发多个相应的回调。
1、onNetworkQuality:通话中用户的上下行网络质量回调
该回调通过打分反馈上下行网络质量。其中上行网络质量基于上行音视频的发送码率、上行丢包率、平均往返时延和网络抖动计算;下行网络质量基于下行网络的丢包率、平均往返延时和网络抖动计算
2、onLocalVideoStats:通话中本地视频流的统计信息回调
该回调反馈通话中本地设备发送视频流的统计信息,包含视频发送的码率和帧率、本地输出帧率、目标码率和帧率以及网络自适应情况。
3、onRemoteVideoStats:通话中远端视频流的统计信息回调
该回调反馈通话中远端用户发送的视频流的统计信息,包含远端视频流的宽和高,视频接收的码率、远端输出帧率以及该远端视频流是大流还是小流。
4、onRemoteAudioStats:通话中远端音频流的统计信息回调
该回调反馈通话中远端用户发送的音频流的统计信息,包含远端用户发送的音频流质量打分,发送端-接收端延迟,接收端网络抖动引起的延迟,以及音频丢帧率。
5、onRtcStats:当前通话统计回调
该回调反馈当前通话相关的统计信息,包含通话时长、累计发送和接收字节数、发送和接收码率、音频发送和接收码率、视频发送和接收码率、当前频道内的人数、客户端-服务器延迟、当前系统的 CPU 使用率,以及当前 App 的 CPU 使用率。
6、onRemoteAudioTransportStats:通话中远端音频流传输的统计信息回调
该回调通过音频包相关数据的计算,如丢包、网络延迟、远端音频包的接收码率等,反馈当前网络质量。
7、onRemoteVideoTransportStats:通话中远端视频流传输的统计信息回调
该回调通过视频包相关数据的计算,如丢包、网络延迟、远端音频包的接收码率等,反馈当前网络质量。
1、onLocalVideoStateChanged:本地视频状态发生改变回调
该回调反馈当前的本地视频状态,以及视频出错的原因,如采集设备故障或编码失败等。当本地视频出现故障时,该回调可以帮助定位及排查问题。
2、onRemoteVideoStateChanged:远端视频状态发生改变回调
该回调反馈当前的远端视频状态是正常还是卡住。
onRtmpStreamingStateChanged:RTMP 推流状态
该回调反馈 RTMP 的推流状态,以及推流出错的原因。