通话前网络和设备检测
功能描述
在对质量要求高的场景下,进行通话前检测可以帮助提前识别并排查问题,保证实时通信体验。通话前检测通常可以从如下两个角度开展:
- 网络质量探测:通过探测当前的上下行 last mile 网络质量,判断或预测用户当前的网络状况是否良好。
- 设备质量检测:检测本地音频采集设备和播放设备是否能正常工作。
CloudHub SDK 提供了完备的网络探测及设备检测接口,帮助你实现如上功能,保证用户的使用体验。本文介绍如何使用相关 API 实现上述功能。
网络质量探测
CloudHub SDK 提供 startLastmileProbeTest
方法,支持用户在加入频道前进行网络质量探测,然后通过回调将当前网络质量的相关数据,包括往返时延、上下行丢包率、上下行网络带宽等返回给 app。
实现方法
开始前请确保你已在项目中实现了基本的音视频通信或直播功能。
- 在用户加入频道或上麦前,调用
startLastmileProbeTest
进行网络质量探测。调用该方法时,你需要指定期望的最大上下行码率。 - 启用该方法后,SDK 会依次返回如下 2 个回调:
onLastmileQuality
:约 2 秒内返回。该回调通过打分反馈上下行网络质量,更贴近主观感受。onLastmileProbeResult
:约 30 秒内返回。该回调通过客观数据反馈上下行网络质量,更客观。
- 获取到网络质量数据后,调用
stopLastmileProbeTest
停止通话前网络质量探测。
API 参考
android
ios
设备质量检测
CloudHub SDK 通过一个 startEchoTest
方法,支持用户在加入频道前,启动通话测试。该测试的目的是测试系统的音频设备(耳麦、扬声器等)和网络连接是否正常。
实现方法
开始前请确保你已经了解如何实现音视频通话或实现互动直播
在加入频道前,调用
startEchoTest
方法。调用该方法时,你需要设置一个intervalInSeconds
参数,表示获取本次测试结果的间隔时间。该参数单位为秒,取值范围为 [2,10],默认值为 10.成功调用
startEchoTest
方法后,引导用户先说一段话,如果声音在设置的时间间隔后回放出来,且用户能听到自己刚才说的话,则表示系统音频设备和网络连接都是正常的获取音频设备测试结果后,调用
stopEchoTest
方法停止语音通话检测,然后你可以调用joinChannel
加入频道
API 参考
android
iOS
开发注意事项
- 调用
startLastmileProbeTest
进行通话前网络质量探测时,会消耗一定的网络流量。因此调用方法后,CloudHub 建议在收到onLastmileProbeResult
回调之前不要调用其他方法,避免因 API 操作过于频繁导致其他方法无法执行。 onLastmileQuality
回调第一次报告的结果有一定概率是UNKNOWN
, 可通过之后的几次回调获得结果。- 开启网络测试后,纯语音产品使用 48 Kbps 的固定探测码率;视频产品会根据当前选定的视频属性调整探测码率。
- 直播场景下,只有角色为主播的用户才能调用
startEchoTest
。 - 调用
startEchoTest
后必须调用stopEchoTest
以结束测试,否则不能进行下一次回声测试,也不能加入频道。