You need to enable JavaScript to run this app.
导航

摄像头检测

最近更新时间2023.11.14 20:26:11

首次发布时间2023.10.12 15:24:40

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

时序图

alt

相关 API

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

常见问题

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

  • 视图绑定切换

  • 视频画面被裁剪

  • 设备异常处理

  • 设备权限配置

  • 其他

视图绑定切换

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

视频画面被裁剪

  • 可以通过调用 setVideoCaptureConfig 指定视频采集参数,包括分辨率和帧率。默认情况下,采集模式(capturePreference)设置为自动(KAuto),即 SDK 会根据服务端下发的采集配置和编码参数设置最佳采集参数。

  • 如果采集参数和编码参数的宽高比例不一致,视频画面会被裁剪。例如,采集参数是 960x540(16:9),而编码参数是 240x180(4:3),编码时会裁剪部分图像,导致远端看到的图像视野变小,且图像会有放大效果。因此,建议采集和编码设置一样宽高比的分辨率,以避免裁剪和图像变形的情况发生。

设备异常处理

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

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

设备权限配置

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

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

其他