视频设备管理
功能描述
在各种视频的业务场景中,用户经常会需要用到摄像头曝光、对焦和闪光灯等功能,以辅助被摄物体成像清晰、亮度适宜。 NERTC SDK 在移动平台提供整套的摄像头管理方法,以便用户灵活切换前、后置摄像头,并对摄像头进行缩放、对焦和曝光等相关配置。
对焦和曝光:支持手动选择对焦和曝光区域,摄像头自动进行对焦和曝光。
Android
实现方法
参考如下步骤,在你的项目中实现摄像头高级功能:
切换摄像头
调用
switchCamera
进行前后摄像头的切换,通话过程中同样支持开关闪光灯
调用
setCameraTorchOn(boolean on)
进行闪光灯开关,通话过程中同样支持设置摄像头缩放比例
调用
getCameraMaxZoom
方法获取设备支持的最大缩放比例,调用getCameraCurrentZoom
获取当前摄像头的缩放比例。调用
setCameraZoomFactor
设置具体需要的缩放比例,可在通话过程中动态调整。
实现手动对焦功能
调用
setCameraFocusPosition
方法设置手动对焦位置并触发对焦。
示例代码
// 切换前后摄像头。
NERtcEx.getInstance().switchCamera();
// 开关闪光灯。
boolean cameraFlashOn = true;
NERtcEx.getInstance().setCameraTorchOn(cameraFlashOn);
// 设置摄像头缩放比例。
int curZoom = NERtcEx.getInstance().getCameraCurrentZoom();
NERtcEx.getInstance().setCameraZoomFactor(curZoom + 2); //放大
NERtcEx.getInstance().setCameraZoomFactor(curZoom - 2); //缩小
// 实现手动对焦功能。
if(event.getAction() == MotionEvent.ACTION_UP){
NERtcEx.getInstance().setCameraFocusPosition(event.getX(),event.getY());
}
API参考
方法 | 功能描述 |
---|---|
switchCamera | 切换前置/后置摄像头 |
startVideoPreview | 开启视频预览 |
stopVideoPreview | 设置是否打开闪光灯 |
setCameraZoomFactor | 设置缩放 |
setCameraTorchOn | 开启或关闭闪光灯 |
setCameraFocusPosition | 设置对焦区域 |
getCameraCurrentZoom | 获取当前缩放比例 |
getCameraMaxZoom | 获取摄像头支持的最大视频缩放比例 |
开发注意事项
- 当前摄像头支持的最大缩放比例由设备底层接口提供,该值可能很大,如设置过大图像可能会模糊。用户应根据自身需要设置相应的缩放比例;
- 对焦点区域面积的设置根据用户需要调整;不同面积,对测光,对焦都有影响
iOS
视频场景中,经常会使用到摄像头曝光、对焦和闪光灯等功能,帮助被拍摄物成像清晰、亮度适宜。 NERTC SDK 在移动平台提供整套的摄像头管理方法,方便用户切换前后摄像头,并对摄像头的缩放、对焦和曝光进行设置。
对焦和曝光:支持手动选择对焦和曝光区域,摄像头自动进行对焦和曝光。
实现方法
参考如下步骤,在你的项目中实现摄像头高级功能:
切换摄像头
调用 - (int)switchCamera
进行前后摄像头的切换,通话过程中同样支持。
开关闪光灯
调用 - (int)setCameraTorchOn:(BOOL)on
进行闪光灯开关,通话过程中同样支持。
设置摄像头缩放比例
调用 - (int)setCameraZoomFactor:(float)factor
设置具体需要的缩放比例,可在通话过程中动态调整。
实现手动对焦功能
调用 - (int)setCameraFocusPositionX:(float)focusX Y:(float)focusY
方法设置手动对焦位置并触发对焦。
示例代码
// 切换前后摄像头。
[self.engine switchCamera];
// 开关闪光灯。
BOOL isTorchOn = [self.engine isCameraTorchOn];
int result = [self.engine setCameraTorchOn:!isTorchOn];
// 设置摄像头缩放比例。
CGFloat scale = self.curVideoScale * pinchScale;
scale = MAX(1, scale); // > 1
scale = MIN(scale, [self.engine maxCameraZoomScale])
[self.engine setCameraZoomFactor:scale];
// 实现手动对焦功能。
CGPoint point = [tap locationInView:self.previewContainer];
float x = point.x / CGRectGetWidth(self.previewContainer.bounds);
float y = point.y / CGRectGetHeight(self.previewContainer.bounds);
[self.engine setCameraFocusPositionX:x Y:y];
API参考
方法 | 功能描述 |
---|---|
switchCamera | 切换前置/后置摄像头 |
isCameraTorchSupported | 检测设备是否支持闪光灯常开 |
setCameraTorchOn | 设置是否打开闪光灯 |
setCameraZoomFactor | 设置摄像头缩放比例 |
setCameraFocusPositionX:Y: | 设置当前摄像头聚焦点位置 |
maxCameraZoomScale | 当前摄像头支持的最大缩放比例 |
isCameraTorchOn | 查询当前摄像头是否打开手电筒 |
开发注意事项
- maxCameraZoomScale 当前摄像头支持的最大缩放比例由设备底层接口提供,该值可能很大,如设置过大图像可能会模糊。用户应根据自身需要设置相应的缩放比例;
- 用户开启闪光灯操作有失败概率,用户操作前应先判断当前摄像头是否支持闪光灯常开;
- 设置摄像头聚焦点位置时注意接口参数的值范围(X: (0-1), Y: (0-1)),具体指 X:
接触点X坐标 / 视图宽
,Y:接触点Y坐标 / 视图高
;
Web
在会议等场景,用户在开始通话前,通常会选择进行音视频设备的选择和检测,以保证进入通话后的音视频体验。 以下说明如何获取视频设备列表,为保证通话或直播质量,我们推荐在进入频道前进行视频设备测试,以检测摄像头等视频设备是否能够正常工作。
实现方法
1、获取具体的设备列表
2、选择开启制定的设备
3、启动选中的设备
示例代码
// 此处以同时启动麦克风与摄像头设备示例
WebRTC2.getDevices().then((devices)=>{
var audioDevices = devices.audioIn; //数组,麦克风设备列表
var videoDevices = devices.video; //数组,摄像头设备列表
var uid = Math.floor(Math.random()*10000);
var selectedMicrophoneId = audioDevices[0];
var selectedCameraId = videoDevices[0];
var localStream = WebRTC2.createStream({
uid: uid,
audio: true,
microphoneId: selectedMicrophoneId, //指定要开启的mic
video: true,
cameraId: selectedCameraId, //指定要开启的camera
screen: false
});
localStream.init().then(()=>{
//用于播放视频的div元素
let div = document.getElementById('local-container')
localStream.play(div)
//设置播放的视频容器大小
localStream.setLocalRenderMode({
width: 180,
height: 150,
cut: true
})
setInterval(function(){
console.log(`获取mic采集的音量: ${localStream.getAudioLevel()}`);
}, 1000);
})
})
API参考
事件 | 功能描述 |
---|---|
getCameras | 获取摄像头列表 |
getDevices | 获取所有设备列表 |


此文档对你是否有帮助

