文档中心
Old_Live_Room 互动视频
文档中心
体验 App
SDK 中心
API 中心
常见问题
代码市场
进入控制台
登录/注册
  • 文档中心
  • 互动视频
  • 其他功能
  • 通话前检测

通话前检测

更新时间:2024-02-26 10:45

1 功能简介

为了保证实时通信体验,通话前可以进行网络与设备的检测,提前识别并排查问题。

  • 网络检测:检测网络环境,可用于判断或预测网络环境是否适合推/拉指定码率的流。
  • 设备检测:检测本地麦克风、摄像头以及扬声器是否能正常工作。

本文将介绍如何使用 ZEGO SDK 接口,实现上述两个角度的检测。

2 网络检测

请参考 网络与性能 进行操作。

3 设备检测

3.1 麦克风检测

3.1.1 检测逻辑

麦克风设备检测流程如下图所示:

3.1.2 对应接口

1. 启动麦克风

调用 startPreview 接口在不推流的情况下启动音频采集。

    [self.zegoApi startPreview];

2. 检测麦克风权限

ZEGO SDK 会自动检查麦克风权限。如果用户未授权,则会请求用户同意;如果用户拒绝,则需要用户手动去系统设置里开启权限。

3. 检测麦克风是否可用

调用 zego_onDevice:error: 接口检测设备是否异常,若未检测到任何异常反馈(可同步启动“4. 检测麦克风收音数据”),且麦克风收音数据检测正常,则麦克风设备可用。

/**
 设备事件回调
 @param deviceName 设备类型名称。返回值 kZegoDeviceCameraName/kZegoDeviceMicrophoneName/kZegoDeviceAudioName
 @param errorCode 错误码。 返回值参考 ZegoAPIDeviceErrorCode 定义
 @param deviceID  出错的设备id (目前仅支持mac设备)
 @discussion 调用 [ZegoLiveRoomApi -setDeviceEventDelegate] 设置设备事件代理对象后,在此回调中获取设备状态或错误
 */
- (void)zego_onDevice:(NSString *)deviceName error:(int)errorCode deviceID:(NSString *)deviceID;

4. 检测麦克风收音数据

调用 getCaptureSoundLevel 接口获取麦克风采集到声音的能量值,如果数据无异常则麦克风正常,可用于通话。

    float soundLevel = [self.zegoApi getCaptureSoundLevel];

3.2 摄像头检测

3.2.1 检测逻辑

摄像头设备检测流程如下图所示:

3.2.2 对应接口

1. 启动摄像头

通过 startPreview 接口绑定摄像头预览画面的视图,在不推流的情况下启动视频采集并预览。

    [self.zegoApi setPreviewView:[self getView]];
    [self.zegoApi startPreview];

2. 检测摄像头权限

ZEGO SDK 会自动检查麦克风权限。如果用户未授权,则会请求用户同意;如果用户拒绝,则需要用户手动去系统设置里开启权限。

3. 检测摄像头是否可用

通过 zego_onDevice:error: 接口检测设备是否异常,若未检测到任何异常反馈(可同步启动“4. 检测画面是否正常”),且画面显示正常,则设备可用。

/**
 设备事件回调
 @param deviceName 设备类型名称。返回值 kZegoDeviceCameraName/kZegoDeviceMicrophoneName/kZegoDeviceAudioName
 @param errorCode 错误码。 返回值参考 ZegoAPIDeviceErrorCode 定义
 @param deviceID  出错的设备id (目前仅支持mac设备)
 @discussion 调用 [ZegoLiveRoomApi -setDeviceEventDelegate] 设置设备事件代理对象后,在此回调中获取设备状态或错误
 */
- (void)zego_onDevice:(NSString *)deviceName error:(int)errorCode deviceID:(NSString *)deviceID;

4. 检测画面是否正常

若此时画面显示正常,则摄像头正常,可用于通话。

3.3 扬声器检测

3.3.1 检测逻辑

播放设备检测流程如下图所示:

3.3.2 对应接口

1. 使用媒体播放器播放音频文件

调用 ZegoMediaPlayer 接口播放您用于测试的音频文件。

    ZegoMediaPlayer *mediaPlayer;
    mediaPlayer = [[ZegoMediaPlayer alloc] initWithPlayerType:MediaPlayerTypePlayer playerIndex:ZegoMediaPlayerIndexFirst];
    NSString *resourcePath = "xxx";
    [mediaPlayer start:resourcePath startPosition:0];

2. 检测是否听到声音

如果可以听到相应的音频,则播放设备正常,可用于通话。

4 API 参考列表

方法 描述
startPreview 启动本地预览
zego_onDevice:error: 设备事件回调
getCaptureSoundLevel 获取当前采集的音量

5 常见错误码

当开发者收到 zego_onDevice:error: 设备回调不为 0 时,相关的错误码如下:

方法 描述
ZEGOAPI_DEVICE_ERROR_GENERIC = -1 一般性错误
ZEGOAPI_DEVICE_ERROR_INVALID_ID = -2 无效设备 ID
ZEGOAPI_DEVICE_ERROR_NO_AUTHORIZATION = -3 没有权限
ZEGOAPI_DEVICE_ERROR_ZERO_FPS = -4 采集帧率为 0
ZEGOAPI_DEVICE_ERROR_IN_USE_BY_OTHER = -5 设备被占用
ZEGOAPI_DEVICE_ERROR_UNPLUGGED = -6 设备未插入
ZEGOAPI_DEVICE_ERROR_MEDIA_SERVICES_LOST = -8 媒体服务无法恢复
ZEGOAPI_DEVICE_ERROR_IN_USE_BY_SIRI = -9 设备被 SIRI 占用
本篇目录
  • 免费试用
  • 提交工单
    咨询集成、功能及报价等问题
    电话咨询
    400 1006 604
    咨询客服
    微信扫码,24h在线

    联系我们

  • 文档反馈