检测摄像头设备(一般为 PC 端),以确定用户设备是否支持所需的音视频功能。对摄像头设备进行枚举、选择、预览和视频镜像。

时序图

alt

相关 API
功能点WindowsMacOS
获取视频设备管理器getVideoDeviceManagergetVideoDeviceManager
枚举摄像头枚举设备enumerateVideoCaptureDevicesenumerateVideoCaptureDevices
获取设备数量getCountgetCount
获取设备getDevicegetDevice:
释放设备release
切换摄像头获取当前采集设备getVideoCaptureDevicegetVideoCaptureDevice:
设置新的采集设备setVideoCaptureDevicesetVideoCaptureDevice:
预览摄像头设置画布setLocalVideoCanvassetLocalVideoCanvas:
设置视频配置(可选)setVideoCaptureConfigsetVideoCaptureConfig:
开始采集startVideoCapturestartVideoCapture
更新画布(可选)updateLocalVideoCanvasupdateLocalVideoCanvas:
镜像摄像头setLocalVideoMirrorTypesetLocalVideoMirrorType:
关闭摄像头stopVideoCapturestopVideoCapture
视频设备状态回调onVideoDeviceStateChangedonVideoDeviceStateChanged:
常见问题

该部分介绍摄像头检测过程中的常见问题,关键词如下:

视图绑定切换

setLocalVideoCanvas 将视频流绑定到本地视图。如果需要切换视图,调用绑定新视图即可;如果需要解除绑定,调用本方法传入空视图。

视频画面被裁剪
设备异常处理

通过监听 onVideoDeviceStateChanged 回调获取设备状态,并进行相应的错误提示。
具体参考 设备异常处理。

说明:插拔摄像头,也会回调 onVideoDeviceStateChanged,可以通过枚举设备更新设备列表;如果设备被移除,由于涉及到用户隐私问题,SDK 不会自动切换到其他设备。因此,需要重新调用 startVideoCapture 进行摄像头采集。

设备权限配置

如果没有摄像头权限,onVideoDeviceStateChanged 会回调 kMediaDeviceErrorDeviceNoPermission 错误。

在 macOS 系统下,需在 Info.plist 文件中设置 NSCameraUsageDescription;不更改 Windows 系统设置情况下,无需申请权限即可直接访问。
具体参考 设备权限处理。

其他