视频设备管理
NERTC SDK 支持移动端设备设置摄像头相关参数与配置,并在 Web 端提供进入频道前的视频设备测试方法。
摄像头管理
在各种视频的业务场景中,用户经常会需要调整设备的摄像头,例如调整曝光、对焦和闪光灯等功能设置,使被摄物体成像清晰、亮度适宜。 NERTC SDK 在移动平台提供整套的摄像头管理方法,以便用户灵活切换前、后置摄像头,并对摄像头进行缩放、对焦和曝光等相关配置。
NERTC SDK 在移动平台提供相关接口,支持检测设备在视频拍摄相关的设备能力,例如检测是否支持闪光灯常开等。同时支持多种摄像头相关的设置方法,包括:
- 闪光灯:支持开关闪光灯。
- 对焦:支持手动对焦。
- 曝光:支持手动选择曝光区域,摄像头自动曝光。
- 摄像头相关:
- 摄像头缩放:支持动态调整缩放比例。
- 摄像头切换:支持切换前后置摄像头。
Android
注意事项
- 当前摄像头支持的最大缩放比例由设备底层接口提供,该值可能很大,若设置过大图像可能会模糊。用户应根据自身需要设置相应的缩放比例。
- 对焦点区域面积的设置应根据用户需要调整。对焦点区域面积对测光和对焦都有影响。
实现方法
NERTC SDK 支持实现以下摄像头高级功能:
切换摄像头
调用 switchCamera 进行前置摄像头和后置摄像头的切换,通话过程中也可随时切换。
开关闪光灯
- 调用 isCameraTorchSupported,检测设备是否支持闪光灯常开。
- 调用 setCameraTorchOn 开关闪光灯,通话过程中也可随时开关。
设置摄像头缩放比例
- 调用 isCameraZoomSupported,检测设备是否支持摄像头缩放功能。
- 调用 getCameraMaxZoom 方法获取设备支持的最大缩放比例,调用 getCameraCurrentZoom 获取当前摄像头的缩放比例。
- 调用 setCameraZoomFactor 设置具体需要的缩放比例,可在通话过程中动态调整。
实现手动对焦功能
- 调用 isCameraFocusSupported,检测设备是否支持手动对焦。
- 调用 setCameraFocusPosition 方法设置手动对焦位置并触发对焦。
实现手动曝光功能
- 调用 isCameraExposurePositionSupported,检测设备是否支持手动曝光功能。
- 调用 setCameraExposurePosition,设置手动曝光位置。
示例代码
// 切换前后摄像头。
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());
}
iOS
注意事项
- 当前摄像头支持的最大缩放比例由设备底层接口提供,该值可能很大,如设置过大图像可能会模糊。用户应根据自身需要设置相应的缩放比例。
- 部分设备可能不支持开启闪光灯或摄像头缩放,直接调用接口调节设备可能会失败。用户操作前应先判断当前设备是否支持调整摄像头相关设置。
- 设置摄像头聚焦点位置时注意接口参数的取值范围:(X: (0-1), Y: (0-1))。
- X:
接触点X坐标 / 视图宽
- Y:
接触点Y坐标 / 视图高
- X:
实现方法
NERTC SDK 支持实现以下摄像头高级功能:
切换摄像头
调用 switchCamera 进行前置摄像头和后置摄像头的切换,通话过程中也可随时切换。
开关闪光灯
- 调用 isCameraTorchSupported ,检测设备是否支持闪光灯常开。
- 调用 isCameraTorchOn 检测设备是否已开启闪光灯。
- 调用 setCameraTorchOn 开关闪光灯,通话过程中也可随时开关。
设置摄像头缩放比例
- 调用 isCameraZoomSupported,检测设备是否支持摄像头缩放功能。
- 调用 maxCameraZoomScale 方法获取设备支持的最大缩放比例。
- 调用 setCameraZoomFactor 设置具体需要的缩放比例,可在通话过程中动态调整。
实现手动对焦功能
- 调用 isCameraFocusSupported,检测设备是否支持手动对焦。
- 调用 setCameraFocusPositionX:Y:方法设置手动对焦位置并触发对焦。
实现手动曝光功能
- 调用 isCameraExposurePositionSupported,检测设备是否支持手动曝光功能。
- 调用 setCameraExposurePosition,设置手动曝光位置。
示例代码
// 切换前后摄像头。
[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];
音视频设备检测(Web)
在会议等场景,用户在开始通话前,通常会选择进行音视频设备的选择和检测,以保证进入通话后的音视频体验。 以下说明如何获取视频设备列表,为保证通话或直播质量,我们推荐在进入频道前进行视频设备测试,以检测摄像头等视频设备是否能够正常工作。
实现方法
调用 getCameras,获取摄像头设备列表;调用 getDevices 获取所有设备列表。
选择开启制定的设备。
启动选中的设备。
示例代码
// 此处以同时启动麦克风与摄像头设备示例
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);
})
})
本篇文档内容是否对您有帮助?


此文档对你是否有帮助
×


×