#include <agora_rtc_api.h>
成员变量 | |
void(* | on_join_channel_success )(connection_id_t conn_id, uint32_t uid, int elapsed_ms) |
void(* | on_connection_lost )(connection_id_t conn_id) |
void(* | on_rejoin_channel_success )(connection_id_t conn_id, uint32_t uid, int elapsed_ms) |
void(* | on_license_validation_failure )(connection_id_t conn_id, int error) |
void(* | on_error )(connection_id_t conn_id, int code, const char *msg) |
void(* | on_user_joined )(connection_id_t conn_id, uint32_t uid, int elapsed_ms) |
void(* | on_user_offline )(connection_id_t conn_id, uint32_t uid, int reason) |
void(* | on_user_mute_audio )(connection_id_t conn_id, uint32_t uid, bool muted) |
void(* | on_user_mute_video )(connection_id_t conn_id, uint32_t uid, bool muted) |
void(* | on_audio_data )(connection_id_t conn_id, uint32_t uid, uint16_t sent_ts, const void *data_ptr, size_t data_len, const audio_frame_info_t *info_ptr) |
void(* | on_mixed_audio_data )(connection_id_t conn_id, const void *data_ptr, size_t data_len, const audio_frame_info_t *info_ptr) |
void(* | on_video_data )(connection_id_t conn_id, uint32_t uid, uint16_t sent_ts, const void *data_ptr, size_t data_len, const video_frame_info_t *info_ptr) |
void(* | on_target_bitrate_changed )(connection_id_t conn_id, uint32_t target_bps) |
void(* | on_key_frame_gen_req )(connection_id_t conn_id, uint32_t uid, video_stream_type_e stream_type) |
void(* | on_local_user_registered )(const char *uname, uint32_t uid) |
void(* | on_remote_user_registered )(const char *uname, uint32_t uid) |
void(* | on_token_privilege_will_expire )(connection_id_t conn_id, const char *token) |
包含事件处理回调的结构体。
void(* on_audio_data) (connection_id_t conn_id, uint32_t uid, uint16_t sent_ts, const void *data_ptr, size_t data_len, const audio_frame_info_t *info_ptr) |
收到频道内远端用户的音频帧回调。
[in] | conn_id | Connection ID。一个 Connection 可以连接多个 RTC 频道。你可以通过 agora_rtc_create_connection 创建 Connection。 |
[in] | uid | 远端用户的用户 ID。 |
[in] | sent_ts | Unix 时间戳(ms)。标识远端用户调用 agora_rtc_send_audio_data 的时间。 |
[in] | data_ptr | 音频包数据。 |
[in] | data_len | 音频包数据长度(字节)。 |
[in] | info_ptr | 音频帧信息。详见 audio_frame_info_t 。 |
void(* on_connection_lost) (connection_id_t conn_id) |
连接丢失回调。
[in] | conn_id | Connection ID。一个 Connection 可以连接多个 RTC 频道。你可以通过 agora_rtc_create_connection 创建 Connection。 |
void(* on_error) (connection_id_t conn_id, int code, const char *msg) |
发生错误回调。
该回调方法表示 SDK 运行时出现了(网络或媒体相关的)错误。 通常情况下,SDK 上报的错误意味着 SDK 无法自动恢复,需要 App 干预或提示用户。
[in] | conn_id | Connection ID。一个 Connection 可以连接多个 RTC 频道。你可以通过 agora_rtc_create_connection 创建 Connection。 |
[in] | code | 错误码,详见 agora_err_code_e 。 |
[in] | msg | 错误描述。 |
void(* on_join_channel_success) (connection_id_t conn_id, uint32_t uid, int elapsed_ms) |
加入频道成功回调。
[in] | conn_id | Connection ID。一个 Connection 可以连接多个 RTC 频道。你可以通过 agora_rtc_create_connection 创建 Connection。 |
[in] | uid | 本地用户 ID。 |
[in] | elapsed_ms | 从频道成功创建开始到发生此回调过去的时间(毫秒)。 |
void(* on_key_frame_gen_req) (connection_id_t conn_id, uint32_t uid, video_stream_type_e stream_type) |
频道内远端用户请求关键帧回调。
收到此回调后,发送端需生成一个新的关键帧。
[in] | channel | 频道名。 |
[in] | uid | 远端用户的用户 ID。 |
[in] | stream_type | 需要生成关键帧的视频流类型。 |
void(* on_license_validation_failure) (connection_id_t conn_id, int error) |
设备 License 验证失败回调。
加入频道时,声网服务器会验证你在 agora_rtc_init 中传入的 License。如果 License 验证失败,则 SDK 会触发该回调,你可以根据收到的错误码处理问题。
[in] | conn_id | Connection ID。一个 Connection 可以连接多个 RTC 频道。你可以通过 agora_rtc_create_connection 创建 Connection。 |
[in] | error | 错误码。详见 license_err_reason_e 。 |
void(* on_local_user_registered) (const char *uname, uint32_t uid) |
本地用户注册回调。
[in] | uname | 使用 agora_rtc_init 方法初始化时设置的 String 型用户名,该参数为必填,最大不超过 255 字节,不可设为 NULL。请确保用户名的唯一性。以下为支持的字符集范围(共 89 个字符):
|
[in] | uid | 使用 agora_rtc_init 方法初始化时设置的用户 ID(32 位整型)。建议设置范围:1 到 (232-1),并保证唯一性。 0 是无效的 uid。如果将 uid 设为 0,系统将自动分配一个 UID。 |
void(* on_mixed_audio_data) (connection_id_t conn_id, const void *data_ptr, size_t data_len, const audio_frame_info_t *info_ptr) |
收到频道内本地用户和远端用户的混音数据回调。此回调每 20 ms 触发一次。
[in] | conn_id | Connection ID。一个 Connection 可以连接多个 RTC 频道。你可以通过 agora_rtc_create_connection 创建 Connection。 |
[in] | data_ptr | 音频包数据。 |
[in] | data_len | 音频包数据长度(字节)。 |
[in] | info_ptr | 音频帧信息。详见 audio_frame_info_t 。 |
void(* on_rejoin_channel_success) (connection_id_t conn_id, uint32_t uid, int elapsed_ms) |
重新加入频道成功回调。
有时候由于网络原因,客户端可能会和服务器失去连接,SDK 会进行自动重连,自动重连成功后触发此回调方法。
[in] | conn_id | Connection ID。一个 Connection 可以连接多个 RTC 频道。你可以通过 agora_rtc_create_connection 创建 Connection。 |
[in] | uid | 本地用户 ID。 |
[in] | elapsed_ms | 从开始重连到重连成功的时间(毫秒)。 |
void(* on_remote_user_registered) (const char *uname, uint32_t uid) |
远端用户注册回调。
[in] | uname | 使用 agora_rtc_init 方法初始化时设置的 String 型用户名,该参数为必填,最大不超过 255 字节,不可设为 NULL。请确保用户名的唯一性。以下为支持的字符集范围(共 89 个字符):
|
[in] | uid | 使用 agora_rtc_init 方法初始化时设置的用户 ID(32 位整型)。建议设置范围:1 到 (232-1),并保证唯一性。 0 是无效的 uid。如果将 uid 设为 0,系统将自动分配一个 UID。 |
void(* on_target_bitrate_changed) (connection_id_t conn_id, uint32_t target_bps) |
编码器码率更新通知回调。你可以使用此回调提醒 app 更新编码器码率。
[in] | conn_id | Connection ID。一个 Connection 可以连接多个 RTC 频道。 |
[in] | target_bps | 码率需要更新到的目标值,单位为 bps。 |
void(* on_token_privilege_will_expire) (connection_id_t conn_id, const char *token) |
Token 服务即将过期回调。
[in] | conn_id | Connection ID。一个 Connection 可以连接多个 RTC 频道。 |
[in] | token | 即将服务失效的 Token。 |
在调用 agora_rtc_join_channel 时如果指定了 Token,由于 Token 具有一定的时效,在通话过程中如果 Token 即将失效,SDK 会提前 30 秒触发该回调,提醒应用程序更新 Token。 当收到该回调时,用户需要重新在服务端生成新的 Token,然后调用 agora_rtc_renew_token 将新生成的 Token 传给 SDK。
void(* on_user_joined) (connection_id_t conn_id, uint32_t uid, int elapsed_ms) |
远端用户加入频道回调。
[in] | conn_id | Connection ID。一个 Connection 可以连接多个 RTC 频道。你可以通过 agora_rtc_create_connection 创建 Connection。 |
[in] | uid | 用户 ID。 |
[in] | elapsed_ms | 从频道成功创建开始到发生此回调过去的时间(毫秒)。 |
void(* on_user_mute_audio) (connection_id_t conn_id, uint32_t uid, bool muted) |
频道内远端用户暂停/恢复发送音频流回调。
[in] | conn_id | Connection ID。一个 Connection 可以连接多个 RTC 频道。你可以通过 agora_rtc_create_connection 创建 Connection。 |
[in] | uid | 远端用户的用户 ID。 |
[in] | muted | 远端用户是否发送音频流:
|
void(* on_user_mute_video) (connection_id_t conn_id, uint32_t uid, bool muted) |
频道内远端用户暂停/恢复发送视频流回调。
[in] | conn_id | Connection ID。一个 Connection 可以连接多个 RTC 频道。你可以通过 agora_rtc_create_connection 创建 Connection。 |
[in] | uid | 远端用户的用户 ID。 |
[in] | muted | 远端用户是否发送视频流:
|
void(* on_user_offline) (connection_id_t conn_id, uint32_t uid, int reason) |
远端用户离开频道回调。
[in] | conn_id | Connection ID。一个 Connection 可以连接多个 RTC 频道。你可以通过 agora_rtc_create_connection 创建 Connection。 |
[in] | uid | 离开频道的用户 ID。 |
[in] | reason | 用户离开频道原因,详见 user_offline_reason_e 。 |
void(* on_video_data) (connection_id_t conn_id, uint32_t uid, uint16_t sent_ts, const void *data_ptr, size_t data_len, const video_frame_info_t *info_ptr) |
收到频道内远端用户的视频帧回调。
[in] | conn_id | Connection ID。一个 Connection 可以连接多个 RTC 频道。 |
[in] | uid | 发送视频帧的远端用户的用户 ID。 |
[in] | sent_ts | Unix 时间戳(ms)。标识远端用户调用 agora_rtc_send_video_data 的时间。 |
[in] | data_ptr | 视频包数据。 |
[in] | data_len | 视频包数据长度(字节)。 |
[in] | info_ptr | 视频帧信息。详见 video_frame_info_t 。 |