在进行音视频通话时,可能会遇到音视频设备出现各种异常情况,例如设备被占用或设备未授权等问题。
本文档介绍设备出现异常时的处理方法,以提升用户体验。
通过 onAudioDeviceStateChanged 和 onVideoDeviceStateChanged 回调监听用户本地设备状态,及时处理设备异常情况。
通过回调事件中的 RTCAudioDeviceType 和 RTCVideoDeviceType 来确定设备类型。例如,kRTCAudioDeviceTypeCaptureDevice 枚举表示设备类型为音频采集设备。
通过回调事件中的 MediaDeviceState 来确定设备状态,并进行相应的错误提示。
当 MediaDeviceState 为 kMediaDeviceStateRuntimeError 时,表示设备运行时出现错误;再基于 MediaDeviceError 错误码进行对应处理,详情如下:
类型 | 说明 | 处理方法 |
---|---|---|
kMediaDeviceErrorDeviceNoPermission | 媒体设备未授权 | 提示用户授权后重新进房 |
kMediaDeviceErrorDeviceBusy | 媒体设备被其他应用占用 | 提示用户关闭其他应用后重新进房 |
kMediaDeviceErrorDeviceNotFound | 未找到指定设备 | 提示用户检查是否正确连接设备或重新连接设备 |
kMediaDeviceErrorDeviceDisconnected | 媒体设备被移除 | 提示用户重新连接设备 |
其他非0返回值 | / | 联系技术支持处理 |
通过 rtcEngine:onAudioDeviceStateChanged:device_type:device_state:device_error: 和 rtcEngine:onVideoDeviceStateChanged:device_type:device_state:device_error: 回调监听用户本地设备状态,及时处理设备异常情况。
通过回调事件中的 ByteRTCAudioDeviceType 和 ByteRTCVideoDeviceType 来确定设备类型。例如,ByteRTCAudioDeviceTypeCaptureDevice 枚举表示设备类型为音频采集设备。
通过回调事件中的 ByteRTCMediaDeviceState 来确定设备状态,并进行相应的错误提示。详情如下:
类型 | 说明 | 处理方法 |
---|---|---|
ByteRTCMediaDeviceStateInterruptionBegan | 系统通话、锁屏或第三方应用打断了音视频通话 | 分别提示本地和远端用户通话中断 |
ByteRTCMediaDeviceStateInterruptionEnded | 音视频通话已从系统通话或第三方应用打断中恢复 | 分别提示本地和远端用户可以继续通话 |
ByteRTCMediaDeviceStateRuntimeError | 设备运行时错误 | 基于 ByteRTCMediaDeviceError 错误码进行对应处理 |
其中,有关 ByteRTCMediaDeviceError 错误码对应处理方法,详情如下:
类型 | 说明 | 处理方法 |
---|---|---|
ByteRTCMediaDeviceErrorDeviceNoPermission | 媒体设备未授权 | 提示用户授权后重新进房 |
ByteRTCMediaDeviceErrorDeviceBusy | 媒体设备被其他应用占用 | 提示用户关闭其他应用后重新进房 |
ByteRTCMediaDeviceErrorDeviceDisconnected | 媒体设备被移除 | 提示用户重新连接设备 |
ByteRTCMediaDeviceErrorNotAvailableInBackground | 视频采集中断:因用户使用系统相机,应用切换到后台运行,导致采集中断。 | 提示用户重新进房或应用层停止视频采集后重新开启采集(对于有信令的业务,建议同时提示远端用户看不到本地用户视频的原因)。 |
ByteRTCMediaDeviceErrorVideoInUseByAnotherClient | 视频采集中断:可能由于其他应用占用系统相机,导致视频设备暂不可用,导致采集中断。 | 提示用户关闭其他可能使用相机的应用后重新进房(对于有信令的业务,建议同时提示远端用户看不到本地用户视频的原因)。 |
ByteRTCMediaDeviceErrorNotAvailableWithMultipleForegroundApps | 视频采集中断:当前应用处于侧拉、分屏或者画中画模式时,导致采集中断。 | 提示用户停止此类操作(对于有信令的业务,建议同时提示远端用户看不到本地用户视频的原因)。 |
其他非0返回值 | / | 联系技术支持处理 |
参考 windows 端和 iOS 端处理方法;如有疑问,请联系技术支持处理。