实时音视频
  • iOS : Objective-C
  • Android
  • macOS
  • Windows
  • HarmonyOS
  • Linux
  • Web
  • 小程序
  • Flutter
  • Electron
  • Unity3D
  • uni-app
  • React Native
  • Cocos Creator
  • 产品简介
  • 下载
  • 体验 App
  • 快速开始
    • 跑通示例源码
    • 集成 SDK
    • 实现视频通话
    • 实时音视频 SDK 与实时语音 SDK 差异
    • 场景化音视频配置
  • 基础功能
  • 进阶功能
  • 最佳实践
  • 常见错误码
  • 服务端 API
  • 客户端 API
  • 常见问题

网络测速

更新时间:2022-06-01 17:40

1 功能简介

ZEGO 提供网络测速功能,可在用户进行推/拉流前,检测上行和下行网络速度,判断当前网络环境下适合推/拉多大码率的音视频流。

当上行测速结果显示丢包率较高时,推荐使用降低分辨率或降低帧率等方法降低推流码率,以保证正常推流;当下行测速结果显示丢包率较高时,推荐使用 SDK 提供的 视频进阶 - 分层视频编码 功能拉取低码率的流,以保证正常拉流。

开发者业务中出现以下情况时,ZEGO 推荐使用 SDK 的网络测速功能:

  • 通话场景下,需要进行网络质量评估。

  • 教育场景下,需要进行课前网络检测。

  • 直播场景下,需要进行网络连接速度测试。

网络测速基本原理如下图所示:

/Pics/Common/ZegoExpressEngine/Network_speed_test.png

2 示例源码下载

请参考 下载示例源码 获取源码。

相关源码请查看 “/ZegoExpressExample/Examples/Others/NetworkAndPerformance” 目录下的文件。

3 前提条件

在实现网络测速功能之前,请确保:

4 使用步骤

4.1 监听测速回调

开始测速前,可先设置测速相关的回调。

// 网络测速质量回调
- (void)onNetworkSpeedTestQualityUpdate:(ZegoNetworkSpeedTestQuality *)quality type:(ZegoNetworkSpeedTestType)type {
     NSLog(@"onNetworkSpeedTestQualityUpdate rtt=%d packetLostRate=%f connectCost=%d type=%d", quality.rtt, quality.packetLostRate, quality.connectCost, type);
}

// 网络测速异常回调
- (void)onNetworkSpeedTestError:(int)errorCode type:(ZegoNetworkSpeedTestType)type {
     NSLog(@"onNetworkSpeedTestError errorCode=%d, type=%d", errorCode, type);
}

4.2 开始测速

创建 ZegoNetworkSpeedTestConfig 网络测速配置的实例,根据实际情况设置是否进行上下行测速及期望码率,调用 startNetworkSpeedTest 接口开启网络测速。

调用 startNetworkSpeedTest 接口开启测速后,最多支持测速 3 分钟,超时后会强制结束测速。如需继续测速,请再次调用该接口。

ZegoNetworkSpeedTestConfig *config = [[ZegoNetworkSpeedTestConfig alloc] init];
ZegoVideoConfig *videoConfig = [[ZegoExpressEngine sharedEngine] getVideoConfig];

// 进行上行测速,指定期望推流码率
config.testUplink = YES;
config.expectedUplinkBitrate = videoConfig.bitrate;

// 进行下行测速,指定期望拉流码率
config.testDownlink = YES;
config.expectedDownlinkBitrate = videoConfig.bitrate;

// 开始测速,默认回调间隔为 3 秒
[[ZegoExpressEngine sharedEngine] startNetworkSpeedTest:config];

// 若需设置回调间隔,可参考如下调用(以 1.5 秒为例)
[[ZegoExpressEngine sharedEngine] startNetworkSpeedTest:config interval:1500];

测速结果将在 onNetworkSpeedTestQualityUpdate 中的网络测速质量 ZegoNetworkSpeedTestQuality 返回,通过分析各参数值,可得知当前网络质量是否良好。

ZegoNetworkSpeedTestQuality 中各参数如下:

参数 描述 说明
connectCost 连接服务器耗时,单位毫秒。 测速过程中如果网络连接断开会自动发起重连,此变量会相应更新,数值越小越好。
rtt 网络延时,单位毫秒。 代表 SDK 与服务器往返之间所消耗的时间,数值越小越好。
packetLostRate 丢包率,单位为百分比。 取值范围在 0.0 - 1.0,例如 0.5 代表每向服务器发送的 10 个数据包中,可能有其中 5 个会在中途丢失。
quality 网络质量 代表当前网络质量水平,具体可参见 ZegoStreamQualityLevel
  • EXCELLENT:质量极好
  • GOOD:质量好
  • MEDIUM:质量正常
  • BAD:质量差
  • DIE:质量异常
  • UNKNOWN:质量未知

4.3 停止测速

调用 stopNetworkSpeedTest 接口停止网络测速。

停止测速后,将不会再收到 onNetworkSpeedTestQualityUpdateonNetworkSpeedTestError 回调。

[[ZegoExpressEngine sharedEngine] stopNetworkSpeedTest];

5 API 参考列表

方法 描述
onNetworkSpeedTestQualityUpdate 网络测速质量回调
onNetworkSpeedTestError 网络测速异常回调
startNetworkSpeedTest 开始网络测速
stopNetworkSpeedTest 停止网路测速