You need to enable JavaScript to run this app.
导航
设备异常处理
最近更新时间:2023.10.12 15:24:40首次发布时间:2023.10.12 15:24:40

在进行音视频通话时,可能会遇到音视频设备出现各种异常情况,例如设备被占用或设备未授权等问题。
本文档介绍设备出现异常时的处理方法,以提升用户体验。

Windows

前提条件

通过 onAudioDeviceStateChangedonVideoDeviceStateChanged 回调监听用户本地设备状态,及时处理设备异常情况。

处理方法

  1. 通过回调事件中的 RTCAudioDeviceTypeRTCVideoDeviceType 来确定设备类型。例如,kRTCAudioDeviceTypeCaptureDevice 枚举表示设备类型为音频采集设备。

  2. 通过回调事件中的 MediaDeviceState 来确定设备状态,并进行相应的错误提示。

当 MediaDeviceState 为 kMediaDeviceStateRuntimeError 时,表示设备运行时出现错误;再基于 MediaDeviceError 错误码进行对应处理,详情如下:

类型说明处理方法
kMediaDeviceErrorDeviceNoPermission媒体设备未授权提示用户授权后重新进房
kMediaDeviceErrorDeviceBusy媒体设备被其他应用占用提示用户关闭其他应用后重新进房
kMediaDeviceErrorDeviceNotFound未找到指定设备提示用户检查是否正确连接设备或重新连接设备
kMediaDeviceErrorDeviceDisconnected媒体设备被移除提示用户重新连接设备
其他非0返回值/联系技术支持处理
iOS

前提条件

通过 rtcEngine:onAudioDeviceStateChanged:device_type:device_state:device_error:rtcEngine:onVideoDeviceStateChanged:device_type:device_state:device_error: 回调监听用户本地设备状态,及时处理设备异常情况。

处理方法

  1. 通过回调事件中的 ByteRTCAudioDeviceTypeByteRTCVideoDeviceType 来确定设备类型。例如,ByteRTCAudioDeviceTypeCaptureDevice 枚举表示设备类型为音频采集设备。

  2. 通过回调事件中的 ByteRTCMediaDeviceState 来确定设备状态,并进行相应的错误提示。详情如下:

类型说明处理方法
ByteRTCMediaDeviceStateInterruptionBegan系统通话、锁屏或第三方应用打断了音视频通话分别提示本地和远端用户通话中断
ByteRTCMediaDeviceStateInterruptionEnded音视频通话已从系统通话或第三方应用打断中恢复分别提示本地和远端用户可以继续通话
ByteRTCMediaDeviceStateRuntimeError设备运行时错误基于 ByteRTCMediaDeviceError 错误码进行对应处理

其中,有关 ByteRTCMediaDeviceError 错误码对应处理方法,详情如下:

类型说明处理方法
ByteRTCMediaDeviceErrorDeviceNoPermission媒体设备未授权提示用户授权后重新进房
ByteRTCMediaDeviceErrorDeviceBusy媒体设备被其他应用占用提示用户关闭其他应用后重新进房
ByteRTCMediaDeviceErrorDeviceDisconnected媒体设备被移除提示用户重新连接设备
ByteRTCMediaDeviceErrorNotAvailableInBackground视频采集中断:因用户使用系统相机,应用切换到后台运行,导致采集中断。提示用户重新进房或应用层停止视频采集后重新开启采集(对于有信令的业务,建议同时提示远端用户看不到本地用户视频的原因)。
ByteRTCMediaDeviceErrorVideoInUseByAnotherClient视频采集中断:可能由于其他应用占用系统相机,导致视频设备暂不可用,导致采集中断。提示用户关闭其他可能使用相机的应用后重新进房(对于有信令的业务,建议同时提示远端用户看不到本地用户视频的原因)。
ByteRTCMediaDeviceErrorNotAvailableWithMultipleForegroundApps视频采集中断:当前应用处于侧拉、分屏或者画中画模式时,导致采集中断。提示用户停止此类操作(对于有信令的业务,建议同时提示远端用户看不到本地用户视频的原因)。
其他非0返回值/联系技术支持处理
Android & macOS

参考 windows 端和 iOS 端处理方法;如有疑问,请联系技术支持处理。