视频设备管理
介绍跟视频设备管理相关的方法和回调。
getCameraMaxZoomFactor
获取摄像头支持最大缩放比例。
public abstract float getCameraMaxZoomFactor();
详情
- 该方法必须在 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_ENCODING (2) 之后调用。
返回值
设备摄像头支持的最大缩放比例。
所属接口类isCameraAutoFocusFaceModeSupported
检测设备是否支持人脸对焦功能。
public abstract boolean isCameraAutoFocusFaceModeSupported();
详情
- 该方法必须在 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_ENCODING (2) 之后调用。
返回值
true
: 设备支持人脸对焦功能。false
: 设备不支持人脸对焦功能。
isCameraExposurePositionSupported
检测设备是否支持手动曝光功能。
public abstract boolean isCameraExposurePositionSupported();
详情
- 该方法必须在 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_ENCODING (2) 之后调用。
返回值
true
: 设备支持手动曝光功能。false
: 设备不支持手动曝光功能。
isCameraExposureSupported
查询当前摄像头是否支持曝光调节。
public abstract boolean isCameraExposureSupported();
详情
- 该方法必须在 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_ENCODING (2) 之后调用。
- 建议你在调用 setCameraExposureFactor 调节曝光系数前,先调用该方法查询当前摄像头是否支持曝光调节。
- 当你调用该方法时,查询的是当前正在使用的摄像头是否支持曝光调节,即调用 setCameraCapturerConfiguration 时指定的摄像头。
返回值
true
:方法调用成功。false
:方法调用失败。详见错误码了解详情和解决建议。
isCameraFaceDetectSupported
isCameraFocusSupported
检测设备是否支持手动对焦功能。
public abstract boolean isCameraFocusSupported();
详情
- 该方法必须在 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_ENCODING (2) 之后调用。
返回值
true
: 设备支持手动对焦功能。false
: 设备不支持手动对焦功能。
isCameraTorchSupported
检测设备是否支持闪光灯常开。
public abstract boolean isCameraTorchSupported();
详情
- 该方法必须在 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_ENCODING (2) 之后调用。
- 一般情况下,App 默认开启前置摄像头,因此如果你的前置摄像头不支持闪光灯常开,直接使用该方法会返回 false。如果需要检查后置摄像头是否支持闪光灯常开,需要先使用 switchCamera [1/2] 切换摄像头,再使用该方法。
返回值
true
: 设备支持闪光灯常开。false
: 设备不支持闪光灯常开。
isCameraZoomSupported
检测设备是否支持摄像头缩放功能。
public abstract boolean isCameraZoomSupported();
调用时机
该方法必须在 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_ENCODING (2) 之后调用。
调用限制
无。
返回值
true
: 设备支持相机缩放功能。false
: 设备不支持相机缩放功能。
setCameraAutoFocusFaceModeEnabled
设置是否开启人脸对焦功能。
public abstract int setCameraAutoFocusFaceModeEnabled(boolean enabled);
SDK 默认关闭人脸自动对焦。如需开启人脸自动对焦,请调用该方法。
调用时机
该方法必须在 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_ENCODING (2) 之后调用。
调用限制
无。
参数
- enabled
- 是否开启人脸对焦:
true
: 开启人脸对焦功能。false
: 关闭人脸对焦功能。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
setCameraCapturerConfiguration
设置摄像头采集配置。
public abstract int setCameraCapturerConfiguration(CameraCapturerConfiguration config);
调用时机
该方法必须在开启本地摄像头采集前调用,如 startPreview [2/2] 和 joinChannel [2/2] 前调用。
调用限制
在调整摄像头的焦距配置前,建议先调用 queryCameraFocalLengthCapability 查询设备支持的焦距能力,再根据查询结果进行配置。
由于部分 Android 设备的限制,即使根据 queryCameraFocalLengthCapability 的查询结果设置焦距类型,设置结果也可能不生效。
参数
- config
- 摄像头采集配置,详见 CameraCapturerConfiguration。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
setCameraExposureFactor
设置当前摄像头的曝光系数。
public abstract int setCameraExposureFactor(int factor);
详情
当拍摄环境光线不足或过于明亮时,会影响视频采集的画质。为了获得更好的视频效果,你可以使用该方法调节摄像头的曝光系数。
- 该方法必须在 enableVideo 后调用,设置结果在摄像头成功开启后生效,即 SDK 触发 onLocalVideoStateChanged 回调返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
- 建议你在调用该方法前,先调用 isCameraExposureSupported 查询当前摄像头是否支持调节曝光系数。
- 当你调用该方法时,设置的是当前正在使用的摄像头的曝光系数,即调用 setCameraCapturerConfiguration 时指定的摄像头。
参数
- factor
摄像头的曝光系数。默认值为 0,表示使用摄像头的默认曝光量。取值越大,曝光量越大。视频图像过曝时,你可以降低曝光系数;视频图像欠曝且暗部细节丢失时,你可以增加曝光系数。如果你指定的曝光系数超出设备支持的范围,SDK 会自动调节为设备实际支持的范围。
取值范围为 [-20,20]。
setCameraExposurePosition
设置手动曝光位置。
public abstract int setCameraExposurePosition(float positionXinView, float positionYinView);
详情
- 该方法必须在 enableVideo 后调用,设置结果在摄像头成功开启后生效,即 SDK 触发 onLocalVideoStateChanged 回调返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
- 成功调用该方法后,本地会触发 onCameraExposureAreaChanged 回调。
参数
- positionXinView
- 触摸点相对于视图的横坐标。
- positionYinView
- 触摸点相对于视图的纵坐标。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
setCameraFocusPositionInPreview
设置手动对焦位置,并触发对焦。
public abstract int setCameraFocusPositionInPreview(float positionX, float positionY);
详情
- 该方法必须在 enableVideo 后调用,设置结果在摄像头成功开启后生效,即 SDK 触发 onLocalVideoStateChanged 回调返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
- 成功调用该方法后,本地会触发 onCameraFocusAreaChanged 回调。
参数
- positionX
- 触摸点相对于视图的横坐标。
- positionY
- 触摸点相对于视图的纵坐标。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
setCameraTorchOn
设置是否打开闪光灯。
public abstract int setCameraTorchOn(boolean isOn);
详情
- 该方法必须在 enableVideo 后调用,设置结果在摄像头成功开启后生效,即 SDK 触发 onLocalVideoStateChanged 回调返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
参数
- isOn
- 是否打开闪光灯:
true
: 打开闪光灯。false
:(默认)关闭闪光灯。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
setCameraZoomFactor
设置摄像头缩放比例。
public abstract int setCameraZoomFactor(float factor);
详情
- 该方法必须在 enableVideo 后调用,设置结果在摄像头成功开启后生效,即 SDK 触发 onLocalVideoStateChanged 回调返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
参数
- factor
- 摄像头缩放比例。对不支持超广角的设备,取值范围从 1.0 到最大缩放比例;对支持超广角的设备,取值范围从 0.5 到最大缩放比例。你可以通过 getCameraMaxZoomFactor 方法获取设备支持的最大缩放比例。
返回值
- 方法调用成功: 返回设置的 factor 值。
- 方法调用失败: 返回值 < 0。
switchCamera [1/2]
切换前置/后置摄像头。
public abstract int switchCamera();
你可以调用该方法在 App 运行期间基于可用摄像头的实际情况来动态切换摄像头,而无需重启视频流或重新配置视频源。
该方法和 switchCamera [2/2] 均用于切换摄像头,区别在于 switchCamera [2/2] 通过指定摄像头 ID 切换到特定的摄像头,该方法则切换摄像头的方向(前置或后置)。
调用时机
该方法必须在摄像头成功开启后调用,即 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
调用限制
该方法仅会对第一路摄像头采集的视频流进行摄像头切换操作,即调用 startCameraCapture 时设置为 VIDEO_SOURCE_CAMERA_PRIMARY (0) 的视频源。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
switchCamera [2/2]
通过摄像头 ID 切换摄像头。
public abstract int switchCamera(String cameraId);
你可以调用该方法在 App 运行期间基于可用摄像头的实际情况来动态切换摄像头,而无需重启视频流或重新配置视频源。
该方法和 switchCamera [1/2] 均用于切换摄像头,区别在于 switchCamera [1/2] 切换摄像头的方向(前置或后置),该方法则通过指定摄像头 ID 切换到特定的摄像头。
调用时机
该方法必须在摄像头成功开启后调用,即 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
调用限制
该方法仅会对第一路摄像头采集的视频流进行摄像头切换操作,即调用 startCameraCapture 时设置为 VIDEO_SOURCE_CAMERA_PRIMARY (0) 的视频源。
参数
- cameraId
- 摄像头 ID。你可以通过 Android 原生系统 API 获取摄像头 ID,详见 Camera.open() 和 CameraManager.getCameraIdList()。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
queryCameraFocalLengthCapability
查询摄像头支持的焦距能力。
public AgoraFocalLengthInfo[] queryCameraFocalLengthCapability();
详情
如需开启摄像头广角、超广角拍摄模式,建议你先调用该方法查询设备是否具备相应的焦距能力,再根据查询结果调用 setCameraCapturerConfiguration 调整摄像头的焦距配置,以达到最佳的摄像头采集效果。
返回值
返回 AgoraFocalLengthInfo 对象数组,其中包含摄像头的方向和焦距类型。
所属接口类onCameraExposureAreaChanged
摄像头曝光区域已改变回调。
public void onCameraExposureAreaChanged(Rect rect) {}
详情
该回调是由本地用户调用 setCameraExposurePosition 方法改变曝光位置触发的。
参数
- rect
- 镜头内表示曝光的区域。详见 Rect。
onCameraFocusAreaChanged
相机对焦区域已改变回调。
public void onCameraFocusAreaChanged(Rect rect) {}
详情
该回调是由本地用户调用 setCameraFocusPositionInPreview 方法改变对焦位置触发的。
参数
- rect
- 镜头内表示对焦的区域。详见 Rect。
onCameraReady
摄像头就绪回调。
public void onCameraReady() {}
详情
请改用 onLocalVideoStateChanged 中的 LOCAL_VIDEO_STREAM_STATE_CAPTURING(1)。
该回调提示已成功打开摄像头,可以开始捕获视频。