文档中心 实时音视频 高级功能 通话前网络测速

通话前网络测速

最近更新时间:2019-08-06 19:46:34

普通用户很难评估网络质量,建议您在进行视频通话之前先进行网络测试,通过测速可以更直观地评估网络质量。

注意事项

  • 视频通话期间请勿测试,以免影响通话质量。
  • 测速本身会消耗一定的流量,从而产生极少量额外的流量费用(基本可以忽略)。

支持的平台

iOS Android Mac OS Windows 微信小程序 Chrome浏览器

测速的原理

  • 测速的原理是 SDK 向服务器节点发送一批探测包,然后统计回包的质量,并将测速的结果通过回调接口通知出来。

  • 测速的结果将会用于优化 SDK 接下来的服务器选择策略,因此推荐您在用户首次通话前先进行一次测速,这将有助于我们选择最佳的服务器。同时,如果测试结果非常不理想,您可以通过醒目的 UI 提示用户选择更好的网络。

  • 由于 SDK 同时可以连接的云端服务器通常有超过三个以上的节点,测试过程是一台接一台串联进行的,所以测速结果的返回值会分多次回调通知出来。

  • 测速的结果(TRTCSpeedTestResult)包含如下几个字段:

字段 含义 含义说明
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 之间

如何测速

通过 TRTCCloud 的 startSpeedTest 功能可以启动测速功能,测速的结果会通过回调函数,每隔1~2秒回调一次,每次回调都包含 SDK 到一个云服务器节点的测速结果,回调次数取决于 SDK 一共访问了多少台云服务器。

  • Objective-C
// 启动网络测速的示例代码, 需要 sdkAppId 和 UserSig,(获取方式参考基本功能)
// 这里以登录后开始测试为例
- (void)onLogin:(NSString *)userId userSig:(NSString *)userSid 
{
    // sdkAppID 为控制台中获取的实际应用的 AppID
    [trtcCloud startSpeedTest:SDKAppID
                       userId:userId
                      userSig:userSig
                   completion:^(TRTCSpeedTestResult *result, NSInteger completedCount, NSInteger totalCount) {
                       NSLog(@"速度测试(第%d次/共%d次) %@", (int)completedCount, (int)totalCount, result);
                   }];
}
  • Java
//启动网络测速的示例代码, 需要 sdkAppId 和 UserSig,(获取方式参考基本功能)
// 这里以登录后开始测试为例
public void onLogin(String userId, String userSig) 
{
    // sdkAppID 为控制台中获取的实际应用的 AppID
    trtcCloud.startSpeedTest(sdkAppID, userId, userSig);
}

// 监听测速结果,继承 TRTCCloudListener  并实现如下方法
void onSpeedTest(TRTCCloudDef.TRTCSpeedTestResult currentResult, int finishedCount, int totalCount)
{
    // SDK 对多个服务器 IP 做测速,每次回调一个 IP 的测速结果
}
  • C++
// 启动网络测速的示例代码, 需要 sdkAppId 和 UserSig,(获取方式参考基本功能)
// 这里以登录后开始测试为例
void onLogin(const char* userId, const char* userSig)
{
    // sdkAppID 为控制台中获取的实际应用的 AppID
    trtcCloud->startSpeedTest(sdkAppID, userId, userSig);
}

// 监听测速结果
void TRTCCloudCallbackImpl::onSpeedTest(
             const TRTCSpeedTestResult& currentResult, uint32_t finishedCount, uint32_t totalCount)
{
    // SDK 对多个服务器 IP 做测速,每次回调一个 IP 的测速结果
}
  • C#
// 启动网络测速的示例代码, 需要 sdkAppId 和 UserSig,(获取方式参考基本功能)
// 这里以登录后开始测试为例
private void onLogin(string userId, string userSig)
{
    // sdkAppID 为控制台中获取的实际应用的 AppID
    mTRTCCloud.startSpeedTest(sdkAppID, userId, userSig);
}

// 监听测速结果
public void onSpeedTest(TRTCSpeedTestResult currentResult, uint finishedCount, uint totalCount)
{
    // SDK 对多个服务器 IP 做测速,每次回调一个 IP 的测速结果
}