# 视频基础功能 (/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic)

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

<a id="toc_video_basic"></a>

<a id="api_irtcengine_disablevideo"></a>

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

## DisableVideo [#disablevideo]

关闭视频模块。

<a id="api_irtcengine_disablevideo__prototype"></a>

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

<a id="api_irtcengine_disablevideo__detailed_desc"></a>

该方法用于关闭视频模块。

<a id="api_irtcengine_disablevideo__timing"></a>

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

加入频道前后均可调用：

- 如果在加入频道前调用，则开启纯音频模式。
- 如果在加入频道后调用，则由视频模式切换为纯音频模式，然后再调用 [EnableVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_enablevideo) 方法可开启视频模式。

<a id="api_irtcengine_disablevideo__restriction"></a>

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

- 该方法设置的是内部引擎为禁用状态，在离开频道后仍然有效。
- 调用该方法会重置整个引擎，响应时间较慢。你可以根据实际需求用以下方法来独立控制视频模块的某一项功能：

  - [EnableLocalVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_enablelocalvideo): 是否启动摄像头采集并创建本地视频流。
  - [MuteLocalVideoStream](/zh-CN/api-reference/rtc/unreal-blueprint/publishnsubscribe#api_irtcengine_mutelocalvideostream): 是否发布本地视频流。
  - [MuteRemoteVideoStream](/zh-CN/api-reference/rtc/unreal-blueprint/publishnsubscribe#api_irtcengine_muteremotevideostream): 是否接收并播放远端视频流。
  - [MuteAllRemoteVideoStreams](/zh-CN/api-reference/rtc/unreal-blueprint/publishnsubscribe#api_irtcengine_muteallremotevideostreams): 是否接收并播放所有远端视频流。

<a id="api_irtcengine_disablevideo__related"></a>

### 相关回调 [#相关回调]

成功调用该方法后，远端会触发 [OnUserEnableVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onuserenablevideo) (`false`) 回调。

<a id="api_irtcengine_disablevideo__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_irtcengine_enablelocalvideo"></a>

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

## EnableLocalVideo [#enablelocalvideo]

开关本地视频采集。

<a id="api_irtcengine_enablelocalvideo__prototype"></a>

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

<a id="api_irtcengine_enablelocalvideo__detailed_desc"></a>

### 详情 [#详情]

<a id="api_irtcengine_enablelocalvideo__desc1"></a>

该方法禁用或重新启用本地视频采集，不影响接收远端视频。

调用 [EnableVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_enablevideo) 后，本地视频采集即默认开启。

如果你在频道内调用 [EnableLocalVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_enablelocalvideo)(`false`) 关闭本地视频采集，也会同时停止在频道内发布视频流。如果想要重新开启，则可调用 EnableLocalVideo(`true`)，然后调用 [UpdateChannelMediaOptions](/zh-CN/api-reference/rtc/unreal-blueprint/channel#api_irtcengine_updatechannelmediaoptions) 并设置 options 参数，将本地采集的视频流发布到频道中。

成功禁用或启用本地视频采集后，远端会触发 [OnRemoteVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onremotevideostatechanged) 回调。

:::caution
注意：

- 该方法在加入频道前后均可调用，但加入频道前调用的设置，在加入频道后才会生效。
- 该方法设置内部引擎为启用状态，在离开频道后仍然有效。
:::

<a id="api_irtcengine_enablelocalvideo__parameters"></a>

### 参数 [#参数]

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

是否开启本地视频采集。

- `true`:（默认）开启本地视频采集。
- `false`: 关闭本地视频采集。关闭后，远端用户会接收不到本地用户的视频流；但本地用户依然可以接收远端用户的视频流。设置为 `false` 时，该方法不需要本地有摄像头。

</Parameter>
</ParameterList>

<a id="api_irtcengine_enablelocalvideo__return_values"></a>

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

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

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

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

<a id="api_irtcengine_enablevideo"></a>

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

## EnableVideo [#enablevideo]

启用视频模块。

<a id="api_irtcengine_enablevideo__prototype"></a>

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

<a id="api_irtcengine_enablevideo__detailed_desc"></a>

视频模块默认为关闭状态，需要调用该方法启用。如果后续需要关闭视频模块，需调用 [DisableVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_disablevideo) 方法。

<a id="api_irtcengine_enablevideo__timing"></a>

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

该方法可以在加入频道前或者频道内调用：

- 如果在加入频道前调用，则开启视频模块。
- 如果在纯音频通话中调用，则音频通话将自动切换为视频通话。

<a id="api_irtcengine_enablevideo__restriction"></a>

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

- 该方法设置的是内部引擎为启用状态，在离开频道后仍然有效。
- 调用该方法会重置整个引擎，响应时间较慢。你可以根据实际需求用以下方法来独立控制视频模块的某一项功能：

  - [EnableLocalVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_enablelocalvideo): 是否启动摄像头采集并创建本地视频流。
  - [MuteLocalVideoStream](/zh-CN/api-reference/rtc/unreal-blueprint/publishnsubscribe#api_irtcengine_mutelocalvideostream): 是否发布本地视频流。
  - [MuteRemoteVideoStream](/zh-CN/api-reference/rtc/unreal-blueprint/publishnsubscribe#api_irtcengine_muteremotevideostream): 是否接收并播放远端视频流。
  - [MuteAllRemoteVideoStreams](/zh-CN/api-reference/rtc/unreal-blueprint/publishnsubscribe#api_irtcengine_muteallremotevideostreams): 是否接收并播放所有远端视频流。
- 在频道内调用该方法时，会重置 EnableLocalVideo、MuteRemoteVideoStream 和 MuteAllRemoteVideoStreams 的设置，需谨慎使用。

<a id="api_irtcengine_enablevideo__related"></a>

### 相关回调 [#相关回调-1]

成功调用该方法后，远端会触发 [OnRemoteVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onremotevideostatechanged) 回调。

<a id="api_irtcengine_enablevideo__return_values"></a>

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

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

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

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

<a id="api_irtcengine_setvideoencoderconfiguration"></a>

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

## SetVideoEncoderConfiguration [#setvideoencoderconfiguration]

设置视频编码属性。

<a id="api_irtcengine_setvideoencoderconfiguration__prototype"></a>

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

<a id="api_irtcengine_setvideoencoderconfiguration__detailed_desc"></a>

<a id="api_irtcengine_setvideoencoderconfiguration__desc"></a>

设置本地视频的编码属性。每一种视频编码属性对应一系列视频相关参数设置，包含分辨率、帧率和码率。

<a id="api_irtcengine_setvideoencoderconfiguration__timing"></a>

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

该方法在加入频道前后都能调用。如果用户在加入频道后不需要重新设置视频编码属性，则建议在 [EnableVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_enablevideo) 前调用该方法，可以加快首帧出图的时间。

<a id="api_irtcengine_setvideoencoderconfiguration__restriction"></a>

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

- 该方法的 config 参数设置是在理想网络状态下能达到的最大值。如果网络状态不好，视频引擎便不能使用该 config 渲染本地视频，它会自动降低到一个合适的视频参数设置。

<a id="api_irtcengine_setvideoencoderconfiguration__parameters"></a>

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

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

视频编码参数配置。详见 [FUABT_VideoEncoderConfiguration](/zh-CN/api-reference/rtc/unreal-blueprint/class-videoencoderconfiguration)。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setvideoencoderconfiguration__return_values"></a>

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

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

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

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

<a id="api_irtcengineex_setvideoencoderconfigurationex"></a>

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

## SetVideoEncoderConfigurationEx [#setvideoencoderconfigurationex]

设置视频编码属性。

<a id="api_irtcengineex_setvideoencoderconfigurationex__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int SetVideoEncoderConfigurationEx(const FVideoEncoderConfiguration& config, const FRtcConnection& connection);
```

<a id="api_irtcengineex_setvideoencoderconfigurationex__detailed_desc"></a>

<a id="api_irtcengineex_setvideoencoderconfigurationex__desc"></a>

设置本地视频的编码属性。每一种视频编码属性对应一系列视频相关参数设置，包含分辨率、帧率和码率。

<a id="api_irtcengineex_setvideoencoderconfigurationex__timing"></a>

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

该方法需要在 [JoinChannelEx](/zh-CN/api-reference/rtc/unreal-blueprint/channel#api_irtcengineex_joinchannelex) 之后调用。

<a id="api_irtcengineex_setvideoencoderconfigurationex__restriction"></a>

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

该方法的 config 参数设置是在理想网络状态下能达到的最大值。如果网络状态不好，视频引擎便不能使用该 config 渲染本地视频，它会自动降低到一个合适的视频参数设置。

<a id="api_irtcengineex_setvideoencoderconfigurationex__parameters"></a>

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

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

视频编码参数配置。详见 [FUABT_VideoEncoderConfiguration](/zh-CN/api-reference/rtc/unreal-blueprint/class-videoencoderconfiguration)。

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

Connection 信息。详见 [FUABT_RtcConnection](/zh-CN/api-reference/rtc/unreal-blueprint/class-rtcconnection)。

</Parameter>
</ParameterList>

<a id="api_irtcengineex_setvideoencoderconfigurationex__return_values"></a>

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

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

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

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

<a id="api_irtcengine_setvideoscenario"></a>

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

## SetVideoScenario [#setvideoscenario]

设置视频业务场景。

<a id="api_irtcengine_setvideoscenario__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int SetVideoScenario(EVIDEO_APPLICATION_SCENARIO_TYPE scenarioType);
```

<a id="api_irtcengine_setvideoscenario__detailed_desc"></a>

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

成功调用该方法设置视频业务场景后，SDK 会基于指定场景启用最佳实践策略，自动调整关键性能指标，进而优化视频体验质量。

:::caution
注意： 该方法需要在加入频道前调用。
:::

<a id="api_irtcengine_setvideoscenario__parameters"></a>

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

<ParameterList>
<a id="scenariotype"></a>
<Parameter name="scenarioType">

视频业务场景。详见 [EVIDEO_APPLICATION_SCENARIO_TYPE](/zh-CN/api-reference/rtc/unreal-blueprint/enum-videoapplicationscenariotype)。

<a id="api_irtcengine_setvideoscenario__meeting"></a>

APPLICATION_SCENARIO_MEETING (1) 适用于会议场景。SDK 会针对该场景启用以下策略：

- 针对会议场景对小流码率要求较高的情况，自动启用多项抗弱网技术，提升小流的抗弱网能力，确保多路流订阅时接收端的流畅性。
- 实时监测接收端大流的订阅人数，根据订阅人数动态调节大流配置：

  - 无人订阅大流时，会自动降低大流的码率和帧率，节省上行带宽和消耗。
  - 有人订阅大流时，大流会重置为用户最近一次调用 [SetVideoEncoderConfiguration](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_setvideoencoderconfiguration) 时的 [FUABT_VideoEncoderConfiguration](/zh-CN/api-reference/rtc/unreal-blueprint/class-videoencoderconfiguration) 配置。如果用户此前没有进行设置，则使用如下值：

    - 视频分辨率：桌面端为 1280 × 720；移动端为 960 × 540
    - 视频帧率：15 fps
    - 码率：桌面端为 1600 Kbps；移动端为 1000 Kbps
- 实时监测接收端小流的订阅人数，根据订阅人数动态开启和关闭小流：

  :::note
  注： 如果用户已调用 [SetDualStreamMode](/zh-CN/api-reference/rtc/unreal-blueprint/publishnsubscribe#api_irtcengine_setdualstreammode2) 将小流设置为始终不发送 (DISABLE_SIMULCAST_STREAM)，会议场景对小流的动态开关不生效。
  :::

  - 无人订阅小流时，自动关闭小流，节省上行带宽和消耗。
  - 有人订阅小流时，开启小流并重置为用户最近一次调用 SetDualStreamMode 时的 [FSimulcastStreamConfig](/zh-CN/api-reference/rtc/unreal-blueprint/class-simulcaststreamconfig) 配置。如果用户此前没有进行设置，则使用如下值：

    - 视频分辨率：480 × 272
    - 视频帧率：15 fps
    - 码率：500 Kbps

<a id="api_irtcengine_setvideoscenario__1v1"></a>

APPLICATION_SCENARIO_1V1 (2) 适用于[视频 1v1 通话](/zh-CN/solutions/one-to-one-live/rtm)场景。针对该场景低延迟、高画质的体验要求，SDK 进行了策略调优，提升了画质、首帧出图、中低端机延迟及弱网流畅度等性能表现。

<a id="api_irtcengine_setvideoscenario__liveshow"></a>

APPLICATION_SCENARIO_LIVESHOW (3) 适用于秀场直播场景。针对该场景对首帧出图时间和画质清晰度的高要求，SDK 进行了策略调优，例如，默认开启音视频帧加速渲染来提升首帧出图体验，无需再额外调用 [EnableInstantMediaRendering](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-rendering#api_irtcengine_enableinstantmediarendering)，同时会默认开启 B 帧来确保较高的图像质量、提高传输效率。此外，也增强了在弱网环境和低端设备上的画质和流畅度表现。

</Parameter>
</ParameterList>

<a id="api_irtcengine_setvideoscenario__return_values"></a>

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

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

  - -1：一般性的错误（未明确归类）。
  - -4：不支持设置视频业务场景。可能的原因是当前使用的是音频 SDK。
  - -7：IRtcEngine 对象尚未初始化。你需要在调用该方法前成功初始化 IRtcEngine 对象。

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

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

<a id="api_irtcengine_startpreview2"></a>

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

## StartPreview [#startpreview]

开启视频预览并指定预览的视频源。

<a id="api_irtcengine_startpreview2__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int StartPreview(EVIDEO_SOURCE_TYPE sourceType = EVIDEO_SOURCE_TYPE::VIDEO_SOURCE_CAMERA_PRIMARY);
```

<a id="api_irtcengine_startpreview2__detailed_desc"></a>

该方法用于启动本地视频预览，并指定出现在预览画面中的视频源。

<a id="api_irtcengine_startpreview2__timing"></a>

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

该方法必须在 [EnableVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_enablevideo) 和 [SetupLocalVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-rendering#api_irtcengine_setuplocalvideo) 之后调用。

<a id="api_irtcengine_startpreview2__restriction"></a>

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

- 本地预览默认开启镜像功能。
- 在离开频道后，本地预览依然处于开启状态。你需要调用 [StopPreview](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_stoppreview2) 关闭本地预览。

<a id="api_irtcengine_startpreview2__parameters"></a>

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

<ParameterList>
<a id="sourcetype"></a>
<Parameter name="sourceType">

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

</Parameter>
</ParameterList>

<a id="api_irtcengine_startpreview2__return_values"></a>

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

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

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

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

<a id="api_irtcengine_stoppreview2"></a>

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

## StopPreview [#stoppreview]

停止视频预览。

<a id="api_irtcengine_stoppreview2__prototype"></a>

```cpp
UFUNCTION(BlueprintCallable, Category = "Agora|IRtcEngine")
	int StopPreview(EVIDEO_SOURCE_TYPE sourceType = EVIDEO_SOURCE_TYPE::VIDEO_SOURCE_CAMERA_PRIMARY);
```

<a id="api_irtcengine_stoppreview2__detailed_desc"></a>

<a id="api_irtcengine_stoppreview2__scenario"></a>

### 适用场景 [#适用场景]

调用 [StartPreview](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_startpreview2) 开启预览后，如果你想关闭本地视频预览，请调用该方法。

<a id="api_irtcengine_stoppreview2__timing"></a>

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

请在加入频道前或离开频道后调用该方法。

<a id="api_irtcengine_stoppreview2__restriction"></a>

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

无。

<a id="api_irtcengine_stoppreview2__parameters"></a>

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

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

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

</Parameter>
</ParameterList>

<a id="api_irtcengine_stoppreview2__return_values"></a>

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

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

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

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

<a id="callback_irtcengineeventhandler_onfirstlocalvideoframe"></a>

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

## OnFirstLocalVideoFrame [#onfirstlocalvideoframe]

已显示本地视频首帧回调。

<a id="callback_irtcengineeventhandler_onfirstlocalvideoframe__prototype"></a>

```cpp
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
	void OnFirstLocalVideoFrame(EVIDEO_SOURCE_TYPE source, int width, int height, int elapsed);
```

<a id="callback_irtcengineeventhandler_onfirstlocalvideoframe__detailed_desc"></a>

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

<a id="callback_irtcengineeventhandler_onfirstlocalvideoframe__desc"></a>

本地视频首帧显示在本地视图上时，SDK 会触发此回调。

<a id="callback_irtcengineeventhandler_onfirstlocalvideoframe__parameters"></a>

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

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

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

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

本地渲染视频的宽 (px) 。

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

本地渲染视频的高 (px)。

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

从调用 [JoinChannelWithOptions](/zh-CN/api-reference/rtc/unreal-blueprint/channel#api_irtcengine_joinchannel2) 加入频道时到发生此事件过去的时间（毫秒）。如果在加入频道前调用了 [StartPreview](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_startpreview2)，则该参数表示从调用 StartPreview 开启本地视频预览到发生此事件过去的时间。

</Parameter>
</ParameterList>

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

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

<a id="callback_irtcengineeventhandler_onfirstlocalvideoframepublished"></a>

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

## OnFirstLocalVideoFramePublished [#onfirstlocalvideoframepublished]

已发布本地视频首帧回调。

<a id="callback_irtcengineeventhandler_onfirstlocalvideoframepublished__prototype"></a>

```cpp
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
	void OnFirstLocalVideoFramePublished(EVIDEO_SOURCE_TYPE source, int elapsed);
```

<a id="callback_irtcengineeventhandler_onfirstlocalvideoframepublished__detailed_desc"></a>

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

SDK 会在以下三种时机触发该回调：

- 开启本地视频模块的情况下，调用 [JoinChannelWithOptions](/zh-CN/api-reference/rtc/unreal-blueprint/channel#api_irtcengine_joinchannel2) 成功加入频道后。
- 调用 [MuteLocalVideoStream](/zh-CN/api-reference/rtc/unreal-blueprint/publishnsubscribe#api_irtcengine_mutelocalvideostream)(`true`)，再调用 MuteLocalVideoStream(`false`) 后。
- 调用 [DisableVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_disablevideo)，再调用 [EnableVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_enablevideo) 后。

<a id="callback_irtcengineeventhandler_onfirstlocalvideoframepublished__parameters"></a>

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

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

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

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

从调用 JoinChannelWithOptions 方法到触发该回调的时间间隔（毫秒）。

</Parameter>
</ParameterList>

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

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

<a id="callback_irtcengineeventhandler_onfirstremotevideodecoded"></a>

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

## OnFirstRemoteVideoDecoded [#onfirstremotevideodecoded]

已接收到远端视频并完成解码回调。

<a id="callback_irtcengineeventhandler_onfirstremotevideodecoded__prototype"></a>

```cpp
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
	void OnFirstRemoteVideoDecoded(int64 uid, int width, int height, int elapsed);
```

<a id="callback_irtcengineeventhandler_onfirstremotevideodecoded__detailed_desc"></a>

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

SDK 会在以下时机触发该回调：

<a id="callback_irtcengineeventhandler_onfirstremotevideodecoded__ul_xcz_f34_npb"></a>

- 远端用户首次上线后发送视频。
- 远端用户视频离线再上线后发送视频。出现这种中断的可能原因包括：

  - 远端用户离开频道。
  - 远端用户掉线。
  - 远端用户调用 [DisableVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_disablevideo) 方法关闭视频模块。

<a id="callback_irtcengineeventhandler_onfirstremotevideodecoded__parameters"></a>

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

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

用户 ID，指定是哪个用户的视频流。

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

视频流宽（px）。

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

视频流高（px）。

</Parameter>
<a id="elapsed-2"></a>
<Parameter name="elapsed">

从本地调用 JoinChannelWithOptions 开始到该回调触发的延迟（毫秒）。

</Parameter>
</ParameterList>

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

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

<a id="callback_irtcengineeventhandler_onfirstremotevideoframe"></a>

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

## OnFirstRemoteVideoFrame [#onfirstremotevideoframe]

渲染器已接收首帧远端视频回调。

<a id="callback_irtcengineeventhandler_onfirstremotevideoframe__prototype"></a>

```cpp
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
	void OnFirstRemoteVideoFrame(int64 uid, int width, int height, int elapsed);
```

<a id="callback_irtcengineeventhandler_onfirstremotevideoframe__detailed_desc"></a>

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

:::caution
注意： 该回调只在 SDK 渲染时才会触发；如果用户采用自定义视频渲染则不会触发，客户需要通过 SDK 以外的方法自行实现。
:::

<a id="callback_irtcengineeventhandler_onfirstremotevideoframe__parameters"></a>

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

<ParameterList>
<a id="userid"></a>
<Parameter name="userId">

用户 ID，指定是哪个用户的视频流。

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

视频流宽（px）。

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

视频流高（px）。

</Parameter>
<a id="elapsed-3"></a>
<Parameter name="elapsed">

从本地调用 JoinChannelWithOptions 到发生此事件过去的时间（毫秒）。

</Parameter>
</ParameterList>

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

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

<a id="callback_irtcengineeventhandler_onlocalvideostatechanged"></a>

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

## OnLocalVideoStateChanged [#onlocalvideostatechanged]

本地视频状态发生改变回调。

<a id="callback_irtcengineeventhandler_onlocalvideostatechanged__prototype"></a>

```cpp
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
	void OnLocalVideoStateChanged(EVIDEO_SOURCE_TYPE source, ELOCAL_VIDEO_STREAM_STATE state, ELOCAL_VIDEO_STREAM_REASON reason);
```

<a id="callback_irtcengineeventhandler_onlocalvideostatechanged__detailed_desc"></a>

<a id="callback_irtcengineeventhandler_onlocalvideostatechanged__desc1"></a>

本地视频的状态发生改变时，SDK 会触发该回调，报告当前的本地视频状态以及状态改变的原因。

<a id="callback_irtcengineeventhandler_onlocalvideostatechanged__scenario"></a>

### 适用场景 [#适用场景-1]

你可以通过该回调及时了解本地视频流的状态变化，并根据状态改变的原因采取相应的措施，更好地管理和调试视频流相关的问题。

<a id="callback_irtcengineeventhandler_onlocalvideostatechanged__timing"></a>

### 触发时机 [#触发时机]

- SDK 会在如下情况触发该回调，且 state 为 LOCAL_VIDEO_STREAM_STATE_FAILED，reason 为 `LOCAL_VIDEO_STREAM_REASON_CAPTURE_FAILURE`：

  - 应用退到后台，系统回收摄像头。
  - Android 9 及以上版本，App 切后台一段时间后，系统会收回相机权限。
  - Android 6 及以上版本，如果相机被第三方应用占用一段时间后释放，则 SDK 会触发该回调，并报告 OnLocalVideoStateChanged(`LOCAL_VIDEO_STREAM_STATE_CAPTURING，LOCAL_VIDEO_STREAM_REASON_OK`) 回调。
  - 摄像头正常启动，但连续 4 秒都没有输出采集的视频。
- 当摄像头输出采集的视频帧时，如果 SDK 检测到连续 15 个重复的视频帧，会触发该回调，且 state 为 LOCAL_VIDEO_STREAM_STATE_CAPTURING，reason 为 LOCAL_VIDEO_STREAM_REASON_CAPTURE_FAILURE。

  :::note
  注：

  - 帧重复检测仅针对分辨率大于 200 × 200、帧率大于等于 10 fps、码率小于 20 Kbps 的视频帧。
  - 如果视频采集出现异常，正常情况下可以通过该回调的 `reason` 参数来排查问题。但在部分设备上，采集出现问题时（如卡死） Android 系统不会抛出任何错误回调，因此 SDK 无法报告本地视频状态改变的原因，此时你可以通过下列方式来判断采集是否无帧：该回调报告 `state` 为 `LOCAL_VIDEO_STREAM_STATE_CAPTURING` 或 `LOCAL_VIDEO_STREAM_STATE_ENCODING`，且 [OnLocalVideoStats](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onlocalvideostats) 回调的 `captureFrameRate` 为 0。
  :::

<a id="callback_irtcengineeventhandler_onlocalvideostatechanged__parameters"></a>

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

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

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

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

本地视频状态，详见 [ELOCAL_VIDEO_STREAM_STATE](/zh-CN/api-reference/rtc/unreal-blueprint/enum-localvideostreamstate)。

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

本地视频状态改变原因，详见 [ELOCAL_VIDEO_STREAM_REASON](/zh-CN/api-reference/rtc/unreal-blueprint/enum-localvideostreamreason)。

</Parameter>
</ParameterList>

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

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

<a id="callback_irtcengineeventhandler_onlocalvideostats"></a>

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

## OnLocalVideoStats [#onlocalvideostats]

本地视频流统计信息回调。

<a id="callback_irtcengineeventhandler_onlocalvideostats__prototype"></a>

```cpp
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
	void OnLocalVideoStats(EVIDEO_SOURCE_TYPE source, const FLocalVideoStats& stats);
```

<a id="callback_irtcengineeventhandler_onlocalvideostats__detailed_desc"></a>

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

<a id="callback_irtcengineeventhandler_onlocalvideostats__desc"></a>

该回调描述本地设备发送视频流的统计信息，每 2 秒触发一次。

<a id="callback_irtcengineeventhandler_onlocalvideostats__parameters"></a>

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

<ParameterList>
<a id="source-3"></a>
<Parameter name="source">

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

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

本地视频流统计信息。详见 [FLocalVideoStats](/zh-CN/api-reference/rtc/unreal-blueprint/class-localvideostats)。

</Parameter>
</ParameterList>

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

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

<a id="callback_irtcengineeventhandler_onremotevideostatechanged"></a>

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

## OnRemoteVideoStateChanged [#onremotevideostatechanged]

远端视频状态发生改变回调。

<a id="callback_irtcengineeventhandler_onremotevideostatechanged__prototype"></a>

```cpp
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
	void OnRemoteVideoStateChanged(int64 uid, EREMOTE_VIDEO_STATE state, EREMOTE_VIDEO_STATE_REASON reason, int elapsed);
```

<a id="callback_irtcengineeventhandler_onremotevideostatechanged__detailed_desc"></a>

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

<a id="callback_irtcengineeventhandler_onremotevideostatechanged__note"></a>

:::caution
注意： 频道内的用户（通信场景）或主播（直播场景）人数超过 32 人时，该回调可能不准确。
:::

<a id="callback_irtcengineeventhandler_onremotevideostatechanged__parameters"></a>

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

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

发生视频状态改变的远端用户 ID。

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

远端视频流状态，详见 [EREMOTE_VIDEO_STATE](/zh-CN/api-reference/rtc/unreal-blueprint/enum-remotevideostate)。

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

远端视频流状态改变的具体原因，详见 [EREMOTE_VIDEO_STATE_REASON](/zh-CN/api-reference/rtc/unreal-blueprint/enum-remotevideostatereason)。

</Parameter>
<a id="elapsed-4"></a>
<Parameter name="elapsed">

从本地用户调用 JoinChannelWithOptions 方法到发生本事件经历的时间，单位为毫秒。

</Parameter>
</ParameterList>

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

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

<a id="callback_irtcengineeventhandler_onremotevideostats"></a>

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

## OnRemoteVideoStats [#onremotevideostats]

通话中远端视频流的统计信息回调。

<a id="callback_irtcengineeventhandler_onremotevideostats__prototype"></a>

```cpp
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
	void OnRemoteVideoStats(const FRemoteVideoStats& stats);
```

<a id="callback_irtcengineeventhandler_onremotevideostats__detailed_desc"></a>

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

<a id="callback_irtcengineeventhandler_onremotevideostats__desc"></a>

该回调描述远端用户在通话中端到端的视频流统计信息， 针对每个远端用户/主播每 2 秒触发一次。如果远端同时存在多个用户/主播， 该回调每 2 秒会被触发多次。

<a id="callback_irtcengineeventhandler_onremotevideostats__parameters"></a>

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

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

远端视频统计数据。详见 [FRemoteVideoStats](/zh-CN/api-reference/rtc/unreal-blueprint/class-remotevideostats)。

</Parameter>
</ParameterList>

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

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

<a id="callback_irtcengineeventhandler_onremotevideotransportstats"></a>

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

## OnRemoteVideoTransportStats [#onremotevideotransportstats]

通话中远端视频流传输的统计信息回调。

<a id="callback_irtcengineeventhandler_onremotevideotransportstats__prototype"></a>

```cpp
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
	void OnRemoteVideoTransportStats(int64 uid, int delay, int lost, int rxKBitRate);
```

<a id="callback_irtcengineeventhandler_onremotevideotransportstats__detailed_desc"></a>

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

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

:::error[弃用：]
该回调已被废弃，请改用 [OnRemoteVideoStats](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onremotevideostats)。
:::

<a id="callback_irtcengineeventhandler_onremotevideotransportstats__desc1"></a>

该回调描述远端用户通话中端到端的网络统计信息，通过视频包计算，用客观的数据，如丢包、 网络延迟等，展示当前网络状态。

<a id="callback_irtcengineeventhandler_onremotevideotransportstats__desc2"></a>

通话中，当用户收到远端用户/主播发送的视频数据包后，会每 2 秒触发一次该回调。

<a id="callback_irtcengineeventhandler_onremotevideotransportstats__parameters"></a>

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

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

用户 ID，指定是哪个用户/主播的视频包。

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

视频包从发送端到接收端的延时（毫秒）。

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

视频包从发送端到接收端的丢包率 (%)。

</Parameter>
<a id="rxkbitrate"></a>
<Parameter name="rxKBitRate">

远端视频包的接收码率（Kbps）。

</Parameter>
</ParameterList>

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

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

<a id="callback_irtcengineeventhandler_onuserenablelocalvideo"></a>

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

## OnUserEnableLocalVideo [#onuserenablelocalvideo]

远端用户开/关本地视频采集回调。

<a id="callback_irtcengineeventhandler_onuserenablelocalvideo__prototype"></a>

```cpp
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
	void OnUserEnableLocalVideo(int64 uid, bool enabled);
```

<a id="callback_irtcengineeventhandler_onuserenablelocalvideo__detailed_desc"></a>

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

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

:::error[弃用：]
该回调已废弃，请改用 [OnRemoteVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onremotevideostatechanged) 回调的如下枚举：

- REMOTE_VIDEO_STATE_STOPPED(0) 和 REMOTE_VIDEO_STATE_REASON_REMOTE_MUTED(5)。
- REMOTE_VIDEO_STATE_DECODING (2) 和 REMOTE_VIDEO_STATE_REASON_REMOTE_UNMUTED(6)。
:::

<a id="callback_irtcengineeventhandler_onuserenablelocalvideo__desc"></a>

该回调是由远端用户调用 [EnableLocalVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_enablelocalvideo) 方法开启或关闭视频采集触发的。

<a id="callback_irtcengineeventhandler_onuserenablelocalvideo__parameters"></a>

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

<ParameterList>
<a id="uid-3"></a>
<Parameter name="uid">

用户 ID，提示是哪个用户的视频流。

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

远端用户是否启用视频采集：

- `true`: 该用户已启用视频功能。启用后，其他用户可以接收到该用户的视频流。
- `false`: 该用户已关闭视频功能。关闭后，该用户仍然可以接收其他用户的视频流，但其他用户接收不到该用户的视频流。

</Parameter>
</ParameterList>

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

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

<a id="callback_irtcengineeventhandler_onuserenablevideo"></a>

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

## OnUserEnableVideo [#onuserenablevideo]

远端用户开/关视频模块回调。

<a id="callback_irtcengineeventhandler_onuserenablevideo__prototype"></a>

```cpp
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
	void OnUserEnableVideo(int64 uid, bool enabled);
```

<a id="callback_irtcengineeventhandler_onuserenablevideo__detailed_desc"></a>

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

<a id="callback_irtcengineeventhandler_onuserenablevideo__desc1"></a>

关闭视频功能是指该用户只能进行语音通话，不能显示、发送自己的视频，也不能接收、显示别人的视频。

该回调是由远端用户调用 [EnableVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_enablevideo) 或 [DisableVideo](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#api_irtcengine_disablevideo) 方法开启或关闭视频模块触发的。

<a id="callback_irtcengineeventhandler_onuserenablevideo__parameters"></a>

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

<ParameterList>
<a id="uid-4"></a>
<Parameter name="uid">

用户 ID，提示是哪个用户的视频流。

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

- `true`: 该用户已启用视频功能。
- `false`: 该用户已关闭视频功能。

</Parameter>
</ParameterList>

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

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

<a id="callback_irtcengineeventhandler_onusermutevideo"></a>

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

## OnUserMuteVideo [#onusermutevideo]

远端用户取消或恢复发布视频流回调。

<a id="callback_irtcengineeventhandler_onusermutevideo__prototype"></a>

```cpp
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
	void OnUserMuteVideo(int64 uid, bool muted);
```

<a id="callback_irtcengineeventhandler_onusermutevideo__detailed_desc"></a>

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

当远端用户调用 [MuteLocalVideoStream](/zh-CN/api-reference/rtc/unreal-blueprint/publishnsubscribe#api_irtcengine_mutelocalvideostream) 取消或恢复发布视频流时，SDK 会触发该回调向本地用户报告远端用户的发流状况。

:::caution
注意： 当频道内的用户（通信场景）或主播（直播场景）的人数超过 32 人时，该回调可能不准确。
:::

<a id="callback_irtcengineeventhandler_onusermutevideo__parameters"></a>

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

<ParameterList>
<a id="uid-5"></a>
<Parameter name="uid">

远端用户 ID。

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

远端用户是否取消发布视频流：

- `true`: 取消发布视频流。
- `false`: 发布视频流。

</Parameter>
</ParameterList>

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

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

<a id="callback_irtcengineeventhandler_onvideopublishstatechanged"></a>

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

## OnVideoPublishStateChanged [#onvideopublishstatechanged]

视频发布状态改变回调。

<a id="callback_irtcengineeventhandler_onvideopublishstatechanged__prototype"></a>

```cpp
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
	void OnVideoPublishStateChanged(EVIDEO_SOURCE_TYPE source, const FString& channel, ESTREAM_PUBLISH_STATE oldState, ESTREAM_PUBLISH_STATE newState, int elapseSinceLastState);
```

<a id="callback_irtcengineeventhandler_onvideopublishstatechanged__detailed_desc"></a>

<a id="callback_irtcengineeventhandler_onvideopublishstatechanged__parameters"></a>

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

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

频道名。

</Parameter>
<a id="source-4"></a>
<Parameter name="source">

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

</Parameter>
<a id="oldstate"></a>
<Parameter name="oldState">

之前的发布状态，详见 [ESTREAM_PUBLISH_STATE](/zh-CN/api-reference/rtc/unreal-blueprint/enum-streampublishstate)。

</Parameter>
<a id="newstate"></a>
<Parameter name="newState">

当前的发布状态，详见 ESTREAM_PUBLISH_STATE。

</Parameter>
<a id="elapsesincelaststate"></a>
<Parameter name="elapseSinceLastState">

两次状态变化时间间隔（毫秒）。

</Parameter>
</ParameterList>

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

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

<a id="callback_irtcengineeventhandler_onvideosizechanged"></a>

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

## OnVideoSizeChanged [#onvideosizechanged]

本地或远端视频大小和旋转信息发生改变回调。

<a id="callback_irtcengineeventhandler_onvideosizechanged__prototype"></a>

```cpp
UFUNCTION(BlueprintNativeEvent, Category = "Agora|Event")
	void OnVideoSizeChanged(EVIDEO_SOURCE_TYPE sourceType, int64 uid, int width, int height, int rotation);
```

<a id="callback_irtcengineeventhandler_onvideosizechanged__parameters"></a>

### 参数 [#参数-19]

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

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

</Parameter>
<a id="uid-6"></a>
<Parameter name="uid">

图像尺寸和旋转信息发生变化的用户 ID（本地用户的 uid 为 0。此时视频为本地用户的视频预览）。

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

视频流的宽度（像素）。

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

视频流的高度（像素）。

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

旋转信息，取值范围 [0,360)。

:::note
注： 在 iOS 平台上，该参数值始终为 0。
:::

</Parameter>
</ParameterList>

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

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

<a id="callback_irtcengineeventhandler_onvideostopped"></a>

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

## OnVideoStopped [#onvideostopped]

视频功能已停止回调。

<a id="callback_irtcengineeventhandler_onvideostopped__prototype"></a>

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

<a id="callback_irtcengineeventhandler_onvideostopped__detailed_desc"></a>

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

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

:::error[弃用：]
请改用 [OnLocalVideoStateChanged](/zh-CN/api-reference/rtc/unreal-blueprint/video/video-basic#callback_irtcengineeventhandler_onlocalvideostatechanged) 回调中的 LOCAL_VIDEO_STREAM_STATE_STOPPED(0)。
:::

<a id="callback_irtcengineeventhandler_onvideostopped__desc"></a>

App 如需在停止视频后对 view 做其他处理（比如显示其他画面），可以在这个回调中进行。

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

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