音视频通话 2.0
Android
动态与公告
更新日志(V4.6)
更新日志(V5)
活动与公告
【活动】音视频通话内容安全检测限时补贴
【活动】赠送100万分钟音视频通话时长
【邀测】音视频通话2.0V5.3邀请公测
新手接入指南
产品简介
产品介绍
功能特性
产品优势
应用场景
基本概念
使用限制
性能指标
产品计费
按量计费
资源包
体验 Demo
下载 SDK 和示例代码
升级指南
快速开始
快速跑通 Sample Code
接入流程
创建应用
开通服务
集成 SDK
实现音视频通话
Token 鉴权
高级 Token 鉴权
基础功能
设置音频属性
设置视频属性
设置视频旋转方向
设置通话音量
屏幕共享
音频共享
监测发言者音量
通话前网络质量探测
通话中质量监测
进阶功能
音频管理
客户端音频录制
原始音频数据
美声变声与混响
耳返
自定义音频采集与渲染
音效与伴音
设置音频订阅优先级
音频裸流传输
媒体补充增强信息SEI
视频管理
视频截图
水印
云信美颜
相芯美颜
自定义视频采集
虚拟背景
视频图像畸变矫正
视频裸流传输
多房间管理
设备管理
视频设备管理
音频设备管理
媒体流管理
跨房间媒体流转发
媒体流加密
视频流回退
云端录制
使用云代理
本地服务端录制
AI 融合功能
AI 超分
AI 降噪
场景实践
1 对 1 娱乐社交
语聊房
PK连麦
在线教育
互联网问诊
最佳实践
音视频参数配置推荐
房间连接状态管理
实现音视频安全检测
轻松构建本土Clubhouse
API 参考
Android API 参考
服务端 API
错误码(V5)
错误码(V4.x)
控制台指南
常见问题处理
FAQ
错题集
获取音频 Dump 文件
音频常见问题排查
视频常见问题排查
服务协议

视频设备管理

更新时间: 2023/05/17 10:44:12

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

功能介绍

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

  • 摄像头相关:
    • 摄像头缩放:支持动态调整缩放比例。
    • 摄像头切换:支持切换或指定前后置摄像头。
  • 闪光灯:支持开关闪光灯。
  • 对焦:支持手动选择对焦位置,摄像头自动对焦。
  • 曝光:支持手动选择曝光区域,摄像头自动曝光。

注意事项

  • 部分设备可能不支持开启闪光灯或摄像头缩放,直接调用接口调节设备可能会失败。因此用户操作前应先调用相关检测接口,判断当前设备是否支持调整设备的相关设置。
  • 请在相机启用后再调用视频设备相关的设置方法,例如在调用 startVideoPreview 方法或 joinChannel 方法后。

示例项目源码

网易云信提供设备管理的示例项目源码 DeviceManagement ,您可以参考该源码实现视频设备管理。

摄像头缩放

配置步骤

  1. 调用 isCameraZoomSupported,检测设备是否支持摄像头缩放功能。

  2. 调用 setCameraZoomFactor 方法设置具体需要的缩放比例,可在通话过程中动态调整。

    在设置需要的摄像头缩放比例前,您可以调用 getCameraMaxZoom 方法获取设备支持的最大缩放比例或调用 getCameraCurrentZoom 方法获取摄像头当前的缩放比例。

示例代码

//检测设备是否支持摄像头缩放
NERtcEx.getInstance().isCameraZoomSupported();

//获取设备支持的最大缩放比例
NERtcEx.getInstance().getCameraMaxZoom();

// 设置摄像头缩放比例
int curZoom = NERtcEx.getInstance().getCameraCurrentZoom();
NERtcEx.getInstance().setCameraZoomFactor(curZoom + 2); //放大
NERtcEx.getInstance().setCameraZoomFactor(curZoom - 2); //缩小

摄像头切换

配置步骤

  • 调用 switchCamera 方法在前置摄像头和后置摄像头之间切换,通话过程中也可随时切换。
  • 调用 switchCameraWithPosition 方法指定使用前置摄像头(CAMERA_POSITION_FRONT)或后置摄像头(CAMERA_POSITION_BACK),通话过程中也可随时指定。
  • 若切换摄像头后的最大分辨率不支持设置的编码参数,SDK 会根据设备实际支持的分辨率,调整编码的实际分辨率和对应的实际码率。
  • V5.3.0 及之后版本,关闭再开启本地视频采集后,采集的摄像头行为变更,由之前的延用上一次摄像头配置,改为默认采用switchCameraWithPosition 接口中指定的前置摄像头或后置摄像头。若在房间内重新开启摄像头采集,请调用 switchCamera 方法重新选择所需要的前置或后置摄像头。
  • V5.3.0 及之后版本,子房间支持调用 NERtcChannel#switchCameraNERtcChannel#switchCameraWithPosition 切换摄像头。

示例代码

// 切换前后摄像头
NERtcEx.getInstance().switchCamera();
 
//指定前置摄像头
NERtcEx.getInstance().switchCameraWithPosition(NERtcConstants.CameraPosition.CAMERA_POSITION_FRONT);

//指定后置摄像头
NERtcEx.getInstance().switchCameraWithPosition(NERtcConstants.CameraPosition.CAMERA_POSITION_BACK);

开关闪光灯

配置步骤

  1. 调用 isCameraTorchSupported 方法,检测设备是否支持闪光灯常开。
    • 一般情况下,App 默认开启前置摄像头,因此如果设备的前置摄像头不支持闪光灯,直接调用此方法会返回 NO(表示不支持闪光灯常开)。
    • 若您需要检查后置摄像头是否支持闪光灯,需要先调用 switchCamera 方法切换至后置摄像头或调用 switchCameraWithPosition 方法指定使用后置摄像头,再调用此方法。
  2. 调用 setCameraTorchOn 开关闪光灯,通话过程中也可随时开关。

示例代码

// 检测设备是否支持闪光灯常开
NERtcEx.getInstance().isCameraTorchSupported();

// 开关闪光灯
boolean cameraFlashOn = true;
NERtcEx.getInstance().setCameraTorchOn(cameraFlashOn);

手动对焦

配置步骤

  1. 调用 isCameraFocusSupported 方法,检测设备是否支持手动对焦。
  2. 调用 setCameraFocusPosition 方法设置手动对焦位置并触发对焦。相关参数说明如下:
    • focusX:触摸点相对于视图的横坐标,取值范围为 0 ~ 1。
    • focusY:触摸点相对于视图的纵坐标,取值范围为 0 ~ 1。

    对焦点区域面积对测光和对焦都有影响,用户应根据需要调整对焦点区域面积。

示例代码

// 检测设备是否支持手动对焦
NERtcEx.getInstance().isCameraFocusSupported();

// 设置手动对焦位置
if(event.getAction() == MotionEvent.ACTION_UP){
    NERtcEx.getInstance().setCameraFocusPosition(event.getX(),event.getY());
}   

手动曝光

配置步骤

  1. 调用 isCameraExposurePositionSupported 方法,检测设备是否支持手动曝光功能。
  2. 调用 setCameraExposurePosition 方法设置手动曝光位置并触发曝光。相关参数说明如下:
    • focusX:触摸点相对于视图的横坐标,取值范围为 0 ~ 1。
    • focusY:触摸点相对于视图的纵坐标,取值范围为 0 ~ 1。

示例代码

// 检测设备是否支持手动曝光
NERtcEx.getInstance().isCameraExposurePositionSupported();

// 设置手动曝光位置
if(event.getAction() == MotionEvent.ACTION_UP){
    NERtcEx.getInstance().setCameraExposurePosition(event.getX(),event.getY());
}   

API 参考

方法 功能描述
isCameraZoomSupported 是否支持摄像头缩放
setCameraZoomFactor 设置摄像头缩放比例
switchCamera 切换前后置摄像头
switchCameraWithPosition 指定前后置摄像头
isCameraTorchSupported 是否支持闪光灯常开
setCameraTorchOn 开关闪光灯
isCameraFocusSupported 是否支持手动对焦
setCameraFocusPosition 设置手动对焦位置
isCameraExposurePositionSupported 是否支持手动曝光
setCameraExposurePosition 设置手动曝光位置
此文档是否对你有帮助?
有帮助
我要吐槽
  • 功能介绍
  • 注意事项
  • 示例项目源码
  • 摄像头缩放
  • 配置步骤
  • 示例代码
  • 摄像头切换
  • 配置步骤
  • 示例代码
  • 开关闪光灯
  • 配置步骤
  • 示例代码
  • 手动对焦
  • 配置步骤
  • 示例代码
  • 手动曝光
  • 配置步骤
  • 示例代码
  • API 参考