在加入频道或切换角色为主播前,进行网络质量探测,可以判断或预测用户当前的网络状况是否良好,可以满足音频码率或者当前选定的视频属性的目标码率。
在对网络质量要求高的场景下,声网建议在加入频道前进行探测,保证通信顺畅。
开始检测网络质量前,请确保你已在项目中实现了基本的音视频通信或直播功能。详见快速开始:
在用户加入频道或上麦前,调用 StartLastmileProbeTest
进行网络质量探测,向用户反馈上下行网络的带宽、丢包、网络抖动和往返时延。
启用该方法后,SDK 会依次返回如下 2 个回调:
OnLastmileQualityHandler
:约 2 秒内返回。该回调通过打分反馈上下行网络质量,更贴近主观感受OnLastmileProbeResultHandler
:约 30 秒内返回。该回调通过客观数据反馈上下行网络质量,更客观。获取到网络质量数据后,调用 StopLastmileProbeTest
停止通话前网络质量探测。
参考如下时序在你的项目中实现通话前网络探测功能。
参考下文代码在你的项目中实现通话前网络探测功能。
// 注册回调接口。
// 开始 Last-mile 网络探测后,约 2 秒后发生该回调。
void OnLastmileQualityHandler(int quality)
{
}
// 开始 Last-mile 网络探测后,约 30 秒后发生该回调。
void OnLastmileProbeResultHandler(LastmileProbeResult result)
{
//(1)可以选择在回调内部结束 Last-mile 网络探测。在测试结束前,声网建议不要调用其他 API 方法。
mRtcEngine.StopLastmileProbeTest();
}
mRtcEngine.OnLastmileQuality = OnLastmileQualityHandler;
mRtcEngine.OnLastmileProbeResult = OnLastmileProbeResultHandler;
// 配置一个 LastmileProbeConfig 实例。
LastmileProbeConfig config = new LastmileProbeConfig();
// 确认探测上行网络质量。
config.probeUplink = true;
// 确认探测下行网络质量。
config.probeDownlink = true;
// 期望的最高发送码率,单位为 bps,范围为 [100000, 5000000]。
config.expectedUplinkBitrate = 100000;
// 期望的最高接收码率,单位为 bps,范围为 [100000, 5000000]。
config.expectedDownlinkBitrate = 100000;
// 加入频道前开始 Last-mile 网络探测。
mRtcEngine.StartLastmileProbeTest(config);
// (2)也可以选择其他时候结束 Last-mile 网络探测。在测试结束前,声网建议不要调用其他 API 方法。
mRtcEngine.StopLastmileProbeTest();
OnLastmileQualityHandler
回调第一次报告的结果有一定概率是 unknown
, 可通过之后的几次回调获得结果。