视频设备管理
介绍跟视频设备管理相关的方法和回调。
EnableMultiCamera
开启或关闭多路摄像头采集。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int EnableMultiCamera(bool enabled, const FCameraCapturerConfiguration& config);
详情
- 调用该方法开启多路摄像头采集。
- 调用 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
- 第二个摄像头的采集配置。详见 FCameraCapturerConfiguration。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
EnumerateVideoDevices
获取系统中所有的视频设备列表。
UFUNCTION(BlueprintCallable, Category = "Agora|IVideoDeviceManager")
UIVideoDeviceCollection* EnumerateVideoDevices();
详情
该方法返回一个 IVideoDeviceCollection 对象,包含系统中所有的视频设备。通过 IVideoDeviceCollection 对象,App 可以枚举视频设备。 App 必须调用 Release 方法在使用过后释放返回的对象。
返回值
- 方法调用成功: 返回一个 IVideoDeviceCollection 对象,其中包含系统中所有视频设备。
GetCameraMaxZoomFactor
获取摄像头支持最大缩放比例。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
float GetCameraMaxZoomFactor();
详情
- 该方法仅适用于 Android 和 iOS。
- 该方法必须在摄像头成功开启后调用,即 SDK 触发 FOnLocalVideoStateChanged 回调,返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
返回值
设备摄像头支持的最大缩放比例。
所属接口类GetCapability
获取视频采集设备在指定的视频格式下的详细视频帧信息。
UFUNCTION(BlueprintCallable, Category = "Agora|IVideoDeviceManager")
int GetCapability(FString deviceIdUTF8, int deviceCapabilityNumber, FVideoFormat& capability);
详情
在调用 NumberOfCapabilities 获取视频采集设备支持的视频格式数量后,你可以调用该方法获取指定索引号支持的具体视频帧信息。
参数
- deviceIdUTF8
- 视频采集设备的 ID。
- deviceCapabilityNumber
- 视频格式的索引号。如果 NumberOfCapabilities 的返回值为 i,则该参数取值范围为[0,i)。
- capability
- 输出参数。表示指定视频格式的具体信息,包括宽度(px),高度(px)和帧率(fps)。详见 FVideoFormat。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
GetCount
获取系统中被索引的视频采集或播放设备的总数。
UFUNCTION(BlueprintCallable, Category = "Agora|IVideoDeviceCollection")
int GetCount();
返回值
被索引的视频采集或播放设备的总数。
所属接口类GetDevice
GetDevice
IsCameraAutoExposureFaceModeSupported
检测设备是否支持自动曝光功能。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
bool IsCameraAutoExposureFaceModeSupported();
详情
- 该方法仅适用于 iOS。
- 该方法必须在摄像头成功开启后调用,即 SDK 触发 FOnLocalVideoStateChanged 回调,返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
返回值
true
: 设备支持自动曝光功能。false
: 设备不支持自动曝光功能。
IsCameraAutoFocusFaceModeSupported
检测设备是否支持人脸对焦功能。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
bool IsCameraAutoFocusFaceModeSupported();
详情
- 该方法仅适用于 Android 和 iOS。
- 该方法必须在摄像头成功开启后调用,即 SDK 触发 FOnLocalVideoStateChanged 回调,返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
返回值
true
: 设备支持人脸对焦功能。false
: 设备不支持人脸对焦功能。
IsCameraExposurePositionSupported
检测设备是否支持手动曝光功能。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
bool IsCameraExposurePositionSupported();
详情
- 该方法仅适用于 Android 和 iOS。
- 该方法必须在摄像头成功开启后调用,即 SDK 触发 FOnLocalVideoStateChanged 回调,返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
返回值
true
: 设备支持手动曝光功能。false
: 设备不支持手动曝光功能。
IsCameraFaceDetectSupported
检查设备摄像头是否支持人脸检测。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
bool IsCameraFaceDetectSupported();
详情
- 该方法仅适用于 Android 和 iOS。
- 该方法必须在摄像头成功开启后调用,即 SDK 触发 FOnLocalVideoStateChanged 回调,返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
返回值
true
: 设备摄像头支持人脸检测。false
: 设备摄像头不支持人脸检测。
IsCameraFocusSupported
检测设备是否支持手动对焦功能。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
bool IsCameraFocusSupported();
详情
- 该方法仅适用于 Android 和 iOS。
- 该方法必须在摄像头成功开启后调用,即 SDK 触发 FOnLocalVideoStateChanged 回调,返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
返回值
true
: 设备支持手动对焦功能。false
: 设备不支持手动对焦功能。
IsCameraTorchSupported
检测设备是否支持闪光灯常开。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
bool IsCameraTorchSupported();
详情
- 该方法仅适用于 Android 和 iOS。
- 该方法必须在摄像头成功开启后调用,即 SDK 触发 FOnLocalVideoStateChanged 回调,返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
- 一般情况下,App 默认开启前置摄像头,因此如果你的前置摄像头不支持闪光灯常开,直接使用该方法会返回 false。如果需要检查后置摄像头是否支持闪光灯常开,需要先使用 SwitchCamera 切换摄像头,再使用该方法。
- 在系统版本 15 的 iPad 上,即使 IsCameraTorchSupported 返回
true
,也可能因系统问题导致你无法通过 SetCameraTorchOn 成功开启闪光灯。
返回值
true
: 设备支持闪光灯常开。false
: 设备不支持闪光灯常开。
IsCameraZoomSupported
检测设备是否支持摄像头缩放功能。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
bool IsCameraZoomSupported();
详情
- 该方法仅适用于 Android 和 iOS。
- 该方法必须在摄像头成功开启后调用,即 SDK 触发 FOnLocalVideoStateChanged 回调,返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
返回值
true
: 设备支持相机缩放功能。false
: 设备不支持相机缩放功能。
NumberOfCapabilities
获取指定视频采集设备支持的视频格式数量。
UFUNCTION(BlueprintCallable, Category = "Agora|IVideoDeviceManager")
int NumberOfCapabilities(FString deviceIdUTF8);
详情
视频采集设备可能支持多种视频格式,每一种格式都支持不同的视频帧宽度、视频帧高度、帧率组合。
你可以通过调用该方法,获取指定的视频采集设备可支持多少种视频格式,然后调用 GetCapability 获取指定视频格式下的具体视频帧信息。
参数
- deviceIdUTF8
- 视频采集设备的 ID。
返回值
- > 0: 方法调用成功。返回该设备支持的视频格式数量。例如:如果指定的摄像头支持 10 种不同的视频格式,则返回值为 10。
- ≤ 0: 方法调用失败。详见错误码了解详情和解决建议。
Release
释放 IVideoDeviceCollection
对象占用的所有资源。
UFUNCTION(BlueprintCallable, Category = "Agora|IVideoDeviceCollection")
void Release();
Release
释放 IVideoDeviceManager
对象占用的所有资源。
UFUNCTION(BlueprintCallable, Category = "Agora|IVideoDeviceManager")
void Release();
详情
SetCameraAutoExposureFaceModeEnabled
设置是否开启自动曝光功能。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int SetCameraAutoExposureFaceModeEnabled(bool enabled);
详情
- 该方法仅适用于 iOS。
- 该方法必须在 EnableVideo 后调用,设置结果在摄像头成功开启后生效,即 SDK 触发 FOnLocalVideoStateChanged 回调返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
参数
- enabled
- 是否开启自动曝光:
true
: 开启自动曝光。false
: 关闭自动曝光。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
SetCameraAutoFocusFaceModeEnabled
设置是否开启人脸对焦功能。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int SetCameraAutoFocusFaceModeEnabled(bool enabled);
详情
- 该方法仅适用于 Android 和 iOS。
- 该方法必须在 EnableVideo 后调用,设置结果在摄像头成功开启后生效,即 SDK 触发 FOnLocalVideoStateChanged 回调返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
参数
- enabled
- 是否开启人脸对焦:
true
: 开启人脸对焦功能。false
: 关闭人脸对焦功能。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
SetCameraCapturerConfiguration
设置摄像头采集配置。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int SetCameraCapturerConfiguration(const FCameraCapturerConfiguration& config);
详情
- 该方法仅适用于 Android 和 iOS。
- 该方法必须在开启本地摄像头采集前调用,如 StartPreview 和 JoinChannel 前调用。
参数
- config
- 摄像头采集配置,详见 FCameraCapturerConfiguration。信息在该方法中,不需要设置 deviceId 参数。
返回值
- >0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
SetCameraDeviceOrientation
设置采集视频的旋转角度。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int SetCameraDeviceOrientation(EVIDEO_SOURCE_TYPE type, FENUMWRAP_VIDEO_ORIENTATION orientation);
详情
- 该方法仅适用于 Windows。
- 该方法必须在 EnableVideo 后调用,设置结果在摄像头成功开启后生效,即 SDK 触发 FOnLocalVideoStateChanged 回调返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
- 当视频采集设备不带重力感应功能时,你可以调用该方法手动调整采集到的视频画面的旋转角度。
参数
- type
- 视频源类型,详见 EVIDEO_SOURCE_TYPE。
- orientation
- 顺时针旋转角度,详见 EENUMCUSTOM_VIDEO_ORIENTATION。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
SetCameraExposurePosition
设置手动曝光位置。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int SetCameraExposurePosition(float positionXinView, float positionYinView);
详情
- 该方法仅适用于 Android 和 iOS。
- 该方法必须在 EnableVideo 后调用,设置结果在摄像头成功开启后生效,即 SDK 触发 FOnLocalVideoStateChanged 回调返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
- 成功调用该方法后,本地会触发 FOnCameraExposureAreaChanged 回调。
参数
- positionXinView
- 触摸点相对于视图的横坐标。
- positionYinView
- 触摸点相对于视图的纵坐标。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
SetCameraFocusPositionInPreview
设置手动对焦位置,并触发对焦。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int SetCameraFocusPositionInPreview(float positionX, float positionY);
详情
- 该方法仅适用于 Android 和 iOS。
- 该方法必须在 EnableVideo 后调用,设置结果在摄像头成功开启后生效,即 SDK 触发 FOnLocalVideoStateChanged 回调返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
- 成功调用该方法后,本地会触发 FOnCameraFocusAreaChanged 回调。
参数
- positionX
- 触摸点相对于视图的横坐标。
- positionY
- 触摸点相对于视图的纵坐标。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
SetCameraTorchOn
设置是否打开闪光灯。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int SetCameraTorchOn(bool isOn);
详情
- 该方法仅适用于 Android 和 iOS。
- 该方法必须在 EnableVideo 后调用,设置结果在摄像头成功开启后生效,即 SDK 触发 FOnLocalVideoStateChanged 回调返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
参数
- isOn
- 是否打开闪光灯:
true
: 打开闪光灯。false
:(默认)关闭闪光灯。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
SetCameraZoomFactor
设置摄像头缩放比例。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int SetCameraZoomFactor(float factor);
详情
- 该方法仅适用于 Android 和 iOS。
- 该方法必须在 EnableVideo 后调用,设置结果在摄像头成功开启后生效,即 SDK 触发 FOnLocalVideoStateChanged 回调返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
返回值
- 方法调用成功: 返回设置的 factor 值。
- 方法调用失败: 返回值 < 0。
SetDevice
SetDevice
SwitchCamera
切换前置/后置摄像头。
UFUNCTION(BlueprintCallable, Category = "Agora|RtcEngineProxy")
int SwitchCamera();
详情
- 该方法仅适用于 Android 和 iOS。
- 该方法必须在摄像头成功开启后调用,即 SDK 触发 FOnLocalVideoStateChanged 回调,返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
返回值
- 0: 方法调用成功。
- < 0: 方法调用失败。详见错误码了解详情和解决建议。
FOnCameraExposureAreaChanged
摄像头曝光区域已改变回调。
DECLARE_DYNAMIC_MULTICAST_DELEGATE_FourParams(FOnCameraExposureAreaChanged, int, x, int, y, int, width, int, height);
详情
该回调是由本地用户调用 SetCameraExposurePosition 方法改变曝光位置触发的。
参数
- x
- 发生改变的曝光区域的 x 坐标。
- y
- 发生改变的曝光区域的 y 坐标。
- width
- 发生改变的曝光区域的宽度。
- height
- 发生改变的曝光区域的高度。
FOnCameraFocusAreaChanged
FOnCameraReady
摄像头就绪回调。
DECLARE_DYNAMIC_MULTICAST_DELEGATE(FOnCameraReady);
详情
请改用 FOnLocalVideoStateChanged 中的 LOCAL_VIDEO_STREAM_STATE_CAPTURING(1)。
该回调提示已成功打开摄像头,可以开始捕获视频。
FOnVideoDeviceStateChanged
视频设备变化回调。
DECLARE_DYNAMIC_MULTICAST_DELEGATE_ThreeParams(FOnVideoDeviceStateChanged, FString, deviceId, int, deviceType, int, deviceState);
详情
该回调提示系统视频设备状态发生改变,比如被拔出或移除。如果设备已使用外接摄像头采集,外接摄像头被拔开后,视频会中断。
参数
- deviceId
- 设备 ID。
- deviceType
- 设备类型。详见 EENUMCUSTOM_MEDIA_DEVICE_TYPE。
- deviceState
- 设备状态。详见 MEDIA_DEVICE_STATE_TYPE 。