视频设备管理
介绍跟视频设备管理相关的方法和回调。
enableMultiCamera
开启或关闭多路摄像头采集。
abstract enableMultiCamera(
    enabled: boolean,
    config: CameraCapturerConfiguration
  ): number;
详情
- 调用该方法开启多路摄像头采集。
 - 调用 startPreview 开启本地视频预览。
 - 调用 startCameraCapture 并设置 sourceType 指定第二个摄像头开始采集。
 - 调用 joinChannelEx 并设置 publishSecondaryCameraTrack 为 
true,在频道内发布第二路摄像头采集的视频流。 
- 调用 stopCameraCapture。
 - 调用该方法并将 enabled 设置为 
false。 
- 如果在 startPreview 之前开启,则本地视频预览会同时出现两个摄像头采集的画面。
 - 如果在 startPreview 之后开启,SDK 会先停止当前的摄像头采集,然后再开启原摄像头和第二个摄像头,本地视频预览会出现短暂黑屏、然后自动恢复正常。
 
该方法仅适用于 iOS。
使用多路摄像头采集视频时,请确保系统版本为 13.0 及以上。
- iPhone XR
 - iPhone XS
 - iPhone XS Max
 - iPad Pro (第三代及以上)
 
参数
- enabled
 - 是否开启多摄像头视频采集模式:
true:开启多摄像头采集模式,SDK 使用多路摄像头采集视频。false:关闭多摄像头采集模式,SDK 仅使用单路摄像头采集视频。
 - config
 - 第二个摄像头的采集配置。详见 CameraCapturerConfiguration。
 
返回值
- 0: 方法调用成功。
 - < 0: 方法调用失败。详见错误码了解详情和解决建议。
 
getCameraMaxZoomFactor
获取摄像头支持最大缩放比例。
abstract getCameraMaxZoomFactor(): number;
详情
- 该方法必须在 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LocalVideoStreamStateCapturing (1) 之后调用。
 
返回值
设备摄像头支持的最大缩放比例。
所属接口类getVideoDeviceManager
isCameraAutoExposureFaceModeSupported
检测设备是否支持自动曝光功能。
abstract isCameraAutoExposureFaceModeSupported(): boolean;
详情
- 该方法仅适用于 iOS。
 - 该方法必须在 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LocalVideoStreamStateCapturing (1) 之后调用。
 
返回值
true: 设备支持自动曝光功能。false: 设备不支持自动曝光功能。
isCameraAutoFocusFaceModeSupported
检测设备是否支持人脸对焦功能。
abstract isCameraAutoFocusFaceModeSupported(): boolean;
详情
- 该方法必须在 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LocalVideoStreamStateCapturing (1) 之后调用。
 
返回值
true: 设备支持人脸对焦功能。false: 设备不支持人脸对焦功能。
isCameraExposurePositionSupported
检测设备是否支持手动曝光功能。
abstract isCameraExposurePositionSupported(): boolean;
详情
- 该方法必须在 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LocalVideoStreamStateCapturing (1) 之后调用。
 
返回值
true: 设备支持手动曝光功能。false: 设备不支持手动曝光功能。
isCameraExposureSupported
查询当前摄像头是否支持曝光调节。
abstract isCameraExposureSupported(): boolean;
详情
- 该方法必须在 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LocalVideoStreamStateCapturing (1) 之后调用。
 - 建议你在调用 setCameraExposureFactor 调节曝光系数前,先调用该方法查询当前摄像头是否支持曝光调节。
 - 当你调用该方法时,查询的是当前正在使用的摄像头是否支持曝光调节,即调用 setCameraCapturerConfiguration 时指定的摄像头。
 
返回值
true:方法调用成功。false:方法调用失败。详见错误码了解详情和解决建议。
isCameraFaceDetectSupported
检查设备摄像头是否支持人脸检测。
abstract isCameraFaceDetectSupported(): boolean;
详情
- 该方法仅适用于 Android 和 iOS。
 - 该方法必须在 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LocalVideoStreamStateCapturing (1) 之后调用。
 
返回值
true: 设备摄像头支持人脸检测。false: 设备摄像头不支持人脸检测。
isCameraFocusSupported
检测设备是否支持手动对焦功能。
abstract isCameraFocusSupported(): boolean;
详情
- 该方法必须在 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LocalVideoStreamStateCapturing (1) 之后调用。
 
返回值
true: 设备支持手动对焦功能。false: 设备不支持手动对焦功能。
isCameraTorchSupported
检测设备是否支持闪光灯常开。
abstract isCameraTorchSupported(): boolean;
详情
- 该方法必须在 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LocalVideoStreamStateCapturing (1) 之后调用。
 - 一般情况下,App 默认开启前置摄像头,因此如果你的前置摄像头不支持闪光灯常开,直接使用该方法会返回 false。如果需要检查后置摄像头是否支持闪光灯常开,需要先使用 switchCamera 切换摄像头,再使用该方法。
 - 在系统版本 15 的 iPad 上,即使 isCameraTorchSupported 返回 
true,也可能因系统问题导致你无法通过 setCameraTorchOn 成功开启闪光灯。 
返回值
true: 设备支持闪光灯常开。false: 设备不支持闪光灯常开。
isCameraZoomSupported
检测设备是否支持摄像头缩放功能。
abstract isCameraZoomSupported(): boolean;
调用时机
该方法必须在 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LocalVideoStreamStateCapturing (1) 之后调用。
调用限制
无。
返回值
true: 设备支持相机缩放功能。false: 设备不支持相机缩放功能。
queryCameraFocalLengthCapability
查询摄像头支持的焦距能力。
abstract queryCameraFocalLengthCapability(): {
    focalLengthInfos: FocalLengthInfo[];
    size: number;
  };
详情
如需开启摄像头广角、超广角拍摄模式,建议你先调用该方法查询设备是否具备相应的焦距能力,再根据查询结果调用 setCameraCapturerConfiguration 调整摄像头的焦距配置,以达到最佳的摄像头采集效果。
返回值
- focalLengthInfos:FocalLengthInfo 对象数组,其中包含摄像头的方向和焦距类型。
 - size:实际查询到的焦距信息数量。
 
setCameraAutoExposureFaceModeEnabled
设置是否开启自动曝光功能。
abstract setCameraAutoExposureFaceModeEnabled(enabled: boolean): number;
详情
- 该方法仅适用于 iOS。
 - 该方法必须在 enableVideo 后调用,设置结果在摄像头成功开启后生效,即 SDK 触发 onLocalVideoStateChanged 回调返回本地视频状态为 LocalVideoStreamStateCapturing (1) 后。
 
参数
- enabled
 - 是否开启自动曝光:
true: 开启自动曝光。false: 关闭自动曝光。
 
返回值
- 0: 方法调用成功。
 - < 0: 方法调用失败。详见错误码了解详情和解决建议。
 
setCameraAutoFocusFaceModeEnabled
设置是否开启人脸对焦功能。
abstract setCameraAutoFocusFaceModeEnabled(enabled: boolean): number;
SDK 默认在 Android 平台关闭人脸自动对焦,在 iOS 平台开启人脸自动对焦。如需自行设置人脸自动对焦,请调用该方法。
调用时机
该方法必须在 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LocalVideoStreamStateCapturing (1) 之后调用。
调用限制
无。
参数
- enabled
 - 是否开启人脸对焦:
true: 开启人脸对焦功能。false: 关闭人脸对焦功能。
 
返回值
- 0: 方法调用成功。
 - < 0: 方法调用失败。详见错误码了解详情和解决建议。
 
setCameraCapturerConfiguration
设置摄像头采集配置。
abstract setCameraCapturerConfiguration(
    config: CameraCapturerConfiguration
  ): number;
调用时机
该方法必须在开启本地摄像头采集前调用,如 startPreview 和 joinChannel 前调用。
调用限制
在调整摄像头的焦距配置前,建议先调用 queryCameraFocalLengthCapability 查询设备支持的焦距能力,再根据查询结果进行配置。
由于部分 Android 设备的限制,即使根据 queryCameraFocalLengthCapability 的查询结果设置焦距类型,设置结果也可能不生效。
参数
- config
 - 摄像头采集配置,详见 CameraCapturerConfiguration。注意在该方法中,不需要设置 deviceId 参数。
 
返回值
- 0: 方法调用成功。
 - < 0: 方法调用失败。详见错误码了解详情和解决建议。
 
setCameraDeviceOrientation
设置采集视频的旋转角度。
abstract setCameraDeviceOrientation(
    type: VideoSourceType,
    orientation: VideoOrientation
  ): number;
详情
- 该方法必须在 enableVideo 后调用,设置结果在摄像头成功开启后生效,即 SDK 触发 onLocalVideoStateChanged 回调返回本地视频状态为 LocalVideoStreamStateCapturing (1) 后。
 - 当视频采集设备不带重力感应功能时,你可以调用该方法手动调整采集到的视频画面的旋转角度。
 
参数
- type
 - 视频源类型,详见 VideoSourceType。
 - orientation
 - 顺时针旋转角度,详见 VideoOrientation。
 
返回值
- 0: 方法调用成功。
 - < 0: 方法调用失败。详见错误码了解详情和解决建议。
 
setCameraExposureFactor
设置当前摄像头的曝光系数。
abstract setCameraExposureFactor(factor: number): number;
详情
当拍摄环境光线不足或过于明亮时,会影响视频采集的画质。为了获得更好的视频效果,你可以使用该方法调节摄像头的曝光系数。
- 该方法必须在 enableVideo 后调用,设置结果在摄像头成功开启后生效,即 SDK 触发 onLocalVideoStateChanged 回调返回本地视频状态为 LocalVideoStreamStateCapturing (1) 后。
 - 建议你在调用该方法前,先调用 isCameraExposureSupported 查询当前摄像头是否支持调节曝光系数。
 - 当你调用该方法时,设置的是当前正在使用的摄像头的曝光系数,即调用 setCameraCapturerConfiguration 时指定的摄像头。
 
参数
- factor
 摄像头的曝光系数。默认值为 0,表示使用摄像头的默认曝光量。取值越大,曝光量越大。视频图像过曝时,你可以降低曝光系数;视频图像欠曝且暗部细节丢失时,你可以增加曝光系数。如果你指定的曝光系数超出设备支持的范围,SDK 会自动调节为设备实际支持的范围。
在 Android 平台上,取值范围为 [-20.0,20.0];在 iOS 平台上,取值范围为 [-8.0,8.0]。
返回值
- 0: 方法调用成功。
 - < 0: 方法调用失败。详见错误码了解详情和解决建议。
 
setCameraExposurePosition
设置手动曝光位置。
abstract setCameraExposurePosition(
    positionXinView: number,
    positionYinView: number
  ): number;
详情
- 该方法必须在 enableVideo 后调用,设置结果在摄像头成功开启后生效,即 SDK 触发 onLocalVideoStateChanged 回调返回本地视频状态为 LocalVideoStreamStateCapturing (1) 后。
 - 成功调用该方法后,本地会触发 onCameraExposureAreaChanged 回调。
 
参数
- positionXinView
 - 触摸点相对于视图的横坐标。
 - positionYinView
 - 触摸点相对于视图的纵坐标。
 
返回值
- 0: 方法调用成功。
 - < 0: 方法调用失败。详见错误码了解详情和解决建议。
 
setCameraFocusPositionInPreview
设置手动对焦位置,并触发对焦。
abstract setCameraFocusPositionInPreview(
    positionX: number,
    positionY: number
  ): number;
详情
- 该方法必须在 enableVideo 后调用,设置结果在摄像头成功开启后生效,即 SDK 触发 onLocalVideoStateChanged 回调返回本地视频状态为 LocalVideoStreamStateCapturing (1) 后。
 - 成功调用该方法后,本地会触发 onCameraFocusAreaChanged 回调。
 
参数
- positionX
 - 触摸点相对于视图的横坐标。
 - positionY
 - 触摸点相对于视图的纵坐标。
 
返回值
- 0: 方法调用成功。
 - < 0: 方法调用失败。详见错误码了解详情和解决建议。
 
setCameraTorchOn
设置是否打开闪光灯。
abstract setCameraTorchOn(isOn: boolean): number;
详情
- 该方法必须在 enableVideo 后调用,设置结果在摄像头成功开启后生效,即 SDK 触发 onLocalVideoStateChanged 回调返回本地视频状态为 LocalVideoStreamStateCapturing (1) 后。
 
参数
- isOn
 - 是否打开闪光灯:
true: 打开闪光灯。false:(默认)关闭闪光灯。
 
返回值
- 0: 方法调用成功。
 - < 0: 方法调用失败。详见错误码了解详情和解决建议。
 
setCameraZoomFactor
设置摄像头缩放比例。
abstract setCameraZoomFactor(factor: number): number;
详情
部分 iOS 设备的后置摄像头为多个摄像头组成的融合镜头,如双摄(广角和超广角)或三摄(广角、超广角和长焦),对于这种具备超广角能力的融合镜头,你可以调用 setCameraCapturerConfiguration 将 cameraFocalLengthType 设置为 CameraFocalLengthDefault (0)(标准镜头),然后调用该方法将摄像头缩放比例设置为小于 1.0 的数值,从而实现超广角的拍摄效果。
- 该方法必须在 enableVideo 后调用,设置结果在摄像头成功开启后生效,即 SDK 触发 onLocalVideoStateChanged 回调返回本地视频状态为 LocalVideoStreamStateCapturing (1) 后。
 
参数
- factor
 - 摄像头缩放比例。对不支持超广角的设备,取值范围从 1.0 到最大缩放比例;对支持超广角的设备,取值范围从 0.5 到最大缩放比例。你可以通过 getCameraMaxZoomFactor 方法获取设备支持的最大缩放比例。
 
返回值
- 方法调用成功: 返回设置的 factor 值。
 - 方法调用失败: 返回值 < 0。
 
switchCamera
切换前置/后置摄像头。
abstract switchCamera(): number;
你可以调用该方法在 App 运行期间基于可用摄像头的实际情况来动态切换摄像头,而无需重启视频流或重新配置视频源。
调用时机
该方法必须在摄像头成功开启后调用,即 SDK 触发 onLocalVideoStateChanged 回调,返回本地视频状态为 LocalVideoStreamStateCapturing (1) 后。
调用限制
该方法仅会对第一路摄像头采集的视频流进行摄像头切换操作,即调用 startCameraCapture 时设置为 VideoSourceCamera (0) 的视频源。
返回值
- 0: 方法调用成功。
 - < 0: 方法调用失败。详见错误码了解详情和解决建议。
 
onCameraExposureAreaChanged
摄像头曝光区域已改变回调。
  onCameraExposureAreaChanged?(
    x: number,
    y: number,
    width: number,
    height: number
  ): void;
详情
该回调是由本地用户调用 setCameraExposurePosition 方法改变曝光位置触发的。
参数
- x
 - 发生改变的曝光区域的 x 坐标。
 - y
 - 发生改变的曝光区域的 y 坐标。
 - width
 - 发生改变的曝光区域的宽度。
 - height
 - 发生改变的曝光区域的高度。
 
onCameraFocusAreaChanged
相机对焦区域已改变回调。
  onCameraFocusAreaChanged?(
    x: number,
    y: number,
    width: number,
    height: number
  ): void;
详情
该回调是由本地用户调用 setCameraFocusPositionInPreview 方法改变对焦位置触发的。
参数
- x
 - 发生改变的对焦区域的 x 坐标。
 - y
 - 发生改变的对焦区域的 y 坐标。
 - width
 - 发生改变的对焦区域的宽度。
 - height
 - 发生改变的对焦区域的高度。
 
onCameraReady
摄像头就绪回调。
  onCameraReady?(): void;
详情
请改用 onLocalVideoStateChanged 中的 LocalVideoStreamStateCapturing(1)。
该回调提示已成功打开摄像头,可以开始捕获视频。