# 视频设备管理 (/zh-CN/api-reference/rtc/unreal-blueprint/device-management/video-device)

> For AI agents: see the complete documentation index at [llms.txt](/llms.txt).

<a id="toc_video_device"></a>

<a id="api_irtcengine_enablemulticamera"></a>

<a id="ariaid-title2"></a>

## EnableMultiCamera [#enablemulticamera]

开启或关闭多路摄像头采集。

<a id="api_irtcengine_enablemulticamera__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int EnableMultiCamera(bool enabled, const FCameraCapturerConfiguration& config);
```

<a id="api_irtcengine_enablemulticamera__detailed_desc"></a>

### 详情 [#详情]

在已有摄像头采集视频的场景下，声网推荐你采用以下步骤实现多路摄像头采集、发布视频：

1. 调用该方法开启多路摄像头采集。
2. 调用 [StartPreview](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_startpreview2) 开启本地视频预览。
3. 调用 [StartCameraCapture](/zh-CN/api-reference/rtc/unreal-blueprint/video/camera-capture#api_irtcengine_startcameracapture) 并设置 sourceType 指定第二个摄像头开始采集。
4. 调用 [JoinChannelEx](/zh-CN/api-reference/rtc/unreal-blueprint/channel#api_irtcengineex_joinchannelex) 并设置 publishSecondaryCameraTrack 为 `true`，在频道内发布第二路摄像头采集的视频流。

如果要关闭多路摄像头采集，可参考以下步骤：

1. 调用 [StopCameraCapture](/zh-CN/api-reference/rtc/unreal-blueprint/video/camera-capture#api_irtcengine_stopcameracapture)。
2. 调用该方法并将 enabled 设置为 `false`。

:::note
注：

你可以在 [StartPreview](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_startpreview2) 前后调用该方法开启多摄像头采集：

- 如果在 StartPreview 之前开启，则本地视频预览会同时出现两个摄像头采集的画面。
- 如果在 StartPreview 之后开启，SDK 会先停止当前的摄像头采集，然后再开启原摄像头和第二个摄像头，本地视频预览会出现短暂黑屏、然后自动恢复正常。
:::

该方法仅适用于 iOS。

使用多路摄像头采集视频时，请确保系统版本为 13.0 及以上。

支持多路摄像头采集的最低 iOS 设备类型如下所示：

- iPhone XR
- iPhone XS
- iPhone XS Max
- iPad Pro (第三代及以上)

<a id="api_irtcengine_enablemulticamera__parameters"></a>

### 参数 [#参数]

<ParameterList>
<a id="enabled"></a>
<Parameter name="enabled">

是否开启多摄像头视频采集模式：

- `true`：开启多摄像头采集模式，SDK 使用多路摄像头采集视频。
- `false`：关闭多摄像头采集模式，SDK 仅使用单路摄像头采集视频。

</Parameter>
<a id="config"></a>
<Parameter name="config">

第二个摄像头的采集配置。详见 [FCameraCapturerConfiguration](/zh-CN/api-reference/rtc/unreal-blueprint/class-cameracapturerconfiguration)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_enablemulticamera__return_values"></a>

### 返回值 [#返回值]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="api_ivideodevicemanager_enumeratevideodevices"></a>

<a id="ariaid-title3"></a>

## EnumerateVideoDevices [#enumeratevideodevices]

获取系统中所有的视频设备列表。

<a id="api_ivideodevicemanager_enumeratevideodevices__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IVideoDeviceManager")
	UVideoDeviceCollection* EnumerateVideoDevices();
```

<a id="api_ivideodevicemanager_enumeratevideodevices__detailed_desc"></a>

### 详情 [#详情-1]

:::caution
注意： 该方法仅适用于 Windows 和 macOS。
:::

该方法返回一个 [IVideoDeviceCollection](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_ivideodevicecollection) 对象，包含系统中所有的视频设备。通过 IVideoDeviceCollection 对象，App 可以枚举视频设备。
 App 必须调用 [Release](/zh-CN/api-reference/rtc/unreal-blueprint/device-management/video-device#api_ivideodevicecollection_release) 方法在使用过后释放返回的对象。

<a id="api_ivideodevicemanager_enumeratevideodevices__return_values"></a>

### 返回值 [#返回值-1]

- 方法调用成功: 返回一个 IVideoDeviceCollection 对象，其中包含系统中所有视频设备。

### 所属接口类 [#所属接口类-1]

- [IVideoDeviceManager](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_ivideodevicemanager)

<a id="api_irtcengine_getcameramaxzoomfactor"></a>

<a id="ariaid-title4"></a>

## GetCameraMaxZoomFactor [#getcameramaxzoomfactor]

获取摄像头支持最大缩放比例。

<a id="api_irtcengine_getcameramaxzoomfactor__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	float GetCameraMaxZoomFactor();
```

<a id="api_irtcengine_getcameramaxzoomfactor__detailed_desc"></a>

### 详情 [#详情-2]

:::caution
注意：

- 该方法仅适用于 Android 和 iOS。
- 该方法必须在 SDK 触发 [OnLocalVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onlocalvideostatechanged) 回调，返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 之后调用。
:::

<a id="api_irtcengine_getcameramaxzoomfactor__return_values"></a>

### 返回值 [#返回值-2]

设备摄像头支持的最大缩放比例。

### 所属接口类 [#所属接口类-2]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="api_ivideodevicemanager_getcapability"></a>

<a id="ariaid-title5"></a>

## GetCapability [#getcapability]

获取视频采集设备在指定的视频格式下的详细视频帧信息。

<a id="api_ivideodevicemanager_getcapability__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IVideoDeviceManager")
	int GetCapability(const FString & deviceIdUTF8, int deviceCapabilityNumber, FVideoFormat& capability);
```

<a id="api_ivideodevicemanager_getcapability__detailed_desc"></a>

### 详情 [#详情-3]

:::caution
注意： 该方法仅适用于 Windows 和 macOS。
:::

在调用 [NumberOfCapabilities](/zh-CN/api-reference/rtc/unreal-blueprint/device-management/video-device#api_ivideodevicemanager_numberofcapabilities) 获取视频采集设备支持的视频格式数量后，你可以调用该方法获取指定索引号支持的具体视频帧信息。

<a id="api_ivideodevicemanager_getcapability__parameters"></a>

### 参数 [#参数-1]

<ParameterList>
<a id="deviceidutf8"></a>
<Parameter name="deviceIdUTF8">

视频采集设备的 ID。

</Parameter>
<a id="devicecapabilitynumber"></a>
<Parameter name="deviceCapabilityNumber">

视频格式的索引号。如果 NumberOfCapabilities 的返回值为 i，则该参数取值范围为[0,i)。

</Parameter>
<a id="capability"></a>
<Parameter name="capability">

输出参数。表示指定视频格式的具体信息，包括宽度（px），高度（px）和帧率（fps）。详见 [FVideoFormat](/zh-CN/api-reference/rtc/unreal-blueprint/class-videoformat)。

</Parameter>
</ParameterList>

<a id="api_ivideodevicemanager_getcapability__return_values"></a>

### 返回值 [#返回值-3]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-3]

- [IVideoDeviceManager](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_ivideodevicemanager)

<a id="api_ivideodevicecollection_getcount"></a>

<a id="ariaid-title6"></a>

## GetCount [#getcount]

获取系统中被索引的视频采集或播放设备的总数。

<a id="api_ivideodevicecollection_getcount__prototype"></a>

```cpp
UFUNCTION(BlueprintPure, Category = "Agora|IVideoDeviceCollection")
int GetCount();
```

<a id="api_ivideodevicecollection_getcount__return_values"></a>

### 返回值 [#返回值-4]

被索引的视频采集或播放设备的总数。

### 所属接口类 [#所属接口类-4]

- [IVideoDeviceCollection](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_ivideodevicecollection)

<a id="api_ivideodevicecollection_getdevice"></a>

<a id="ariaid-title7"></a>

## GetDevice [#getdevice]

获取某个被索引的视频采集设备的指定信息。

<a id="api_ivideodevicecollection_getdevice__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IVideoDeviceCollection")
int GetDevice(int index, FString& deviceName, FString& deviceId);
```

<a id="api_ivideodevicecollection_getdevice__parameters"></a>

### 参数 [#参数-2]

<ParameterList>
<a id="index"></a>
<Parameter name="index">

指定的索引值，必须小于 [GetCount](/zh-CN/api-reference/rtc/unreal-blueprint/device-management/video-device#api_ivideodevicecollection_getcount) 方法的返回值。

</Parameter>
<a id="devicename"></a>
<Parameter name="deviceName">

设备名称。

</Parameter>
<a id="deviceid"></a>
<Parameter name="deviceId">

视频设备的设备 ID。

</Parameter>
</ParameterList>

<a id="api_ivideodevicecollection_getdevice__return_values"></a>

### 返回值 [#返回值-5]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-5]

- [IVideoDeviceCollection](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_ivideodevicecollection)

<a id="api_irtcengine_getvideodevicemanager"></a>

<a id="ariaid-title8"></a>

## GetAgoraVideoDeviceManager [#getagoravideodevicemanager]

获取 [IVideoDeviceManager](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_ivideodevicemanager) 对象，以管理视频设备。

<a id="api_irtcengine_getvideodevicemanager__prototype"></a>

```cpp
UFUNCTION(BlueprintPure, Category = "Agora|IVideoDeviceManager")
	static UAgoraBPuVideoDeviceManager* GetAgoraVideoDeviceManager();
```

<a id="api_irtcengine_getvideodevicemanager__return_values"></a>

### 返回值 [#返回值-6]

一个 [IVideoDeviceManager](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_ivideodevicemanager) 对象。

<a id="api_irtcengine_iscameraautoexposurefacemodesupported"></a>

<a id="ariaid-title9"></a>

## IsCameraAutoExposureFaceModeSupported [#iscameraautoexposurefacemodesupported]

检测设备是否支持自动曝光功能。

<a id="api_irtcengine_iscameraautoexposurefacemodesupported__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	bool IsCameraAutoExposureFaceModeSupported();
```

<a id="api_irtcengine_iscameraautoexposurefacemodesupported__detailed_desc"></a>

### 详情 [#详情-4]

:::caution
注意：

- 该方法仅适用于 iOS。
- 该方法必须在 SDK 触发 [OnLocalVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onlocalvideostatechanged) 回调，返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 之后调用。
:::

<a id="api_irtcengine_iscameraautoexposurefacemodesupported__return_values"></a>

### 返回值 [#返回值-7]

- `true`: 设备支持自动曝光功能。
- `false`: 设备不支持自动曝光功能。

### 所属接口类 [#所属接口类-6]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_iscameraautofocusfacemodesupported"></a>

<a id="ariaid-title10"></a>

## IsCameraAutoFocusFaceModeSupported [#iscameraautofocusfacemodesupported]

检测设备是否支持人脸对焦功能。

<a id="api_irtcengine_iscameraautofocusfacemodesupported__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	bool IsCameraAutoFocusFaceModeSupported();
```

<a id="api_irtcengine_iscameraautofocusfacemodesupported__detailed_desc"></a>

### 详情 [#详情-5]

:::caution
注意：

- 该方法仅适用于 Android 和 iOS。
- 该方法必须在 SDK 触发 [OnLocalVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onlocalvideostatechanged) 回调，返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 之后调用。
:::

<a id="api_irtcengine_iscameraautofocusfacemodesupported__return_values"></a>

### 返回值 [#返回值-8]

- `true`: 设备支持人脸对焦功能。
- `false`: 设备不支持人脸对焦功能。

### 所属接口类 [#所属接口类-7]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_iscameraexposurepositionsupported"></a>

<a id="ariaid-title11"></a>

## IsCameraExposurePositionSupported [#iscameraexposurepositionsupported]

检测设备是否支持手动曝光功能。

<a id="api_irtcengine_iscameraexposurepositionsupported__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	bool IsCameraExposurePositionSupported();
```

<a id="api_irtcengine_iscameraexposurepositionsupported__detailed_desc"></a>

### 详情 [#详情-6]

:::caution
注意：

- 该方法仅适用于 Android 和 iOS。
- 该方法必须在 SDK 触发 [OnLocalVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onlocalvideostatechanged) 回调，返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 之后调用。
:::

<a id="api_irtcengine_iscameraexposurepositionsupported__return_values"></a>

### 返回值 [#返回值-9]

- `true`: 设备支持手动曝光功能。
- `false`: 设备不支持手动曝光功能。

### 所属接口类 [#所属接口类-8]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_iscameraexposuresupported"></a>

<a id="ariaid-title12"></a>

## IsCameraExposureSupported [#iscameraexposuresupported]

查询当前摄像头是否支持曝光调节。

<a id="api_irtcengine_iscameraexposuresupported__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	bool IsCameraExposureSupported();
```

<a id="api_irtcengine_iscameraexposuresupported__detailed_desc"></a>

### 详情 [#详情-7]

:::caution
注意：

- 该方法仅适用于 Android 和 iOS。
- 该方法必须在 SDK 触发 [OnLocalVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onlocalvideostatechanged) 回调，返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 之后调用。
- 建议你在调用 [SetCameraExposureFactor](/zh-CN/api-reference/rtc/unreal-blueprint/device-management/video-device#api_irtcengine_setcameraexposurefactor) 调节曝光系数前，先调用该方法查询当前摄像头是否支持曝光调节。
- 当你调用该方法时，查询的是当前正在使用的摄像头是否支持曝光调节，即调用 [SetCameraCapturerConfiguration](/zh-CN/api-reference/rtc/unreal-blueprint/device-management/video-device#api_irtcengine_setcameracapturerconfiguration) 时指定的摄像头。
:::

<a id="api_irtcengine_iscameraexposuresupported__return_values"></a>

### 返回值 [#返回值-10]

- `true`：方法调用成功。
- `false`：方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-9]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_iscamerafacedetectsupported"></a>

<a id="ariaid-title13"></a>

## IsCameraFaceDetectSupported [#iscamerafacedetectsupported]

检查设备摄像头是否支持人脸检测。

<a id="api_irtcengine_iscamerafacedetectsupported__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	bool IsCameraFaceDetectSupported();
```

<a id="api_irtcengine_iscamerafacedetectsupported__detailed_desc"></a>

### 详情 [#详情-8]

:::caution
注意：

- 该方法仅适用于 Android 和 iOS。
- 该方法必须在 SDK 触发 [OnLocalVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onlocalvideostatechanged) 回调，返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 之后调用。
:::

<a id="api_irtcengine_iscamerafacedetectsupported__return_values"></a>

### 返回值 [#返回值-11]

- `true`: 设备摄像头支持人脸检测。
- `false`: 设备摄像头不支持人脸检测。

### 所属接口类 [#所属接口类-10]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_iscamerafocussupported"></a>

<a id="ariaid-title14"></a>

## IsCameraFocusSupported [#iscamerafocussupported]

检测设备是否支持手动对焦功能。

<a id="api_irtcengine_iscamerafocussupported__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	bool IsCameraFocusSupported();
```

<a id="api_irtcengine_iscamerafocussupported__detailed_desc"></a>

### 详情 [#详情-9]

:::caution
注意：

- 该方法仅适用于 Android 和 iOS。
- 该方法必须在 SDK 触发 [OnLocalVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onlocalvideostatechanged) 回调，返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 之后调用。
:::

<a id="api_irtcengine_iscamerafocussupported__return_values"></a>

### 返回值 [#返回值-12]

- `true`: 设备支持手动对焦功能。
- `false`: 设备不支持手动对焦功能。

### 所属接口类 [#所属接口类-11]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_iscameratorchsupported"></a>

<a id="ariaid-title15"></a>

## IsCameraTorchSupported [#iscameratorchsupported]

检测设备是否支持闪光灯常开。

<a id="api_irtcengine_iscameratorchsupported__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	bool IsCameraTorchSupported();
```

<a id="api_irtcengine_iscameratorchsupported__detailed_desc"></a>

### 详情 [#详情-10]

:::caution
注意：

- 该方法仅适用于 Android 和 iOS。
- 该方法必须在 SDK 触发 [OnLocalVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onlocalvideostatechanged) 回调，返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 之后调用。
- 一般情况下，App 默认开启前置摄像头，因此如果你的前置摄像头不支持闪光灯常开，直接使用该方法会返回 false。如果需要检查后置摄像头是否支持闪光灯常开，需要先使用 [SwitchCamera](/zh-CN/api-reference/rtc/unreal-blueprint/device-management/video-device#api_irtcengine_switchcamera) 切换摄像头，再使用该方法。
- 在系统版本 15 的 iPad 上，即使 [IsCameraTorchSupported](/zh-CN/api-reference/rtc/unreal-blueprint/device-management/video-device#api_irtcengine_iscameratorchsupported) 返回 `true`，也可能因系统问题导致你无法通过 [SetCameraTorchOn](/zh-CN/api-reference/rtc/unreal-blueprint/device-management/video-device#api_irtcengine_setcameratorchon) 成功开启闪光灯。
:::

<a id="api_irtcengine_iscameratorchsupported__return_values"></a>

### 返回值 [#返回值-13]

- `true`: 设备支持闪光灯常开。
- `false`: 设备不支持闪光灯常开。

### 所属接口类 [#所属接口类-12]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_iscamerazoomsupported"></a>

<a id="ariaid-title16"></a>

## IsCameraZoomSupported [#iscamerazoomsupported]

检测设备是否支持摄像头缩放功能。

<a id="api_irtcengine_iscamerazoomsupported__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	bool IsCameraZoomSupported();
```

<a id="api_irtcengine_iscamerazoomsupported__detailed_desc"></a>

:::caution
注意： 该方法仅适用于 Android 和 iOS。
:::

<a id="api_irtcengine_iscamerazoomsupported__timing"></a>

### 调用时机 [#调用时机]

该方法必须在 SDK 触发 [OnLocalVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onlocalvideostatechanged) 回调，返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 之后调用。

<a id="api_irtcengine_iscamerazoomsupported__restriction"></a>

### 调用限制 [#调用限制]

无。

<a id="api_irtcengine_iscamerazoomsupported__return_values"></a>

### 返回值 [#返回值-14]

- `true`: 设备支持相机缩放功能。
- `false`: 设备不支持相机缩放功能。

### 所属接口类 [#所属接口类-13]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="api_ivideodevicemanager_numberofcapabilities"></a>

<a id="ariaid-title17"></a>

## NumberOfCapabilities [#numberofcapabilities]

获取指定视频采集设备支持的视频格式数量。

<a id="api_ivideodevicemanager_numberofcapabilities__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IVideoDeviceManager")
	int NumberOfCapabilities(const FString & deviceIdUTF8);
```

<a id="api_ivideodevicemanager_numberofcapabilities__detailed_desc"></a>

### 详情 [#详情-11]

:::caution
注意： 该方法仅适用于 Windows 和 macOS。
:::

视频采集设备可能支持多种视频格式，每一种格式都支持不同的视频帧宽度、视频帧高度、帧率组合。

你可以通过调用该方法，获取指定的视频采集设备可支持多少种视频格式，然后调用 [GetCapability](/zh-CN/api-reference/rtc/unreal-blueprint/device-management/video-device#api_ivideodevicemanager_getcapability) 获取指定视频格式下的具体视频帧信息。

<a id="api_ivideodevicemanager_numberofcapabilities__parameters"></a>

### 参数 [#参数-3]

<ParameterList>
<a id="deviceidutf8-1"></a>
<Parameter name="deviceIdUTF8">

视频采集设备的 ID。

</Parameter>
</ParameterList>

<a id="api_ivideodevicemanager_numberofcapabilities__return_values"></a>

### 返回值 [#返回值-15]

- &gt; 0: 方法调用成功。返回该设备支持的视频格式数量。例如：如果指定的摄像头支持 10 种不同的视频格式，则返回值为 10。
- ≤ 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-14]

- [IVideoDeviceManager](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_ivideodevicemanager)

<a id="api_irtcengine_querycamerafocallengthcapability"></a>

<a id="ariaid-title18"></a>

## QueryCameraFocalLengthCapability [#querycamerafocallengthcapability]

查询摄像头支持的焦距能力。

<a id="api_irtcengine_querycamerafocallengthcapability__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int QueryCameraFocalLengthCapability(const TArray<FFocalLengthInfo> & focalLengthInfos);
```

<a id="api_irtcengine_querycamerafocallengthcapability__detailed_desc"></a>

### 详情 [#详情-12]

如需开启摄像头广角、超广角拍摄模式，建议你先调用该方法查询设备是否具备相应的焦距能力，再根据查询结果调用 [SetCameraCapturerConfiguration](/zh-CN/api-reference/rtc/unreal-blueprint/device-management/video-device#api_irtcengine_setcameracapturerconfiguration) 调整摄像头的焦距配置，以达到最佳的摄像头采集效果。

:::caution
注意： 该方法仅适用于 Android 和 iOS。
:::

<a id="api_irtcengine_querycamerafocallengthcapability__parameters"></a>

### 参数 [#参数-4]

<ParameterList>
<a id="focallengthinfos"></a>
<Parameter name="focalLengthInfos">

输入和输出参数。指向 [FFocalLengthInfo](/zh-CN/api-reference/rtc/unreal-blueprint/class-focallengthinfo) 对象数组的指针：

- 输入值：指向一个 [FFocalLengthInfo](/zh-CN/api-reference/rtc/unreal-blueprint/class-focallengthinfo) 对象数组，用于存储焦距信息。
- 输出值：方法执行后，输出查询到的焦距信息。

</Parameter>
</ParameterList>

<a id="api_irtcengine_querycamerafocallengthcapability__return_values"></a>

### 返回值 [#返回值-16]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-15]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_querycodeccapability"></a>

<a id="ariaid-title19"></a>

## QueryCodecCapability [#querycodeccapability]

查询 SDK 支持的视频编解码能力。

<a id="api_irtcengine_querycodeccapability__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int QueryCodecCapability(TArray<FCodecCapInfo> & codecInfo, int QuerySize = 10);
```

<a id="api_irtcengine_querycodeccapability__detailed_desc"></a>

### 详情 [#详情-13]

<a id="api_irtcengine_querycodeccapability__parameters"></a>

### 参数 [#参数-5]

<ParameterList>
<a id="codecinfo"></a>
<Parameter name="codecInfo">

输入和输出参数，表示 SDK 的视频编码能力数组。详见 [FCodecCapInfo](/zh-CN/api-reference/rtc/unreal-blueprint/class-codeccapinfo)。

- 输入值：用户执行该方法时定义的 FCodecCapInfo，表示待查询的视频编解码能力。
- 输出值：方法执行完毕后输出的 FCodecCapInfo，表示 SDK 实际支持的视频编解码能力。

</Parameter>
<a id="size"></a>
<Parameter name="size">

输入和输出参数，表示 FCodecCapInfo 数组的大小。

- 输入值：用户执行该方法时定义的 FCodecCapInfo 的大小。
- 输出值：方法执行完毕后输出的 FCodecCapInfo 的大小。

</Parameter>
</ParameterList>

<a id="api_irtcengine_querycodeccapability__return_values"></a>

### 返回值 [#返回值-17]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-16]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="api_ivideodevicecollection_release"></a>

<a id="ariaid-title20"></a>

## Release [#release]

释放 [IVideoDeviceCollection](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_ivideodevicecollection) 对象占用的所有资源。

<a id="api_ivideodevicecollection_release__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IVideoDeviceCollection")
void Release();
```

### 所属接口类 [#所属接口类-17]

- [IVideoDeviceCollection](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_ivideodevicecollection)

<a id="api_ivideodevicemanager_release"></a>

<a id="ariaid-title21"></a>

## Release [#release-1]

释放 [IVideoDeviceManager](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_ivideodevicemanager) 对象占用的所有资源。

<a id="api_ivideodevicemanager_release__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IVideoDeviceManager")
void Release();
```

<a id="api_ivideodevicemanager_release__detailed_desc"></a>

### 详情 [#详情-14]

:::caution
注意： 该方法仅适用于 Windows 和 macOS。
:::

### 所属接口类 [#所属接口类-18]

- [IVideoDeviceManager](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_ivideodevicemanager)

<a id="api_irtcengine_setcameraautoexposurefacemodeenabled"></a>

<a id="ariaid-title22"></a>

## SetCameraAutoExposureFaceModeEnabled [#setcameraautoexposurefacemodeenabled]

设置是否开启自动曝光功能。

<a id="api_irtcengine_setcameraautoexposurefacemodeenabled__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int SetCameraAutoExposureFaceModeEnabled(bool enabled);
```

<a id="api_irtcengine_setcameraautoexposurefacemodeenabled__detailed_desc"></a>

### 详情 [#详情-15]

:::caution
注意：

- 该方法仅适用于 iOS。
- 该方法必须在 [EnableVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_enablevideo) 后调用，设置结果在摄像头成功开启后生效，即 SDK 触发 [OnLocalVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onlocalvideostatechanged) 回调返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
:::

<a id="api_irtcengine_setcameraautoexposurefacemodeenabled__parameters"></a>

### 参数 [#参数-6]

<ParameterList>
<a id="enabled-1"></a>
<Parameter name="enabled">

是否开启自动曝光：

- `true`: 开启自动曝光。
- `false`: 关闭自动曝光。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setcameraautoexposurefacemodeenabled__return_values"></a>

### 返回值 [#返回值-18]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-19]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_setcameraautofocusfacemodeenabled"></a>

<a id="ariaid-title23"></a>

## SetCameraAutoFocusFaceModeEnabled [#setcameraautofocusfacemodeenabled]

设置是否开启人脸对焦功能。

<a id="api_irtcengine_setcameraautofocusfacemodeenabled__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int SetCameraAutoFocusFaceModeEnabled(bool enabled);
```

<a id="api_irtcengine_setcameraautofocusfacemodeenabled__detailed_desc"></a>

SDK 默认在 Android 平台关闭人脸自动对焦，在 iOS 平台开启人脸自动对焦。如需自行设置人脸自动对焦，请调用该方法。

:::caution
注意： 该方法仅适用于 Android 和 iOS。
:::

<a id="api_irtcengine_setcameraautofocusfacemodeenabled__timing"></a>

### 调用时机 [#调用时机-1]

该方法必须在 SDK 触发 [OnLocalVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onlocalvideostatechanged) 回调，返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 之后调用。

<a id="api_irtcengine_setcameraautofocusfacemodeenabled__restriction"></a>

### 调用限制 [#调用限制-1]

无。

<a id="api_irtcengine_setcameraautofocusfacemodeenabled__parameters"></a>

### 参数 [#参数-7]

<ParameterList>
<a id="enabled-2"></a>
<Parameter name="enabled">

是否开启人脸对焦：

- `true`: 开启人脸对焦功能。
- `false`: 关闭人脸对焦功能。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setcameraautofocusfacemodeenabled__return_values"></a>

### 返回值 [#返回值-19]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-20]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_setcameracapturerconfiguration"></a>

<a id="ariaid-title24"></a>

## SetCameraCapturerConfiguration [#setcameracapturerconfiguration]

设置摄像头采集配置。

<a id="api_irtcengine_setcameracapturerconfiguration__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int SetCameraCapturerConfiguration(const FCameraCapturerConfiguration& config);
```

<a id="api_irtcengine_setcameracapturerconfiguration__detailed_desc"></a>

<a id="api_irtcengine_setcameracapturerconfiguration__timing"></a>

### 调用时机 [#调用时机-2]

该方法必须在开启本地摄像头采集前调用，如 [StartPreview](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_startpreview2) 和 [JoinChannelWithOptions](/zh-CN/api-reference/rtc/unreal-blueprint/channel#api_irtcengine_joinchannel2) 前调用。

<a id="api_irtcengine_setcameracapturerconfiguration__restriction"></a>

### 调用限制 [#调用限制-2]

在调整摄像头的焦距配置前，建议先调用 [QueryCameraFocalLengthCapability](/zh-CN/api-reference/rtc/unreal-blueprint/device-management/video-device#api_irtcengine_querycamerafocallengthcapability) 查询设备支持的焦距能力，再根据查询结果进行配置。

由于部分 Android 设备的限制，即使根据 QueryCameraFocalLengthCapability 的查询结果设置焦距类型，设置结果也可能不生效。

<a id="api_irtcengine_setcameracapturerconfiguration__parameters"></a>

### 参数 [#参数-8]

<ParameterList>
<a id="config-1"></a>
<Parameter name="config">

摄像头采集配置，详见 [FCameraCapturerConfiguration](/zh-CN/api-reference/rtc/unreal-blueprint/class-cameracapturerconfiguration)。

:::caution
注意： 在该方法中，不需要设置 deviceId 参数。
:::

</Parameter>
</ParameterList>

<a id="api_irtcengine_setcameracapturerconfiguration__return_values"></a>

### 返回值 [#返回值-20]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-21]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_setcameradeviceorientation"></a>

<a id="ariaid-title25"></a>

## SetCameraDeviceOrientation [#setcameradeviceorientation]

设置采集视频的旋转角度。

<a id="api_irtcengine_setcameradeviceorientation__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int SetCameraDeviceOrientation(EVIDEO_SOURCE_TYPE type, FENUMWRAP_VIDEO_ORIENTATION orientation);
```

<a id="api_irtcengine_setcameradeviceorientation__detailed_desc"></a>

### 详情 [#详情-16]

:::caution
注意：

- 该方法仅适用于 Windows。
- 该方法必须在 [EnableVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_enablevideo) 后调用，设置结果在摄像头成功开启后生效，即 SDK 触发 [OnLocalVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onlocalvideostatechanged) 回调返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
- 当视频采集设备不带重力感应功能时，你可以调用该方法手动调整采集到的视频画面的旋转角度。
:::

<a id="api_irtcengine_setcameradeviceorientation__parameters"></a>

### 参数 [#参数-9]

<ParameterList>
<a id="type"></a>
<Parameter name="type">

视频源类型，详见 [EUABT_VIDEO_SOURCE_TYPE](/zh-CN/api-reference/rtc/unreal-blueprint/enum-videosourcetype)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setcameradeviceorientation__parml_ejw_j4f_3qb"></a>

<ParameterList>
<a id="orientation"></a>
<Parameter name="orientation">

顺时针旋转角度，详见 [FENUMWRAP_VIDEO_ORIENTATION](/zh-CN/api-reference/rtc/unreal-blueprint/enum-videoorientation)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setcameradeviceorientation__return_values"></a>

### 返回值 [#返回值-21]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-22]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_setcameraexposurefactor"></a>

<a id="ariaid-title26"></a>

## SetCameraExposureFactor [#setcameraexposurefactor]

设置当前摄像头的曝光系数。

<a id="api_irtcengine_setcameraexposurefactor__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int SetCameraExposureFactor(float factor);
```

<a id="api_irtcengine_setcameraexposurefactor__detailed_desc"></a>

### 详情 [#详情-17]

当拍摄环境光线不足或过于明亮时，会影响视频采集的画质。为了获得更好的视频效果，你可以使用该方法调节摄像头的曝光系数。

:::caution
注意：

- 该方法仅适用于 Android 和 iOS。
- 该方法必须在 [EnableVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_enablevideo) 后调用，设置结果在摄像头成功开启后生效，即 SDK 触发 [OnLocalVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onlocalvideostatechanged) 回调返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
- 建议你在调用该方法前，先调用 [IsCameraExposureSupported](/zh-CN/api-reference/rtc/unreal-blueprint/device-management/video-device#api_irtcengine_iscameraexposuresupported) 查询当前摄像头是否支持调节曝光系数。
- 当你调用该方法时，设置的是当前正在使用的摄像头的曝光系数，即调用 [SetCameraCapturerConfiguration](/zh-CN/api-reference/rtc/unreal-blueprint/device-management/video-device#api_irtcengine_setcameracapturerconfiguration) 时指定的摄像头。
:::

<a id="api_irtcengine_setcameraexposurefactor__parameters"></a>

### 参数 [#参数-10]

<ParameterList>
<a id="factor"></a>
<Parameter name="factor">

摄像头的曝光系数。默认值为 0，表示使用摄像头的默认曝光量。取值越大，曝光量越大。视频图像过曝时，你可以降低曝光系数；视频图像欠曝且暗部细节丢失时，你可以增加曝光系数。如果你指定的曝光系数超出设备支持的范围，SDK 会自动调节为设备实际支持的范围。

在 Android 平台上，取值范围为 [-20.0,20.0]；在 iOS 平台上，取值范围为 [-8.0,8.0]。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setcameraexposurefactor__return_values"></a>

### 返回值 [#返回值-22]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-23]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_setcameraexposureposition"></a>

<a id="ariaid-title27"></a>

## SetCameraExposurePosition [#setcameraexposureposition]

设置手动曝光位置。

<a id="api_irtcengine_setcameraexposureposition__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int SetCameraExposurePosition(float positionXinView, float positionYinView);
```

<a id="api_irtcengine_setcameraexposureposition__detailed_desc"></a>

### 详情 [#详情-18]

:::caution
注意：

- 该方法仅适用于 Android 和 iOS。
- 该方法必须在 [EnableVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_enablevideo) 后调用，设置结果在摄像头成功开启后生效，即 SDK 触发 [OnLocalVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onlocalvideostatechanged) 回调返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
- 成功调用该方法后，本地会触发 [OnCameraExposureAreaChanged](/zh-CN/api-reference/rtc/unreal-blueprint/device-management/video-device#callback_irtcengineeventhandler_oncameraexposureareachanged) 回调。
:::

<a id="api_irtcengine_setcameraexposureposition__parameters"></a>

### 参数 [#参数-11]

<ParameterList>
<a id="positionxinview"></a>
<Parameter name="positionXinView">

触摸点相对于视图的横坐标。

</Parameter>
<a id="positionyinview"></a>
<Parameter name="positionYinView">

触摸点相对于视图的纵坐标。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setcameraexposureposition__return_values"></a>

### 返回值 [#返回值-23]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-24]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_setcamerafocuspositioninpreview"></a>

<a id="ariaid-title28"></a>

## SetCameraFocusPositionInPreview [#setcamerafocuspositioninpreview]

设置手动对焦位置，并触发对焦。

<a id="api_irtcengine_setcamerafocuspositioninpreview__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int SetCameraFocusPositionInPreview(float positionX, float positionY);
```

<a id="api_irtcengine_setcamerafocuspositioninpreview__detailed_desc"></a>

### 详情 [#详情-19]

:::caution
注意：

- 该方法仅适用于 Android 和 iOS。
- 该方法必须在 [EnableVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_enablevideo) 后调用，设置结果在摄像头成功开启后生效，即 SDK 触发 [OnLocalVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onlocalvideostatechanged) 回调返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
- 成功调用该方法后，本地会触发 [OnCameraFocusAreaChanged](/zh-CN/api-reference/rtc/unreal-blueprint/device-management/video-device#callback_irtcengineeventhandler_oncamerafocusareachanged) 回调。
:::

<a id="api_irtcengine_setcamerafocuspositioninpreview__parameters"></a>

### 参数 [#参数-12]

<ParameterList>
<a id="positionx"></a>
<Parameter name="positionX">

触摸点相对于视图的横坐标。

</Parameter>
<a id="positiony"></a>
<Parameter name="positionY">

触摸点相对于视图的纵坐标。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setcamerafocuspositioninpreview__return_values"></a>

### 返回值 [#返回值-24]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-25]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_setcameratorchon"></a>

<a id="ariaid-title29"></a>

## SetCameraTorchOn [#setcameratorchon]

设置是否打开闪光灯。

<a id="api_irtcengine_setcameratorchon__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int SetCameraTorchOn(bool isOn);
```

<a id="api_irtcengine_setcameratorchon__detailed_desc"></a>

### 详情 [#详情-20]

:::caution
注意：

- 该方法仅适用于 Android 和 iOS。
- 该方法必须在 [EnableVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_enablevideo) 后调用，设置结果在摄像头成功开启后生效，即 SDK 触发 [OnLocalVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onlocalvideostatechanged) 回调返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
:::

<a id="api_irtcengine_setcameratorchon__parameters"></a>

### 参数 [#参数-13]

<ParameterList>
<a id="ison"></a>
<Parameter name="isOn">

是否打开闪光灯：

- `true`: 打开闪光灯。
- `false`:（默认）关闭闪光灯。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setcameratorchon__return_values"></a>

### 返回值 [#返回值-25]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-26]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="api_irtcengine_setcamerazoomfactor"></a>

<a id="ariaid-title30"></a>

## SetCameraZoomFactor [#setcamerazoomfactor]

设置摄像头缩放比例。

<a id="api_irtcengine_setcamerazoomfactor__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int SetCameraZoomFactor(float factor);
```

<a id="api_irtcengine_setcamerazoomfactor__detailed_desc"></a>

### 详情 [#详情-21]

部分 iOS 设备的后置摄像头为多个摄像头组成的融合镜头，如双摄（广角和超广角）或三摄（广角、超广角和长焦），对于这种具备超广角能力的融合镜头，你可以调用 [SetCameraCapturerConfiguration](/zh-CN/api-reference/rtc/unreal-blueprint/device-management/video-device#api_irtcengine_setcameracapturerconfiguration) 将 cameraFocalLengthType 设置为 CAMERA_FOCAL_LENGTH_DEFAULT (0)（标准镜头），然后调用该方法将摄像头缩放比例设置为小于 1.0 的数值，从而实现超广角的拍摄效果。

:::caution
注意：

- 该方法仅适用于 Android 和 iOS。
- 该方法必须在 [EnableVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_enablevideo) 后调用，设置结果在摄像头成功开启后生效，即 SDK 触发 [OnLocalVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onlocalvideostatechanged) 回调返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。
:::

<a id="api_irtcengine_setcamerazoomfactor__parameters"></a>

### 参数 [#参数-14]

<ParameterList>
<a id="factor-1"></a>
<Parameter name="factor">

摄像头缩放比例。对不支持超广角的设备，取值范围从 1.0 到最大缩放比例；对支持超广角的设备，取值范围从 0.5 到最大缩放比例。你可以通过 [GetCameraMaxZoomFactor](/zh-CN/api-reference/rtc/unreal-blueprint/device-management/video-device#api_irtcengine_getcameramaxzoomfactor) 方法获取设备支持的最大缩放比例。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setcamerazoomfactor__return_values"></a>

### 返回值 [#返回值-26]

- 方法调用成功: 返回设置的 factor 值。
- 方法调用失败: 返回值 &lt; 0。

### 所属接口类 [#所属接口类-27]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="api_ivideodevicecollection_setdevice"></a>

<a id="ariaid-title31"></a>

## SetDevice [#setdevice]

指定设备。

<a id="api_ivideodevicecollection_setdevice__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IVideoDeviceCollection")
	int SetDevice(FString& deviceIdUTF8);
```

<a id="api_ivideodevicecollection_setdevice__parameters"></a>

### 参数 [#参数-15]

<ParameterList>
<a id="deviceid-1"></a>
<Parameter name="deviceId">

设备 ID。插拔设备不会影响 deviceId。

</Parameter>
</ParameterList>

<a id="api_ivideodevicecollection_setdevice__return_values"></a>

### 返回值 [#返回值-27]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-28]

- [IVideoDeviceCollection](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_ivideodevicecollection)

<a id="api_irtcengine_switchcamera"></a>

<a id="ariaid-title32"></a>

## SwitchCamera [#switchcamera]

切换前置/后置摄像头。

<a id="api_irtcengine_switchcamera__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int SwitchCamera();
```

<a id="api_irtcengine_switchcamera__detailed_desc"></a>

<a id="api_irtcengine_switchcamera__desc"></a>

你可以调用该方法在 App 运行期间基于可用摄像头的实际情况来动态切换摄像头，而无需重启视频流或重新配置视频源。

:::caution
注意： 该方法仅适用于 Android 和 iOS。
:::

<a id="api_irtcengine_switchcamera__timing"></a>

### 调用时机 [#调用时机-3]

该方法必须在摄像头成功开启后调用，即 SDK 触发 [OnLocalVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onlocalvideostatechanged) 回调，返回本地视频状态为 LOCAL_VIDEO_STREAM_STATE_CAPTURING (1) 后。

<a id="api_irtcengine_switchcamera__restriction"></a>

### 调用限制 [#调用限制-3]

该方法仅会对第一路摄像头采集的视频流进行摄像头切换操作，即调用 [StartCameraCapture](/zh-CN/api-reference/rtc/unreal-blueprint/video/camera-capture#api_irtcengine_startcameracapture) 时设置为 VIDEO_SOURCE_CAMERA (0) 的视频源。

<a id="api_irtcengine_switchcamera__return_values"></a>

### 返回值 [#返回值-28]

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。详见[错误码](/zh-CN/api-reference/rtc/error-code)了解详情和解决建议。

### 所属接口类 [#所属接口类-29]

- [IRtcEngine](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengine)

<a id="callback_irtcengineeventhandler_oncameraexposureareachanged"></a>

<a id="ariaid-title33"></a>

## OnCameraExposureAreaChanged [#oncameraexposureareachanged]

摄像头曝光区域已改变回调。

<a id="callback_irtcengineeventhandler_oncameraexposureareachanged__prototype"></a>

```cpp
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
	void OnCameraExposureAreaChanged(int x, int y, int width, int height);
```

<a id="callback_irtcengineeventhandler_oncameraexposureareachanged__detailed_desc"></a>

### 详情 [#详情-22]

该回调是由本地用户调用 [SetCameraExposurePosition](/zh-CN/api-reference/rtc/unreal-blueprint/device-management/video-device#api_irtcengine_setcameraexposureposition) 方法改变曝光位置触发的。

:::caution
注意： 该回调仅适用于 Android 和 iOS。
:::

<a id="callback_irtcengineeventhandler_oncameraexposureareachanged__parameters"></a>

### 参数 [#参数-16]

<ParameterList>
<a id="x"></a>
<Parameter name="x">

发生改变的曝光区域的 x 坐标。

</Parameter>
<a id="y"></a>
<Parameter name="y">

发生改变的曝光区域的 y 坐标。

</Parameter>
<a id="width"></a>
<Parameter name="width">

发生改变的曝光区域的宽度。

</Parameter>
<a id="height"></a>
<Parameter name="height">

发生改变的曝光区域的高度。

</Parameter>
</ParameterList>

### 所属接口类 [#所属接口类-30]

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_oncamerafocusareachanged"></a>

<a id="ariaid-title34"></a>

## OnCameraFocusAreaChanged [#oncamerafocusareachanged]

相机对焦区域已改变回调。

<a id="callback_irtcengineeventhandler_oncamerafocusareachanged__prototype"></a>

```cpp
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
	void OnCameraFocusAreaChanged(int x, int y, int width, int height);
```

<a id="callback_irtcengineeventhandler_oncamerafocusareachanged__detailed_desc"></a>

### 详情 [#详情-23]

:::caution
注意： 该回调仅适用于 Android 和 iOS。
:::

<a id="callback_irtcengineeventhandler_oncamerafocusareachanged__parameters"></a>

### 参数 [#参数-17]

<ParameterList>
<a id="x-1"></a>
<Parameter name="x">

发生改变的对焦区域的 x 坐标。

</Parameter>
<a id="y-1"></a>
<Parameter name="y">

发生改变的对焦区域的 y 坐标。

</Parameter>
<a id="width-1"></a>
<Parameter name="width">

发生改变的对焦区域的宽度。

</Parameter>
<a id="height-1"></a>
<Parameter name="height">

发生改变的对焦区域的高度。

</Parameter>
</ParameterList>

### 所属接口类 [#所属接口类-31]

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_oncameraready"></a>

<a id="ariaid-title35"></a>

## OnCameraReady [#oncameraready]

摄像头就绪回调。

<a id="callback_irtcengineeventhandler_oncameraready__prototype"></a>

```cpp
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
	void OnCameraReady();
```

<a id="callback_irtcengineeventhandler_oncameraready__detailed_desc"></a>

### 详情 [#详情-24]

<a id="弃用"></a>

:::error[弃用:]
请改用 [OnLocalVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onlocalvideostatechanged) 中的 LOCAL_VIDEO_STREAM_STATE_CAPTURING(1)。
:::

<a id="callback_irtcengineeventhandler_oncameraready__desc"></a>

该回调提示已成功打开摄像头，可以开始捕获视频。

### 所属接口类 [#所属接口类-32]

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengineeventhandler)

<a id="callback_irtcengineeventhandler_onvideodevicestatechanged"></a>

<a id="ariaid-title36"></a>

## OnVideoDeviceStateChanged [#onvideodevicestatechanged]

视频设备变化回调。

<a id="callback_irtcengineeventhandler_onvideodevicestatechanged__prototype"></a>

```cpp
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
	void OnVideoDeviceStateChanged(const FString& deviceId, int deviceType, int deviceState);
```

<a id="callback_irtcengineeventhandler_onvideodevicestatechanged__detailed_desc"></a>

### 详情 [#详情-25]

<a id="callback_irtcengineeventhandler_onvideodevicestatechanged__desc"></a>

该回调提示系统视频设备状态发生改变，比如被拔出或移除。如果设备已使用外接摄像头采集，外接摄像头被拔开后，视频会中断。

:::note
注： 该回调仅适用于 Windows 和 macOS。
:::

<a id="callback_irtcengineeventhandler_onvideodevicestatechanged__parameters"></a>

### 参数 [#参数-18]

<ParameterList>
<a id="deviceid-2"></a>
<Parameter name="deviceId">

设备 ID。

</Parameter>
<a id="devicetype"></a>
<Parameter name="deviceType">

设备类型。详见 [FENUMWRAP_MEDIA_DEVICE_TYPE](/zh-CN/api-reference/rtc/unreal-blueprint/enum-mediadevicetype)。

</Parameter>
<a id="devicestate"></a>
<Parameter name="deviceState">

设备状态。详见 [EMEDIA_DEVICE_STATE_TYPE](/zh-CN/api-reference/rtc/unreal-blueprint/enum-mediadevicestatetype) 。

</Parameter>
</ParameterList>

### 所属接口类 [#所属接口类-33]

- [IRtcEngineEventHandler](/zh-CN/api-reference/rtc/unreal-blueprint/rtc-interface-class#class_irtcengineeventhandler)
