视频设备管理
更新时间: 2024/09/18 16:26:13
在各种视频的业务场景中,用户经常会需要调整设备的摄像头,例如调整曝光、对焦和闪光灯等功能设置,使被摄物体成像清晰、亮度适宜。 NERTC SDK 提供整套的摄像头管理方法,以便用户灵活切换前、后置摄像头,并对摄像头进行缩放、对焦和曝光等相关配置。
功能介绍
NERTC SDK 提供相关接口,支持检测拍摄相关设备的能力,例如检测是否支持闪光灯常开等。同时支持多种摄像头相关的设置方法,包括:
- 摄像头相关:
- 摄像头缩放:支持动态调整缩放比例。
- 摄像头切换:支持切换或指定前后置摄像头。
- 闪光灯:支持开关闪光灯。
- 对焦:支持手动选择对焦位置,摄像头自动对焦。
- 曝光:支持手动选择曝光区域,摄像头自动曝光。
注意事项
- 部分设备可能不支持开启闪光灯或摄像头缩放,直接调用接口调节设备可能会失败。因此用户操作前应先调用相关检测接口,判断当前设备是否支持调整设备的相关设置。
- 请在相机启用后再调用视频设备相关的设置方法,例如在调用
startPreview
方法或joinChannelWithToken
方法后。
摄像头缩放
配置步骤
-
调用
isCameraZoomSupported
,检测设备是否支持摄像头缩放功能。 -
调用
setCameraZoomFactor
方法设置具体需要的缩放比例,可在通话过程中动态调整。在设置需要的摄像头缩放比例前,您可以调用
maxCameraZoomScale
方法获取设备支持的最大缩放比例。
示例代码
//检测设备是否支持摄像头缩放
BOOL supported = [[NERtcEngine sharedEngine] isCameraZoomSupported];
// 设置摄像头缩放比例
CGFloat scale = self.curVideoScale * pinchScale;
scale = MAX(1, scale); // > 1
scale = MIN(scale, [self.engine maxCameraZoomScale])
[[NERtcEngine sharedEngine] setCameraZoomFactor:scale];
摄像头切换
配置步骤
- 调用
switchCamera
方法在前置摄像头和后置摄像头之间切换,通话过程中也可随时切换。 - 调用
switchCameraWithPosition
方法指定使用前置(kNERtcCameraPositionFront)或后置摄像头(kNERtcCameraPositionBack),通话过程中也可随时指定。
- 若切换摄像头后的最大分辨率不支持设置的编码参数,SDK 会根据设备实际支持的分辨率,调整编码的实际分辨率和对应的实际码率。
- V5.3.0 及之后版本,子房间支持调用
NERtcChannel#switchCamera
或NERtcChannel#switchCameraWithPosition
切换摄像头。
示例代码
// 切换前后摄像头
[[NERtcEngine sharedEngine] switchCamera];
//指定前置摄像头
[[NERtcEngine sharedEngine] switchCameraWithPosition:kNERtcCameraPositionFront]
开关闪光灯
配置步骤
- 调用
isCameraTorchSupported
方法,检测设备是否支持闪光灯常开。- 一般情况下,App 默认开启前置摄像头,因此如果设备的前置摄像头不支持闪光灯,直接调用此方法会返回 NO(表示不支持闪光灯常开)。
- 若您需要检查后置摄像头是否支持闪光灯,需要先调用
switchCamera
方法切换至后置摄像头或调用switchCameraWithPosition
方法指定使用后置摄像头,再调用此方法。
- 调用
setCameraTorchOn
开关闪光灯,通话过程中也可随时开关。
示例代码
// 检测设备是否支持闪光灯常开
BOOL supported = [[NERtcEngine sharedEngine] isCameraTorchSupported];
//检测设备是否已开启闪光灯
BOOL isTorchOn = [[NERtcEngine sharedEngine] isCameraTorchOn];
// 开关闪光灯
int result = [[NERtcEngine sharedEngine] setCameraTorchOn:!isTorchOn];
手动对焦
配置步骤
- 调用
isCameraFocusSupported
方法,检测设备是否支持手动对焦。 - 调用
setCameraFocusPosition
方法设置手动对焦位置并触发对焦。相关参数说明如下:- focusX:触摸点相对于视图的横坐标,取值范围为 0 ~ 1。
- focusY:触摸点相对于视图的纵坐标,取值范围为 0 ~ 1。
对焦点区域面积对测光和对焦都有影响,用户应根据需要调整对焦点区域面积。
示例代码
// 检测设备是否支持手动对焦
BOOL supported = [[NERtcEngine sharedEngine] isCameraFocusSupported];
// 设置手动对焦位置
CGPoint point = [tap locationInView:self.previewContainer];
float x = point.x / CGRectGetWidth(self.previewContainer.bounds);
float y = point.y / CGRectGetHeight(self.previewContainer.bounds);
[[NERtcEngine sharedEngine] setCameraFocusPositionX:x Y:y];
手动曝光
配置步骤
- 调用
isCameraExposurePositionSupported
方法,检测设备是否支持手动曝光功能。 - 调用
setCameraExposurePosition
方法设置手动曝光位置并触发曝光。相关参数说明如下:- focusX:触摸点相对于视图的横坐标,取值范围为 0 ~ 1。
- focusY:触摸点相对于视图的纵坐标,取值范围为 0 ~ 1。
示例代码
//检测设备是否支持手动曝光
BOOL supported = [[NERtcEngine sharedEngine] isCameraExposurePositionSupported];
// 设置手动曝光位置
[[NERtcEngine sharedEngine] setCameraExposurePosition:CGPointMake(0.5, 0.5)];
API 参考
方法 | 功能描述 |
---|---|
isCameraZoomSupported |
是否支持摄像头缩放 |
setCameraZoomFactor |
设置摄像头缩放比例 |
switchCamera |
切换前后置摄像头 |
switchCameraWithPosition |
指定前后置摄像头 |
isCameraTorchSupported |
是否支持闪光灯常开 |
setCameraTorchOn |
开关闪光灯 |
isCameraFocusSupported |
是否支持手动对焦 |
setCameraFocusPosition |
设置手动对焦位置 |
isCameraExposurePositionSupported |
是否支持手动曝光 |
setCameraExposurePosition |
设置手动曝光位置 |
此文档是否对你有帮助?