检测摄像头设备(一般为 PC 端),以确定用户设备是否支持所需的音视频功能。对摄像头设备进行枚举、选择、预览和视频镜像。
该部分介绍摄像头检测过程中的常见问题,关键词如下:
视图绑定切换
视频画面被裁剪
设备异常处理
设备权限配置
其他
setLocalVideoCanvas 将视频流绑定到本地视图。如果需要切换视图,调用绑定新视图即可;如果需要解除绑定,调用本方法传入空视图。
可以通过调用 setVideoCaptureConfig 指定视频采集参数,包括分辨率和帧率。默认情况下,采集模式(capturePreference)设置为自动(KAuto),即 SDK 会根据服务端下发的采集配置和编码参数设置最佳采集参数。
如果采集参数和编码参数的宽高比例不一致,视频画面会被裁剪。例如,采集参数是 960x540(16:9),而编码参数是 240x180(4:3),编码时会裁剪部分图像,导致远端看到的图像视野变小,且图像会有放大效果。因此,建议采集和编码设置一样宽高比的分辨率,以避免裁剪和图像变形的情况发生。
通过监听 onVideoDeviceStateChanged 回调获取设备状态,并进行相应的错误提示。
具体参考 设备异常处理。
说明:插拔摄像头,也会回调 onVideoDeviceStateChanged,可以通过枚举设备更新设备列表;如果设备被移除,由于涉及到用户隐私问题,SDK 不会自动切换到其他设备。因此,需要重新调用 startVideoCapture 进行摄像头采集。
如果没有摄像头权限,onVideoDeviceStateChanged 会回调 kMediaDeviceErrorDeviceNoPermission 错误。
在 macOS 系统下,需在 Info.plist 文件中设置 NSCameraUsageDescription;不更改 Windows 系统设置情况下,无需申请权限即可直接访问。
具体参考 设备权限处理。
Windows 摄像头硬件不支持多个app同时使用。
如果没有调用过 setVideoCaptureDevice 或 startVideoCapture,调用 getVideoCaptureDevice 返回的 device_id 将是 auto;如果调用过,则返回当前使用的 device_id。