tencent cloud

文档反馈

最后更新时间:2024-09-02 17:22:55
    本文档主要介绍如何感知当前网络的好与坏。

    通话过程中检测网络质量

    TRTC 提供了一个叫做 onNetworkQuality 的回调事件,它会每隔两秒钟一次向您汇报当前的网络质量,其参数包括 localQuality 和 remoteQuality 两个部分:
    localQuality :代表您当前的网络质量,分为 6 个等级,分别是 Excellent、Good、Poor、Bad、VeryBad 和 Down。
    remoteQuality:代表远端用户的网络质量,这是一个素组,素组中的每个元素代表一个远端用户的网络质量。
    Quality
    名称
    说明
    0
    Unknown
    未感知到
    1
    Excellent
    当前网络非常好
    2
    Good
    当前网络比较好
    3
    Poor
    当前网络一般
    4
    Bad
    当前网络较差,可能会出现明显的卡顿和通话延迟
    5
    VeryBad
    当前网络很差,TRTC 只能勉强保持连接,但无法保证通讯质量
    6
    Down
    当前网络不满足 TRTC 的最低要求,无法进行正常的音视频通话
    您只需要监听 TRTC 的 onNetworkQuality 并在界面上做相应地提示即可:
    // 监听 onNetworkQuality 回调并感知当前网络状态的变化
    if (type == TRTCCloudListener.onNetworkQuality) {
    if (type == TRTCCloudDef.TRTC_QUALITY_UNKNOWN) {
    // TODO
    } else if (type == TRTCCloudDef.TRTC_QUALITY_Excellent) {
    // TODO
    } else if (type == TRTCCloudDef.TRTC_QUALITY_Good) {
    // TODO
    } else if (type == TRTCCloudDef.TRTC_QUALITY_Poor) {
    // TODO
    } else if (type == TRTCCloudDef.TRTC_QUALITY_Bad) {
    // TODO
    } else if (type == TRTCCloudDef.TRTC_QUALITY_Vbad) {
    // TODO
    } else if (type == TRTCCloudDef.TRTC_QUALITY_Down) {
    // TODO
    }
    // Get the network quality of remote users
    for (var info in param['remoteQuality']) {
    // TODO
    }
    }
    

    通话前检测网络质量

    测速的原理

    
    测速的原理是 SDK 向服务器节点发送一批探测包,然后统计回包的质量,并将测速的结果通过回调接口通知出来。
    测速的结果将会用于优化 SDK 接下来的服务器选择策略,因此推荐您在用户首次通话前先进行一次测速,这将有助于我们选择最佳的服务器。同时,如果测试结果非常不理想,您可以通过醒目的 UI 提示用户选择更好的网络。
    测速的结果(TRTCSpeedTestResult)包含如下几个字段:
    字段
    含义
    含义说明
    success
    是否成功
    本次测试是否成功
    errMsg
    错误信息
    带宽测试的详细错误信息
    ip
    服务器 IP
    测速服务器的 IP
    quality
    网络质量评分
    通过评估算法测算出的网络质量,loss 越低,rtt 越小,得分也就越高
    upLostRate
    上行丢包率
    范围是[0 - 1.0],例如0.3代表每向服务器发送10个数据包,可能有3个会在中途丢失
    downLostRate
    下行丢包率
    范围是[0 - 1.0],例如0.2代表从服务器每收取10个数据包,可能有2个会在中途丢失
    rtt
    网络延时
    代表 SDK 跟服务器一来一回之间所消耗的时间,这个值越小越好,正常数值在10ms - 100ms 之间
    availableUpBandwidth
    上行带宽
    预测的上行带宽,单位为 kbps, -1表示无效值
    availableDownBandwidth
    下行带宽
    预测的下行带宽,单位为 kbps, -1表示无效值

    如何测速

    通过 TRTCCloud 的 startSpeedTest (Flutter中为 startSpeedTestWithParams 接口)功能可以启动测速功能,测速的结果会通过回调函数返回。
    // 启动网络测速的示例代码, 需要 sdkAppId 和 UserSig,(获取方式参考基本功能)
    // 这里以登录后开始测试为例
    _onLogin(String userId, String userSig) async {
    TRTCSpeedTestParams params = TRTCSpeedTestParams(
    // sdkAppID 为控制台中获取的实际应用的 AppID
    sdkAppId: sdkAppId,
    userId: userId,
    userSig: userSig,
    scene: TRTCSpeedTestScene.delayBandwidthTesting,
    // 预期的上行带宽(kbps,取值范围: 10 ~ 5000,为 0 时不测试)
    expectedDownBandwidth: 500,
    // 预期的下行带宽(kbps,取值范围: 10 ~ 5000,为 0 时不测试)
    expectedUpBandwidth: 500,
    );
    int? returnValue = await trtcCloud.startSpeedTestWithParams(params);
    trtcCloud.registerListener(speedTestListener);
    }
    
    speedTestListener(type, param) {
    if (type == TRTCCloudListener.onSpeedTestResult) {
    var result = param['result']; bool success = result['success']; String errMsg = result['errMsg']; String ip = result['ip']; int quality = result['quality']; double upLostRate = result['upLostRate']; double downLostRate = result['downLostRate']; int rtt = result['rtt']; int availableDownBandwidth = result['availableDownBandwidth']; int availableUpBandwidth = result['availableUpBandwidth']; int upJitter = result['upJitter']; int downJitter = result['downJitter'];
    }
    }
    联系我们

    联系我们,为您的业务提供专属服务。

    技术支持

    如果你想寻求进一步的帮助,通过工单与我们进行联络。我们提供7x24的工单服务。

    7x24 电话支持