# agora_rtc_event_handler_t结构体 参考 (/zh-CN/api-reference/rtsa/c/structagora-rtc-event-handler-t)

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

<a id="details"></a>

<a id="header-details"></a>

包含事件处理回调的结构体。

<a id="doc-variable-members"></a>

<a id="header-doc-variable-members"></a>

## 结构体成员变量说明 [#结构体成员变量说明]

<a id="a6c7a08a918ea7ced6cbd5b41b18533c6"></a>

<a id="af50f0b13389c28ffab6f185d6dc7e18c"></a>

### on_audio_data [#on_audio_data]

<ApiSignature>

void(* on_audio_data)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id, uint32_t uid, uint16_t sent_ts, const void *data_ptr, size_t data_len, const [audio_frame_info_t](/zh-CN/api-reference/rtsa/c/structaudio-frame-info-t) *info_ptr)

</ApiSignature>

收到频道内远端用户的音频帧回调。

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
<Parameter name="uid" direction="[in]">

远端用户的用户 ID。

</Parameter>
<Parameter name="sent_ts" direction="[in]">

Unix 时间戳（ms）。标识远端用户调用 [agora_rtc_send_audio_data](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a0a00045d34a87e7a3798c6c906f9e197) 的时间。

</Parameter>
<Parameter name="data_ptr" direction="[in]">

音频包数据。

</Parameter>
<Parameter name="data_len" direction="[in]">

音频包数据长度（字节）。

</Parameter>
<Parameter name="info_ptr" direction="[in]">

音频帧信息。详见 [audio_frame_info_t](/zh-CN/api-reference/rtsa/c/structaudio-frame-info-t) 。

</Parameter>
</ParameterList>

<a id="ac571090198206c2fa3bc68fb8cee42d0"></a>

<a id="a93ef61674bc7c4d5f53fe2b59aa38e88"></a>

### on_connection_lost [#on_connection_lost]

<ApiSignature>

void(* on_connection_lost)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id)

</ApiSignature>

连接丢失回调。

当 SDK 与服务器断开连接超过 10 秒时，SDK 会触发该回调。

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
</ParameterList>

<a id="a57ad737a0443bb604e11ae6c6b37fd5d"></a>

<a id="a7a67b6ffff8d0758afe5b38a91e3a6e3"></a>

### on_error [#on_error]

<ApiSignature>

void(* on_error)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id, int code, const char *msg)

</ApiSignature>

发生错误回调。

该回调方法表示 SDK 运行时出现了（网络或媒体相关的）错误。 通常情况下，SDK 上报的错误意味着 SDK 无法自动恢复，需要 App 干预或提示用户。

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
<Parameter name="code" direction="[in]">

错误码，详见 [agora_err_code_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#aec639f854206054cb48acde88e998abf) 。

</Parameter>
<Parameter name="msg" direction="[in]">

错误描述。

</Parameter>
</ParameterList>

<a id="a3006c067f8a7deb521580c5044f27ff8"></a>

<a id="af1fb7d73977c5d23301bed8066b92024"></a>

### on_join_channel_success [#on_join_channel_success]

<ApiSignature>

void(* on_join_channel_success)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id, uint32_t uid, int elapsed_ms)

</ApiSignature>

加入频道成功回调。

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
<Parameter name="uid" direction="[in]">

本地用户 ID。

</Parameter>
<Parameter name="elapsed_ms" direction="[in]">

从频道成功创建开始到发生此回调过去的时间（毫秒）。

</Parameter>
</ParameterList>

<a id="ab698db32db28c348552915a3a1337bf8"></a>

<a id="a67e5f4137e45db389ca5f69866135715"></a>

### on_key_frame_gen_req [#on_key_frame_gen_req]

<ApiSignature>

void(* on_key_frame_gen_req)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id, uint32_t uid, [video_stream_type_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a662fba13746193012793896faeb278ed) stream_type)

</ApiSignature>

频道内远端用户请求关键帧回调。

收到此回调后，发送端需生成一个新的关键帧。

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
<Parameter name="uid" direction="[in]">

远端用户的用户 ID。

</Parameter>
<Parameter name="stream_type" direction="[in]">

需要生成关键帧的视频流类型，详见 [video_stream_type_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a662fba13746193012793896faeb278ed) 。

</Parameter>
</ParameterList>

<a id="aa05b9b9e42a2018a913ac18bf0022919"></a>

<a id="af300f9a2a90391ce3ef8bbca2217bd91"></a>

### on_license_validation_failure [#on_license_validation_failure]

<ApiSignature>

void(* on_license_validation_failure)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id, int error)

</ApiSignature>

设备 License 验证失败回调。

加入频道时，声网服务器会验证你在 [agora_rtc_init](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a6187076d897f0b56cb20942368c15aaa) 中传入的 License。如果 License 验证失败，则 SDK 会触发该回调，你可以根据收到的错误码处理问题。

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
<Parameter name="error" direction="[in]">

错误码。详见 [license_err_reason_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a618863d233cf869b03dd5f99fc04b19b) 。

</Parameter>
</ParameterList>

<a id="a96f899b78b34a3ef989bc094cd6327e9"></a>

<a id="a2b677c4cf470812e365d7d20b958de77"></a>

### on_local_user_registered [#on_local_user_registered]

<ApiSignature>

void(* on_local_user_registered)(const char *uname, uint32_t uid)

</ApiSignature>

本地用户注册回调。

<ParameterList title="参数">
<Parameter name="uname" direction="[in]">

使用 [agora_rtc_init](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a6187076d897f0b56cb20942368c15aaa) 方法初始化时设置的 String 型用户名，该参数为必填，最大不超过 255 字节，不可设为 NULL。请确保用户名的唯一性。以下为支持的字符集范围（共 89 个字符）：

- 26 个小写英文字母 a-z
- 26 个大写英文字母 A-Z
- 10 个数字 0-9
- 空格
- "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "&lt;", "=", ".", "&gt;", "?", "@", "[", "]", "^", "_", " \{", "\}", "|", "~", ","

</Parameter>
<Parameter name="uid" direction="[in]">

使用 [agora_rtc_init](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a6187076d897f0b56cb20942368c15aaa) 方法初始化时设置的用户 ID（32 位整型）。建议设置范围：1 到 (2³² - 1)，并保证唯一性。 0 是无效的 uid。如果将 uid 设为 0，系统将自动分配一个 UID。

</Parameter>
</ParameterList>

<a id="ab0a6462ac391a960f767d2cf6ce8078a"></a>

<a id="a2e1c250bc84081128d1c2f4fed26bf92"></a>

### on_media_ctrl_msg [#on_media_ctrl_msg]

<ApiSignature>

void(* on_media_ctrl_msg)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id, uint32_t uid, const void *payload, size_t length)

</ApiSignature>

收到远端用户发来的消息回调。

:::info[自从]
v1.9.5
:::

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID。

</Parameter>
<Parameter name="uid" direction="[in]">

发送消息的用户 ID。

</Parameter>
<Parameter name="payload" direction="[in]">

消息 Payload。

</Parameter>
<Parameter name="length" direction="[in]">

消息 Payload 长度。

</Parameter>
</ParameterList>

<a id="ad3cf11417984d7a70c9eedc739ce9452"></a>

<a id="aa10d23bce1cd68dbe42e16945e45b174"></a>

### on_mixed_audio_data [#on_mixed_audio_data]

<ApiSignature>

void(* on_mixed_audio_data)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id, const void *data_ptr, size_t data_len, const [audio_frame_info_t](/zh-CN/api-reference/rtsa/c/structaudio-frame-info-t) *info_ptr)

</ApiSignature>

收到频道内本地用户和远端用户的混音数据回调。此回调每 20 ms 触发一次。

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
<Parameter name="data_ptr" direction="[in]">

音频包数据。

</Parameter>
<Parameter name="data_len" direction="[in]">

音频包数据长度（字节）。

</Parameter>
<Parameter name="info_ptr" direction="[in]">

音频帧信息。详见 [audio_frame_info_t](/zh-CN/api-reference/rtsa/c/structaudio-frame-info-t) 。

</Parameter>
</ParameterList>

<a id="a80dfcd1cd72a006a7b2daae4d7f80eea"></a>

<a id="a7b5b9ba5f3acaf9b336040e4edd282a5"></a>

### on_rdt_msg [#on_rdt_msg]

<ApiSignature>

void(* on_rdt_msg)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id, uint32_t uid, [rdt_stream_type_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a18e9113feef6d094da117d9341b9c24a) type, const void *msg, size_t len)

</ApiSignature>

收到 RDT 消息回调。

:::info[自从]
v1.9.2
:::

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
<Parameter name="uid" direction="[in]">

远端用户的用户 ID。

</Parameter>
<Parameter name="type" direction="[in]">

RDT 消息类型。详见 [rdt_stream_type](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a39c4148522dd2ce2d729b8f264e7b955) 。

</Parameter>
<Parameter name="msg" direction="[in]">

RDT 消息负载。

</Parameter>
<Parameter name="len" direction="[in]">

RDT 消息长度。

</Parameter>
</ParameterList>

<a id="afa921fa31ea49ef1c97a17949119e386"></a>

<a id="afe6c35e916473a1424f28d3fefbdda69"></a>

### on_rdt_state [#on_rdt_state]

<ApiSignature>

void(* on_rdt_state)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id, uint32_t uid, [rdt_state_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ab926f577ba6171a33930da45236aaa83) state)

</ApiSignature>

RDT 通道的连接状态已改变回调。

:::info[自从]
v1.9.2
:::

当 RDT 通道的连接状态发生变化时，SDK 会触发该回调并报告当前的连接状态。

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
<Parameter name="uid" direction="[in]">

远端用户的用户 ID。

</Parameter>
<Parameter name="state" direction="[in]">

连接状态。详见 [rdt_state](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a29a5e8defc6abf737109eb0b5349ac84) 。

</Parameter>
</ParameterList>

<a id="acadee60a0d36eec3939e769a40e43cad"></a>

<a id="a63382fa7b0cba7589f1577630657a323"></a>

### on_reconnecting [#on_reconnecting]

<ApiSignature>

void(* on_reconnecting)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id)

</ApiSignature>

正在重新连接回调。

SDK 会在如下场景中触发该回调：

- SDK 与服务器断开连接超过 4 秒。
- 网络断开。
- 用户切换网络类型，例如 4G 网络切换成 Wi-Fi 网络。

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
</ParameterList>

<a id="af1aad04da5b59bb0ae4575c1121eaa59"></a>

<a id="a289e8f276aaecbf44f80f8c66efeac0b"></a>

### on_rejoin_channel_success [#on_rejoin_channel_success]

<ApiSignature>

void(* on_rejoin_channel_success)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id, uint32_t uid, int elapsed_ms)

</ApiSignature>

重新加入频道成功回调。

有时候由于网络原因，客户端可能会和服务器失去连接，SDK 会进行自动重连，自动重连成功后触发此回调方法。

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
<Parameter name="uid" direction="[in]">

本地用户 ID。

</Parameter>
<Parameter name="elapsed_ms" direction="[in]">

从开始重连到重连成功的时间（毫秒）。

</Parameter>
</ParameterList>

<a id="a631f8f2d7c71a54bbb1825dc5b386eba"></a>

<a id="a60abe33f6936c8c5ff6a6e3a86bf70c9"></a>

### on_remote_user_registered [#on_remote_user_registered]

<ApiSignature>

void(* on_remote_user_registered)(const char *uname, uint32_t uid)

</ApiSignature>

远端用户注册回调。

<ParameterList title="参数">
<Parameter name="uname" direction="[in]">

使用 [agora_rtc_init](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a6187076d897f0b56cb20942368c15aaa) 方法初始化时设置的 String 型用户名，该参数为必填，最大不超过 255 字节，不可设为 NULL。请确保用户名的唯一性。以下为支持的字符集范围（共 89 个字符）：

- 26 个小写英文字母 a-z
- 26 个大写英文字母 A-Z
- 10 个数字 0-9
- 空格

  - "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "&lt;", "=", ".", "&gt;", "?", "@", "[", "]", "^", "_", " \{", "\}", "|", "~", ","

</Parameter>
<Parameter name="uid" direction="[in]">

使用 [agora_rtc_init](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a6187076d897f0b56cb20942368c15aaa) 方法初始化时设置的用户 ID（32 位整型）。建议设置范围：1 到 (2³² - 1)，并保证唯一性。 0 是无效的 uid。如果将 uid 设为 0，系统将自动分配一个 UID。

</Parameter>
</ParameterList>

<a id="a7c73b2bb0558e2b695d8838ee542c87a"></a>

<a id="a60c9fde781cd1429ed824efeb1cdd7e5"></a>

### on_stream_message [#on_stream_message]

<ApiSignature>

void(* on_stream_message)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id, uint32_t uid, int stream_id, const char *data, size_t length, uint64_t sent_ts)

</ApiSignature>

接收到远端用户数据流消息的回调。

该回调表示本地用户收到了远端用户调用 [agora_rtc_send_stream_message](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#aee89fa14447b4529d45275afe5b5a86f) 方法发送的流消息。

:::info[自从]
v1.9.5
:::

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
<Parameter name="uid" direction="[in]">

发送消息的用户 ID。

</Parameter>
<Parameter name="stream_id" direction="[in]">

接收到的消息的 Stream ID。

</Parameter>
<Parameter name="data" direction="[in]">

接收到的数据。

</Parameter>
<Parameter name="length" direction="[in]">

数据流大小。

</Parameter>
<Parameter name="sent_ts" direction="[in]">

数据流发送的时间戳。

</Parameter>
</ParameterList>

<a id="af3ef06a16cd4cf3aa585dd6ad13ada0b"></a>

<a id="a2cd16998c0834bac5c47c0e2b9f47fcc"></a>

### on_target_bitrate_changed [#on_target_bitrate_changed]

<ApiSignature>

void(* on_target_bitrate_changed)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id, uint32_t target_bps)

</ApiSignature>

编码器码率更新通知回调。你可以使用此回调提醒 App 更新编码器码率。

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
<Parameter name="target_bps" direction="[in]">

码率需要更新到的目标值，单位为 bps。

</Parameter>
</ParameterList>

<a id="aef1aa16dd5b32baa1aa03887f40f6ee9"></a>

<a id="a73ce0c60c3e00ac601342ddf70408a58"></a>

### on_token_privilege_will_expire [#on_token_privilege_will_expire]

<ApiSignature>

void(* on_token_privilege_will_expire)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id, const char *token)

</ApiSignature>

Token 服务即将过期回调。

在调用 [agora_rtc_join_channel](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a6c29ff27f04623526a164cf6e5dcd738) 时如果指定了 Token，由于 Token 具有一定的时效，在通话过程中如果 Token 即将失效，SDK 会提前 30 秒触发该回调，提醒应用程序更新 Token。当收到该回调时，用户需要重新在服务端生成新的 Token，然后调用 [agora_rtc_renew_token](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a87c94a2d518278926807e24592b41336) 将新生成的 Token 传给 SDK。

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
<Parameter name="token" direction="[in]">

即将服务失效的 Token。

</Parameter>
</ParameterList>

<a id="a4c8f017cc2fa8aaa6e91c966b97a8aee"></a>

<a id="a4235da22aa144746564deaa878dcda40"></a>

### on_user_info_updated [#on_user_info_updated]

<ApiSignature>

void(* on_user_info_updated)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id, const [user_info_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a5a045013221683ad1abf079c2749c3de) *user)

</ApiSignature>

远端用户信息更新回调。

:::info[自从]
v1.9.5
:::

远端用户加入频道后，SDK 会获取到该远端用户的用户 ID 和 User account，然后缓存一个包含了远端用户 ID 和 User account 的映射表，并在本地触发该回调。

:::info[注解]
收到该回调后，请确保根据新的映射关系更新相关的订阅逻辑。
:::

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
<Parameter name="user" direction="[in]">

远端用户的信息，详见 [user_info_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a5a045013221683ad1abf079c2749c3de) 。

</Parameter>
</ParameterList>

<a id="ada682c16b9d0e53404beb76c9c3a02a2"></a>

<a id="a74df0f085839d12a7d85236a70f2ff1d"></a>

### on_user_joined [#on_user_joined]

<ApiSignature>

void(* on_user_joined)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id, uint32_t uid, int elapsed_ms)

</ApiSignature>

远端用户加入频道回调。

该回调提示有远端用户加入了频道。如果加入之前，已经有其他用户在频道中了，新加入的用户也会收到这些已有用户加入频道的回调。

该回调在如下情况下会被触发：

- 远端用户加入频道。
- 远端用户网络中断后重新加入频道。

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
<Parameter name="uid" direction="[in]">

用户 ID。

</Parameter>
<Parameter name="elapsed_ms" direction="[in]">

从频道成功创建开始到发生此回调过去的时间（毫秒）。

</Parameter>
</ParameterList>

<a id="aa57af03ef9f26ab68917fa7a30f703bd"></a>

<a id="aa7f9418b6d5502ee641b8231c6f3292f"></a>

### on_user_joined_with_user_account [#on_user_joined_with_user_account]

<ApiSignature>

void(* on_user_joined_with_user_account)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id, const [user_info_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a5a045013221683ad1abf079c2749c3de) *user, int elapsed_ms)

</ApiSignature>

远端用户使用 User Account 加入频道回调。

:::info[自从]
v1.9.5
:::

远端用户调用 [agora_rtc_join_channel_with_user_account](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a64a24029bfaa5408e987122261385013) 方法成功加入频道后，会在本地触发该回调。

:::info[注解]
调用该方法前，请确保 [rtc_service_option_t](/zh-CN/api-reference/rtsa/c/structrtc-service-option-t) 中的 use_string_uid 设为 true。
:::

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
<Parameter name="user" direction="[in]">

加入频道的远端用户的信息，详见 [user_info_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a5a045013221683ad1abf079c2749c3de) 。

</Parameter>
<Parameter name="elapsed_ms" direction="[in]">

从频道成功创建开始到发生此回调过去的时间（毫秒）。

</Parameter>
</ParameterList>

<a id="ab749491e46ce8d06aa69507ebb630bf9"></a>

<a id="a5c823e048831fcefa7fca0a2c01ad864"></a>

### on_user_mute_audio [#on_user_mute_audio]

<ApiSignature>

void(* on_user_mute_audio)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id, uint32_t uid, bool muted)

</ApiSignature>

频道内远端用户暂停/恢复发送音频流回调。

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
<Parameter name="uid" direction="[in]">

远端用户的用户 ID。

</Parameter>
<Parameter name="muted" direction="[in]">

远端用户是否发送音频流：

- 0: 该用户恢复发送音频流；
- 其他值: 该用户暂停发送音频流。

</Parameter>
</ParameterList>

<a id="a7ba3bed4e4d97a4e39096f07d2333311"></a>

<a id="ae07cf9b3a19154ad8d889a4bd3f51b59"></a>

### on_user_mute_video [#on_user_mute_video]

<ApiSignature>

void(* on_user_mute_video)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id, uint32_t uid, bool muted)

</ApiSignature>

频道内远端用户暂停/恢复发送视频流回调。

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
<Parameter name="uid" direction="[in]">

远端用户的用户 ID。

</Parameter>
<Parameter name="muted" direction="[in]">

远端用户是否发送视频流：

- 0: 该用户恢复发送视频流；
- 其他值: 该用户暂停发送视频流。

</Parameter>
</ParameterList>

<a id="aa20dd2bc2ee7389257e7d03dd28a3dd4"></a>

<a id="ac3f1bcc48ccb52dbe58e2698a24d1faa"></a>

### on_user_offline [#on_user_offline]

<ApiSignature>

void(* on_user_offline)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id, uint32_t uid, int reason)

</ApiSignature>

远端用户离开频道回调。

SDK 会在如下场景触发该回调：

- 正常离开：远端用户会发送类似“再见”的消息。接收此消息后，判断用户离开频道。
- 超时掉线：如果本地用户在 20 秒内没有收到远端用户的任何数据包，则判定为对方掉线。在网络较差的情况下，有可能会误报。建议使用云信令 SDK 来做可靠的掉线检测。

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
<Parameter name="uid" direction="[in]">

离开频道的用户 ID。

</Parameter>
<Parameter name="reason" direction="[in]">

用户离开频道原因，详见 [user_offline_reason_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#aaa6c469f77d32b9c4e6d4c1676308cd5) 。

</Parameter>
</ParameterList>

<a id="af3a7f207010bafca7aa99fdba5a9b1ab"></a>

<a id="ab81aeacbe7daef9eff3f14362267ded7"></a>

### on_user_offline_with_user_account [#on_user_offline_with_user_account]

<ApiSignature>

void(* on_user_offline_with_user_account)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id, const [user_info_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a5a045013221683ad1abf079c2749c3de) *user, int reason)

</ApiSignature>

使用 User Account 场景下，远端用户离开频道回调。

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
<Parameter name="user" direction="[in]">

离开频道的远端用户的信息，详见 [user_info_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a5a045013221683ad1abf079c2749c3de) 。

</Parameter>
<Parameter name="reason" direction="[in]">

用户离开频道原因，详见 [user_offline_reason_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#aaa6c469f77d32b9c4e6d4c1676308cd5) 。

</Parameter>
</ParameterList>

<a id="ab6c026de857cff2283f7f5287af0551a"></a>

<a id="ad22676cef8f3d947b68c84b95ea5cde9"></a>

### on_video_data [#on_video_data]

<ApiSignature>

void(* on_video_data)([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) conn_id, uint32_t uid, uint16_t sent_ts, const void *data_ptr, size_t data_len, const [video_frame_info_t](/zh-CN/api-reference/rtsa/c/structvideo-frame-info-t) *info_ptr)

</ApiSignature>

收到频道内远端用户的视频帧回调。

<ParameterList title="参数">
<Parameter name="conn_id" direction="[in]">

Connection ID，详见 [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) 。

</Parameter>
<Parameter name="uid" direction="[in]">

发送视频帧的远端用户的用户 ID。

</Parameter>
<Parameter name="sent_ts" direction="[in]">

Unix 时间戳（ms）。标识远端用户调用 [agora_rtc_send_video_data](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a05973c4f32a5eb480e52b4f566601bf5) 的时间。

</Parameter>
<Parameter name="data_ptr" direction="[in]">

视频包数据。

</Parameter>
<Parameter name="data_len" direction="[in]">

视频包数据长度（字节）。

</Parameter>
<Parameter name="info_ptr" direction="[in]">

视频帧信息。详见 [video_frame_info_t](/zh-CN/api-reference/rtsa/c/structvideo-frame-info-t) 。

</Parameter>
</ParameterList>

---

该结构体的文档由以下文件生成:

- agora_rtc_api.h
