文档反馈
文档反馈

视频设备管理

NERTC SDK 支持移动端设备设置摄像头相关参数与配置,并在 Web 端提供进入频道前的视频设备测试方法。

摄像头管理

在各种视频的业务场景中,用户经常会需要调整设备的摄像头,例如调整曝光、对焦和闪光灯等功能设置,使被摄物体成像清晰、亮度适宜。 NERTC SDK 在移动平台提供整套的摄像头管理方法,以便用户灵活切换前、后置摄像头,并对摄像头进行缩放、对焦和曝光等相关配置。

NERTC SDK 在移动平台提供相关接口,支持检测设备在视频拍摄相关的设备能力,例如检测是否支持闪光灯常开等。同时支持多种摄像头相关的设置方法,包括:

Android

注意事项

实现方法

NERTC SDK 支持实现以下摄像头高级功能:

示例代码

    // 切换前后摄像头。
    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

注意事项

  1. 当前摄像头支持的最大缩放比例由设备底层接口提供,该值可能很大,如设置过大图像可能会模糊。用户应根据自身需要设置相应的缩放比例。
  2. 部分设备可能不支持开启闪光灯或摄像头缩放,直接调用接口调节设备可能会失败。用户操作前应先判断当前设备是否支持调整摄像头相关设置。
  3. 设置摄像头聚焦点位置时注意接口参数的取值范围:(X: (0-1), Y: (0-1))。
    • X: 接触点X坐标 / 视图宽
    • Y: 接触点Y坐标 / 视图高

实现方法

NERTC SDK 支持实现以下摄像头高级功能:

示例代码

    // 切换前后摄像头。
    [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)

在会议等场景,用户在开始通话前,通常会选择进行音视频设备的选择和检测,以保证进入通话后的音视频体验。 以下说明如何获取视频设备列表,为保证通话或直播质量,我们推荐在进入频道前进行视频设备测试,以检测摄像头等视频设备是否能够正常工作。

实现方法

  1. 调用 getCameras,获取摄像头设备列表;调用 getDevices 获取所有设备列表。

  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);
  })
})
×

反馈成功

非常感谢您的反馈,我们会继续努力做得更好。