# agora_rtc_api.h 文件参考 (/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h)

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

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

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

## 宏定义说明 [#宏定义说明]

<a id="ad2a412e8ee6a8a2002439dda41fcf809"></a>

### __agora_api__ [#agora_api]

<ApiSignature>

#define __agora_api__

</ApiSignature>

<a id="a577bd541ae1fdc5a3d1ae28b185948e2"></a>

### AGORA_CERTIFICATE_MAX_LEN [#agora_certificate_max_len]

<ApiSignature>

#define AGORA_CERTIFICATE_MAX_LEN(1024)

</ApiSignature>

<a id="a02e5aee7d86c93a30696a11c2da69fb4"></a>

### AGORA_CREDENTIAL_MAX_LEN [#agora_credential_max_len]

<ApiSignature>

#define AGORA_CREDENTIAL_MAX_LEN(256)

</ApiSignature>

<a id="a6969509dce36d0a1cb63a7d0e00804ae"></a>

### AGORA_LICENSE_VALUE_LEN [#agora_license_value_len]

<ApiSignature>

#define AGORA_LICENSE_VALUE_LEN(32)

</ApiSignature>

<a id="a8ab8ce37c96cb9358e1c0a45d9a17e33"></a>

### AGORA_RTC_CHANNEL_NAME_MAX_LEN [#agora_rtc_channel_name_max_len]

<ApiSignature>

#define AGORA_RTC_CHANNEL_NAME_MAX_LEN(64)

</ApiSignature>

<a id="a6d84b5cdaf9bb0359ff264d775dada92"></a>

### AGORA_RTC_DATA_STREAM_MAX_LEN [#agora_rtc_data_stream_max_len]

<ApiSignature>

#define AGORA_RTC_DATA_STREAM_MAX_LEN(1024)

</ApiSignature>

<a id="a3720a5f468d3696ba1bbe0b6da18f1b5"></a>

### AGORA_RTC_PRODUCT_ID_MAX_LEN [#agora_rtc_product_id_max_len]

<ApiSignature>

#define AGORA_RTC_PRODUCT_ID_MAX_LEN(63)

</ApiSignature>

<a id="a4a80dc25913d06d6d97733ad84cab41f"></a>

### AGORA_RTC_USER_ACCOUNT_MAX_LEN [#agora_rtc_user_account_max_len]

<ApiSignature>

#define AGORA_RTC_USER_ACCOUNT_MAX_LEN(256)

</ApiSignature>

<a id="a07dce5cb1ed7d6476ab69f8bf06deef8"></a>

### AGORA_RTM_DATA_MAX_LEN [#agora_rtm_data_max_len]

<ApiSignature>

#define AGORA_RTM_DATA_MAX_LEN(31 * 1024)

</ApiSignature>

<a id="a8c77142e1de005c4963d70f3478bff19"></a>

### AGORA_RTM_UID_MAX_LEN [#agora_rtm_uid_max_len]

<ApiSignature>

#define AGORA_RTM_UID_MAX_LEN(64)

</ApiSignature>

<a id="a30a294de6c0b971e85edfa7265788772"></a>

### CONNECTION_ID_ALL [#connection_id_all]

<ApiSignature>

#define CONNECTION_ID_ALL(([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c))0)

</ApiSignature>

当前创建的全部 Connection。

<a id="a859d556be254db709863d0cf23b08180"></a>

### CONNECTION_ID_INVALID [#connection_id_invalid]

<ApiSignature>

#define CONNECTION_ID_INVALID(([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c))-1)

</ApiSignature>

无效的 Connection ID。

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

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

## 类型定义说明 [#类型定义说明]

<a id="ad7f88cfbc57654bf3b391c3be0e8444c"></a>

### connection_id_t [#connection_id_t]

<ApiSignature>

typedef uint32_t [connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c)

</ApiSignature>

Connection ID。

<a id="ab926f577ba6171a33930da45236aaa83"></a>

### rdt_state_e [#rdt_state_e]

<ApiSignature>

typedef enum [rdt_state](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a29a5e8defc6abf737109eb0b5349ac84) [rdt_state_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ab926f577ba6171a33930da45236aaa83)

</ApiSignature>

RDT 通道的连接状态。

<a id="aa8f682dca66b0793fbf74d1d467f5327"></a>

### rdt_status_info_t [#rdt_status_info_t]

<ApiSignature>

typedef struct [rdt_status_info](/zh-CN/api-reference/rtsa/c/structrdt-status-info) [rdt_status_info_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#aa8f682dca66b0793fbf74d1d467f5327)

</ApiSignature>

RDT 通道的信息。

<a id="a18e9113feef6d094da117d9341b9c24a"></a>

### rdt_stream_type_e [#rdt_stream_type_e]

<ApiSignature>

typedef enum [rdt_stream_type](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a39c4148522dd2ce2d729b8f264e7b955) [rdt_stream_type_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a18e9113feef6d094da117d9341b9c24a)

</ApiSignature>

RDT 消息类型。

<a id="a5a045013221683ad1abf079c2749c3de"></a>

### user_info_t [#user_info_t]

<ApiSignature>

typedef struct [user_info_s](/zh-CN/api-reference/rtsa/c/structuser-info-s) [user_info_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a5a045013221683ad1abf079c2749c3de)

</ApiSignature>

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

用户信息。适用于使用 String 型用户 ID 的场景。

<a id="a2c71f0de17ad14a7e165d7fdc19472e4"></a>

### video_frame_rate_e [#video_frame_rate_e]

<ApiSignature>

typedef uint16_t [video_frame_rate_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a2c71f0de17ad14a7e165d7fdc19472e4)

</ApiSignature>

（废弃）视频帧率。

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

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

<a id="aec639f854206054cb48acde88e998abf"></a>

### agora_err_code_e [#agora_err_code_e]

<ApiSignature>

enum [agora_err_code_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#aec639f854206054cb48acde88e998abf)

</ApiSignature>

错误码。

<DocsTable>
<thead>
<tr>
<th colSpan={2} scope="colgroup">枚举值</th>
</tr>
</thead>
<tbody>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfabcb41b97c22a8baf624c10fd32b85110"></a>ERR_OKAY

</td>
<td>0: 没有错误。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa55adea41deb55430ff7582871e1b58cb"></a>ERR_FAILED

</td>
<td>1: 通用错误。你可以根据日志文件排查问题。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfac5bbc85b8893c0f0329cb0407509a0a1"></a>ERR_INVALID_PARAM

</td>
<td>2: 方法中设置无效的参数，例如指定的频道命中含有非法字符。请重新设置参数</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfac60ad9ef7b73386b49d5c93a2391c447"></a>ERR_INVALID_STATE

</td>
<td>3: 当前状态下调用 API 无效，例如关闭本地采集后就无法发布音视频。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa994a3ba85904a4ea1ee0b3330aa15609"></a>ERR_NOT_SUPPORTED

</td>
<td>4: 当前状态下不支持该操作。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa2f87aab99ad1db39b351e6000370df7b"></a>ERR_NOT_IN_CHANNEL

</td>
<td>6: 当前连接状态是未成功加入频道。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfae44179d4dc47349972e3ab7702aaf435"></a>ERR_NOT_INITIALIZED

</td>
<td>7: 服务未完成初始化。请先调用 [agora_rtc_init](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a6187076d897f0b56cb20942368c15aaa) 方法。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfae657a7c7b27629afeae9381997bff18c"></a>ERR_NOT_EXIST_CONNECTION

</td>
<td>8: 连接不存在。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa2dcd571426340223f3ed818480204ca7"></a>ERR_TIMEDOUT

</td>
<td>10: API 调用超时。有些方法调用需要 SDK 返回结果，如果处理时间过长（超过 10 秒），SDK 会返回该错误。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa308199736159a4f167ad4f58db8a3830"></a>ERR_NO_MEMORY

</td>
<td>11: 内存不足。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfaacacefd86c7bfed65ec51d9275ce15c5"></a>ERR_CALL_FAILED

</td>
<td>12: API 调用失败。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfaec8c71d0c16bfcc54d23dd02c5dbf6b9"></a>ERR_NET_DOWN

</td>
<td>14: 当前网络不可用。你需要检查系统网络连接状态。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa20c11704c3a4c6e57c047ecb67ba6648"></a>ERR_JOIN_CHANNEL_REJECTED

</td>
<td>17: 加入频道请求被拒绝，可能是因为本地用户已在频道内。你需要调整代码逻辑，避免用户加入同一频道。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfaefb42a42d62890259d40c9d73945b964"></a>ERR_LEAVE_CHANNEL_REJECTED

</td>
<td>18: 离开频道被拒。如果本地用户已经不在频道内，试图调用 API 离开频道时会返回该错误。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa273015d0d91c9f93595eb15bbac08550"></a>ERR_LICENSE_VERIFICATION_FAILURE

</td>
<td>23: License 未通过验证导致的 SDK 初始化失败。该错误码仅在老版本的 License 下会反馈。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa04c61d0652a8afc0bb9f2d3707dc5277"></a>ERR_ENCRYPTION

</td>
<td>30: 加密错误。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa66ab18623c7421ccf79f748c2b066da8"></a>ERR_DECRYPTION

</td>
<td>31: 解密错误。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa1c52fe8e89c2871494d31c729151463d"></a>ERR_INVALID_APP_ID

</td>
<td>101: 不是有效的 App ID。请更换有效的 App ID 重新加入频道。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfac7b431735b63f0e628a0485f6e8178d3"></a>ERR_INVALID_CHANNEL_NAME

</td>
<td>102: 不是有效的频道名。可能的原因是设置的参数数据类型不正确。请更换有效的频道名重新加入频道。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfad95c9e3f9fd45a6bae14031cdd188d61"></a>ERR_NO_SERVER_RESOURCES

</td>
<td>103: 无法获取指定区域的服务器资源。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfaeaa2194a4cd76b1da02398ec04a96a68"></a>ERR_LOOKUP_CHANNEL_REJECTED

</td>
<td>105: 声网服务器拒绝了查询频道的请求。你需要检查 RTC Token 是否有效。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfaa64b29f1436017ee0b8cb3baa743139a"></a>ERR_OPEN_CHANNEL_REJECTED

</td>
<td>107: 声网服务器拒绝了创建频道的请求。你需要检查 RTC Token 是否有效。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfaa07e19d62b749a5f803a3c416a70fbc5"></a>ERR_TOKEN_EXPIRED

</td>
<td>

109: 当前使用的 RTC Token 已过期。你需要重新在服务端申请生成 RTC Token 并调用 [agora_rtc_join_channel](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a6c29ff27f04623526a164cf6e5dcd738) 使用新生成的 RTC Token 重新加入频道。

Token 过期可能的原因有：

- 授权时间戳过期：Token 一旦生成，用户需要在 5 分钟内使用该 Token 加入频道，否则 Token 会失效。
- 通话有效时间戳过期：通话有效时间戳指用户不再能使用声网服务（如被强制离开当前通话）的时间戳。这种情况下，Token 没有过期，但是用户也会被踢出频道。

</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa14ec9241bfc66e2f18c024ab5a9e073a"></a>ERR_INVALID_TOKEN

</td>
<td>

110: RTC Token 无效。可能的原因是：

- 在控制台中启用了 Token 鉴权，但调用 API 时没有传入 Token。
- 用户加入频道时使用的 uid 和生成 Token 时传入的 uid 不一致。

</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfadce0b07f244bd3ce132a78e6ada3ce7e"></a>ERR_DYNAMIC_TOKEN_BUT_USE_STATIC_KEY

</td>
<td>115: 在控制台中启用了 Token 鉴权，但调用 join 加入频道时传入的是 App ID。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa4dc0b750cc3baf482934846598ad8dd8"></a>ERR_SET_CLIENT_ROLE_NOT_AUTHORIZED

</td>
<td>119: 切换用户角色失败，请尝试重新加入频道。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa97ee2db4a99b5d5db4efc635cd6afa7e"></a>ERR_DECRYPTION_FAILED

</td>
<td>120：解密失败。可能的原因是用户尝试使用不同的密码加入频道。请检查你的设置或尝试重新加入频道。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfac0300e6b2ff89cc67ae962aa2bd031bd"></a>ERR_OPEN_CHANNEL_INVALID_TICKET

</td>
<td>121: 打开频道的信令错误。请尝试重新加入频道。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa06cf41976ae4fc1bc960210762703a44"></a>ERR_OPEN_CHANNEL_TRY_NEXT_VOS

</td>
<td>122: 系统在尝试切换服务器。通常不需要额外处理，系统会自动尝试切换服务器以打开频道。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfaf27f83cacbf091827ba2804a0b20d9f6"></a>ERR_CLIENT_IS_BANNED_BY_SERVER

</td>
<td>123: 该客户端被服务器禁用。你需要检查 License 是否正确。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa5cac3070472de8ea86ac6cf7891be0f9"></a>ERR_AUDIO_CODEC_NOT_SUPPORT

</td>
<td>200: SDK 不支持当前使用的音频编解码器。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfadb49532e25ee95dbdc209325497f45aa"></a>ERR_AUDIO_INVALID_PCM_LEN

</td>
<td>201: PCM 音频数据长度无效。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa240ebc604dd0c0c95acbfa83092561f2"></a>ERR_AUDIO_INVALID_CODEC_PARAM

</td>
<td>202: 音频编解码器参数无效。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa57f59666f227d6474beca009c4818a5c"></a>ERR_VIDEO_SEND_OVER_BANDWIDTH_LIMIT

</td>
<td>300: 视频数据发送太快，且超出了宽带限制。当前发送速度下很可能发生丢包。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfac4ffd4b18a0ffa9ad022ece4dfa17611"></a>ERR_VIDEO_SEND_PACKETIZE_FAILED

</td>
<td>301: 视频包打包失败。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa33860e6a1c104ec31d5a9acd1cdf6b59"></a>ERR_RDT_USER_NOT_EXIST

</td>
<td>600: 用户不存在。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa5670dc5ba8b5f4f6ed372576b8bd342c"></a>ERR_RDT_USER_NOT_READY

</td>
<td>601: 用户状态未准备好。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa1eb07a0d4f19239c2626e2b956a8bde1"></a>ERR_RDT_DATA_BLOCKED

</td>
<td>602: 数据被拦截。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfaec9b32272bc37e2ba2352908d7037b39"></a>ERR_RDT_CMD_EXCEED_LIMIT

</td>
<td>603: 指令超出限制。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfad5480174d08af976c9d208da224bb28e"></a>ERR_RDT_DATA_EXCEED_LIMIT

</td>
<td>604: 数据消息大小超出限制。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa99f79ae8d0c0fba7a21c5899061370d9"></a>ERR_TOO_MANY_DATA_STREAMS

</td>
<td>621: 创建了太多的数据流。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa3c2c69fa6fde1c211261dedac621b271"></a>ERR_DATA_STREAM_SIZE_TOO_LARGE

</td>
<td>622: 创建的数据流大小超过了 1 KB。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfacb11c2ed338a02d1dca2aefea8ac2997"></a>ERR_NOT_EXIST_STREAM_ID

</td>
<td>623: 指定的数据流 ID 不存在。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa0465f9f918cc4a8b4d56a75a75ca471f"></a>ERR_DATA_STREAM_BITRATE_LIMIT

</td>
<td>624: 数据流的发送码率超过了 6 Kbps 的限制。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfae556a1ce5b7efd4ac96ca53042125d46"></a>ERR_DATA_STREAM_SEND_TOO_OFTEN

</td>
<td>625: 数据流发送太频繁，超过了每秒 60 个数据包的限制。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfaa9de59fef0c1280f43e4d8417de42dec"></a>ERR_DATA_STREAM_TIME_OUT

</td>
<td>626: 接收数据流的远端用户连接超时。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa6242b31e925eb8ef6ffc08bbedd16bb5"></a>ERR_RTM_NOT_LOGINED

</td>
<td>1001: 未登录 RTM 系统。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa517151a0b1753008e21d492546fc232e"></a>ERR_RTM_HAD_LOGINED

</td>
<td>1002: 已登录 RTM 系统。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa21e1a73cf5848a9d53600208c41608d8"></a>ERR_RTM_SEND_TO_SELF

</td>
<td>1003: 在 rtmUid 参数中误填了自己的用户 ID。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa04343a91456b801cd60af93c5aaa9fec"></a>ERR_RTM_EXCEED_MSG_SIZE

</td>
<td>1004: RTM 消息长度超出限制。消息长度至多为 31 KB。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfad191c4486b672a47bdaba4456ae9da47"></a>ERR_RTM_EXCEED_MSG_CNT

</td>
<td>1005: RTM 消息发送频率超出限制。每秒至多发送 60 条消息。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa25edc1b9a90535def16efc824e609f40"></a>ERR_RTM_EXCEED_SND_BUFFER

</td>
<td>1006: 消息通道已满。等待一秒后重新发送。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa5777b20d7a0f7dfe7476b6a536a83bf1"></a>`ERR_RTM_CUSTOM_TYPE_OUT_OF_LENGTH`

</td>
<td>1007: 自定义消息类型长度超出限制。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa6fda7e04b367a5991e5090fa05b3b1fc"></a>`ERR_RTM_CHANNEL_EXCEED_LIMIT`

</td>
<td>1008: RTM 频道订阅数量超过限制。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfa148395c6d831b6a1dad741a037eed1cb"></a>`ERR_RTM_CHANNEL_ALREADY_JOINED`

</td>
<td>1009: 已订阅该 RTM 频道。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfae831b617b71c7372d3c36b9662944007"></a>`ERR_RTM_CHANNEL_NOT_JOINED`

</td>
<td>1010: 未订阅该 RTM 频道。</td>
</tr>
<tr>
<td>

<a id="aec639f854206054cb48acde88e998abfab95fb89d9ef9a3a29d726f830c06501e"></a>`ERR_RTM_CHANNEL_SUBSCRIBE_TIMEOUT`

</td>
<td>1011: RTM 频道订阅超时。</td>
</tr>
</tbody>
</DocsTable>

<a id="a1a483a5b4b02019fa68b46a979ac1d1d"></a>

### area_code_e [#area_code_e]

<ApiSignature>

enum [area_code_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a1a483a5b4b02019fa68b46a979ac1d1d)

</ApiSignature>

访问区域。

<DocsTable>
<thead>
<tr>
<th colSpan={2} scope="colgroup">枚举值</th>
</tr>
</thead>
<tbody>
<tr>
<td>

<a id="a1a483a5b4b02019fa68b46a979ac1d1daf40ca70ae214b3fbcc4711d20264ac34"></a>AREA_CODE_DEFAULT

</td>
<td>同 AREA_CODE_GLOB 全球。</td>
</tr>
<tr>
<td>

<a id="a1a483a5b4b02019fa68b46a979ac1d1da5376eaaaa37364f52e686e9618704644"></a>AREA_CODE_CN

</td>
<td>中国大陆。</td>
</tr>
<tr>
<td>

<a id="a1a483a5b4b02019fa68b46a979ac1d1dade5398f89e5e62623975d453ff05d4d0"></a>AREA_CODE_NA

</td>
<td>北美。</td>
</tr>
<tr>
<td>

<a id="a1a483a5b4b02019fa68b46a979ac1d1da3146dc8cd0884e2288e3c5a99e1edba8"></a>AREA_CODE_EU

</td>
<td>欧洲。</td>
</tr>
<tr>
<td>

<a id="a1a483a5b4b02019fa68b46a979ac1d1da665ee85d6ebf73bfb174e2124e54c3f0"></a>AREA_CODE_AS

</td>
<td>亚洲（除中国大陆）。</td>
</tr>
<tr>
<td>

<a id="a1a483a5b4b02019fa68b46a979ac1d1da05af865b904b744b18eca08618e5e33a"></a>AREA_CODE_JP

</td>
<td>日本。</td>
</tr>
<tr>
<td>

<a id="a1a483a5b4b02019fa68b46a979ac1d1da5d1b9cf2e4ab60f185d4aff858af65de"></a>AREA_CODE_IN

</td>
<td>印度。</td>
</tr>
<tr>
<td>

<a id="a1a483a5b4b02019fa68b46a979ac1d1da15ec0ec19895f8539030d20fec839b92"></a>AREA_CODE_GLOB

</td>
<td>全球 (默认)。</td>
</tr>
</tbody>
</DocsTable>

<a id="a307c5bae03eb9a318e247a97e6fb5d88"></a>

### audio_codec_type_e [#audio_codec_type_e]

<ApiSignature>

enum [audio_codec_type_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a307c5bae03eb9a318e247a97e6fb5d88)

</ApiSignature>

SDK 内置的音频编解码器。

<DocsTable>
<thead>
<tr>
<th colSpan={2} scope="colgroup">枚举值</th>
</tr>
</thead>
<tbody>
<tr>
<td>

<a id="a307c5bae03eb9a318e247a97e6fb5d88aee23984f8e844a4812e5767d5c3ded2a"></a>AUDIO_CODEC_DISABLED

</td>
<td>0: 关闭 SDK 内置音频编解码器。</td>
</tr>
<tr>
<td>

<a id="a307c5bae03eb9a318e247a97e6fb5d88a3781227210ca6ad44cb5130912aa86f1"></a>AUDIO_CODEC_TYPE_OPUS

</td>
<td>1: 使用 SDK 内置的 Opus 编解码器进行音频编、解码。在 Opus 编码下， SDK 对单个声道支持 16 KHz 或 48 KHz 采样率。</td>
</tr>
<tr>
<td>

<a id="a307c5bae03eb9a318e247a97e6fb5d88a08df8754e9b5f4341d6ced220a42f6c0"></a>AUDIO_CODEC_TYPE_G722

</td>
<td>2: 使用 SDK 内置的 G722 编解码器进行音频编、解码。在 G722 编码下， 目前 SDK 对单个声道支持 16 KHz 采样率。</td>
</tr>
<tr>
<td>

<a id="a307c5bae03eb9a318e247a97e6fb5d88afd071094a3603f79860087c6461401b0"></a>AUDIO_CODEC_TYPE_G711A

</td>
<td>3: 使用 SDK 内置的 G711A（PCMU）编解码器进行音频编、解码。在 G711 编码下， 目前 SDK 对单个声道支持 8 KHz 采样率。</td>
</tr>
<tr>
<td>

<a id="a307c5bae03eb9a318e247a97e6fb5d88ae51691c9b8c96bafa34acc9ad0b7a279"></a>AUDIO_CODEC_TYPE_G711U

</td>
<td>4: 使用 SDK 内置的 G711U（PCMU）编解码器进行音频编、解码。在 G711 编码下， 目前 SDK 对单个声道支持 8 KHz 采样率。</td>
</tr>
</tbody>
</DocsTable>

<a id="a5a0f97a26cd357a5afed482c46360713"></a>

### audio_data_type_e [#audio_data_type_e]

<ApiSignature>

enum [audio_data_type_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a5a0f97a26cd357a5afed482c46360713)

</ApiSignature>

音频编码格式。

<DocsTable>
<thead>
<tr>
<th colSpan={2} scope="colgroup">枚举值</th>
</tr>
</thead>
<tbody>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713a3f8c5b8310e331b484d2e9bdd96a9e65"></a>AUDIO_DATA_TYPE_OPUS

</td>
<td>1: Opus。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713aed0f1de5cbc741fca1cd883f0703b7dc"></a>AUDIO_DATA_TYPE_OPUSFB

</td>
<td>2: OPUSFB。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713a3fdf1611e11ec005f166055523513e47"></a>AUDIO_DATA_TYPE_PCMA

</td>
<td>3: PCMA。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713ac646e8fc0f4d787812d1924941686833"></a>AUDIO_DATA_TYPE_PCMU

</td>
<td>4: PCMU。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713aa4db24b0e5dade22bb8a5084ee4379b5"></a>AUDIO_DATA_TYPE_G722

</td>
<td>5: G722。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713ab50e2697591f63de105892f5497dd2ce"></a>AUDIO_DATA_TYPE_AACLC_8K

</td>
<td>6: AAC-LC，采样率为 8000 Hz。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713af25a058a9829fa8b59ea8e12a20faa85"></a>AUDIO_DATA_TYPE_AACLC_16K

</td>
<td>7: AAC-LC，采样率为 16000 Hz。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713ad6bc3c1be3b7fbb7430e19b8b32620ac"></a>AUDIO_DATA_TYPE_AACLC

</td>
<td>8: AAC-LC，采样率为 48000 Hz。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713a7a56f5e0f8f63f45cd43c193765e14f4"></a>AUDIO_DATA_TYPE_HEAAC

</td>
<td>9: HE-AAC。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713a9aa542bd8000a4276bf048c978e8d22b"></a>AUDIO_DATA_TYPE_HEAAC2

</td>
<td>10: HEAAC2，采样率为 48000 Hz。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713a0f98039497f7c19bd015f5bb4f8ec1e8"></a>AUDIO_DATA_TYPE_AACLC_8K_2CH

</td>
<td>11: AACLC3，采样率为 8000 Hz，双声道。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713a40cd387960edbb5cdee75e5d32a0f6b1"></a>AUDIO_DATA_TYPE_AACLC_16K_2CH

</td>
<td>12: AACLC2，采样率为 16000 Hz，双声道。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713a91ff1a05fcc41cd8b4b12a660ac07912"></a>AUDIO_DATA_TYPE_AACLC_2CH

</td>
<td>13: AACLC，采样率为 48000 Hz，双声道。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713a889ef8c4ef7febf31183f9e3ba70b4cc"></a>AUDIO_DATA_TYPE_HEAAC_2CH

</td>
<td>14: HEAAC，采样率为 48000 Hz，双声道。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713a936a1ebce3310044a52d44fa82e81fcc"></a>AUDIO_DATA_TYPE_HEAAC2_2CH

</td>
<td>15: HEAAC2，采样率为 48000 Hz，双声道。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713a51ece05e4b93e6eac71e185784129695"></a>AUDIO_DATA_TYPE_AACLC1

</td>
<td>16: AACLC1，采样率为 44100 Hz。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713a5da85bcc06692acb9f438e14a1ca4f85"></a>AUDIO_DATA_TYPE_AACLC1_2CH

</td>
<td>17: AACLC1_2CH，采样率为 48000 Hz，双声道。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713acc7b6525f9c81c6c5a5d86be271c3177"></a>AUDIO_DATA_TYPE_HWAAC

</td>
<td>18: HWAAC，采样率为 32000 Hz。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713aeaff2b9a92a2712dbe730bed4c90e787"></a>AUDIO_DATA_TYPE_OPUSSWB

</td>
<td>20: OPUSSWB，采样率为 32000 Hz。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713a7074de58cd23212ffadc96486acc3a2a"></a>AUDIO_DATA_TYPE_OPUSFB_2CH

</td>
<td>21: OPUSFB，采样率为 48000 Hz，双声道。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713a7117fe39e61f769e8d8eea96393c7d55"></a>AUDIO_DATA_TYPE_PCM

</td>
<td>100: 用于传输的 PCM 数据。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713a58890eac24863b9d33fcc38e9b754b93"></a>AUDIO_DATA_TYPE_GENERIC

</td>
<td>253: Generic。</td>
</tr>
<tr>
<td>

<a id="a5a0f97a26cd357a5afed482c46360713ab7ec3f7839c1fad8efebde39f5f753ee"></a>AUDIO_DATA_TYPE_UNKNOW

</td>
<td>254: 音频数据类型未知。</td>
</tr>
</tbody>
</DocsTable>

<a id="a1e4f35ba0de825f5576535acfbaeb44e"></a>

### crypto_mode_e [#crypto_mode_e]

<ApiSignature>

enum [crypto_mode_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a1e4f35ba0de825f5576535acfbaeb44e)

</ApiSignature>

加密模式。

建议使用 [AES_128_GCM2](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a1e4f35ba0de825f5576535acfbaeb44ea23d6a46e00004410b9d00b41aba70e0d) 或 [AES_256_GCM2](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a1e4f35ba0de825f5576535acfbaeb44ea13555f5e3977644e0fb20ee80e9b841a) 加密模式。这两种模式支持使用盐，安全性更高。

<DocsTable>
<thead>
<tr>
<th colSpan={2} scope="colgroup">枚举值</th>
</tr>
</thead>
<tbody>
<tr>
<td>

<a id="a1e4f35ba0de825f5576535acfbaeb44eaac8f4cee1cda87f784affee3ad8a9ae0"></a>AES_128_XTS

</td>
<td>1: 128 位 AES 加密，XTS 模式。</td>
</tr>
<tr>
<td>

<a id="a1e4f35ba0de825f5576535acfbaeb44eac6c45ad2ab43103764084b7387370eef"></a>AES_128_ECB

</td>
<td>2: 128 位 AES 加密，ECB 模式。</td>
</tr>
<tr>
<td>

<a id="a1e4f35ba0de825f5576535acfbaeb44eae91864a3739588eb1578a198fa0ac485"></a>AES_256_XTS

</td>
<td>3: 256 位 AES 加密，XTS 模式。</td>
</tr>
<tr>
<td>

<a id="a1e4f35ba0de825f5576535acfbaeb44ea60a926d612bf4746c27f3a9cc079741e"></a>SM4_128_ECB

</td>
<td>4: 128 位 SM4 加密，ECB 模式。</td>
</tr>
<tr>
<td>

<a id="a1e4f35ba0de825f5576535acfbaeb44ea28831d24b0b2ea5946568f0295ff5ff1"></a>AES_128_GCM

</td>
<td>5: 128 位 AES 加密，GCM 模式。</td>
</tr>
<tr>
<td>

<a id="a1e4f35ba0de825f5576535acfbaeb44eaac51f4b0336ae8023ed7917103d2a384"></a>AES_256_GCM

</td>
<td>6: 256 位 AES 加密，GCM 模式。</td>
</tr>
<tr>
<td>

<a id="a1e4f35ba0de825f5576535acfbaeb44ea23d6a46e00004410b9d00b41aba70e0d"></a>AES_128_GCM2

</td>
<td>7: 128 位 AES 加密，GCM 模式。该加密模式需要设置盐（salt）。</td>
</tr>
<tr>
<td>

<a id="a1e4f35ba0de825f5576535acfbaeb44ea13555f5e3977644e0fb20ee80e9b841a"></a>AES_256_GCM2

</td>
<td>8: 256 位 AES 加密，GCM 模式。该加密模式需要设置盐（salt）。</td>
</tr>
<tr>
<td>

<a id="a1e4f35ba0de825f5576535acfbaeb44ea28f700099837307a467840b1a08df789"></a>CRYPTO_MODE_END

</td>
<td>枚举值边界。</td>
</tr>
</tbody>
</DocsTable>

<a id="a618863d233cf869b03dd5f99fc04b19b"></a>

### license_err_reason_e [#license_err_reason_e]

<ApiSignature>

enum [license_err_reason_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a618863d233cf869b03dd5f99fc04b19b)

</ApiSignature>

设备 License 验证失败的错误码。

<DocsTable>
<thead>
<tr>
<th colSpan={2} scope="colgroup">枚举值</th>
</tr>
</thead>
<tbody>
<tr>
<td>

<a id="a618863d233cf869b03dd5f99fc04b19ba8c336f3e57b8949dce62def59054fa47"></a>ERR_LICENSE_INVALID

</td>
<td>1: 无效 License。你需要重新调用 [agora_rtc_init](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a6187076d897f0b56cb20942368c15aaa) 并在 [rtc_service_option_t](/zh-CN/api-reference/rtsa/c/structrtc-service-option-t) 的 license_value 参数中填入正确的 License。</td>
</tr>
<tr>
<td>

<a id="a618863d233cf869b03dd5f99fc04b19ba632b512643b13d41661a7d98277a3298"></a>ERR_LICENSE_EXPIRE

</td>
<td>2: License 过期。你需要联系 [sales@shengwang.cn](mailto:sales@shengwang.cn) 进行续费。</td>
</tr>
<tr>
<td>

<a id="a618863d233cf869b03dd5f99fc04b19baa3840d2fc429f35fec29fe6b01727e1f"></a>ERR_LICENSE_MINUTES_EXCEED

</td>
<td>3: License 包含的通话时长已用完。你需要联系 [sales@shengwang.cn](mailto:sales@shengwang.cn) 购买通话时长更长的 License。</td>
</tr>
<tr>
<td>

<a id="a618863d233cf869b03dd5f99fc04b19bad04aee3336c0ff12013c9f4272813fda"></a>ERR_LICENSE_LIMITED_PERIOD

</td>
<td>4: 当前时间段受 License 限制，不能进行通话。你需要换一个 License 允许的时间段进行通话，或联系 [sales@shengwang.cn](mailto:sales@shengwang.cn) 购买通话时间段更长的 License。</td>
</tr>
<tr>
<td>

<a id="a618863d233cf869b03dd5f99fc04b19ba2dcf555d0e49276861482e527bbd5954"></a>ERR_LICENSE_DIFF_DEVICES

</td>
<td>5: License 已在其他设备中使用。一个 License 只允许在一台设备中使用，你需要重新调用 [agora_rtc_init](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a6187076d897f0b56cb20942368c15aaa) 并在 [rtc_service_option_t](/zh-CN/api-reference/rtsa/c/structrtc-service-option-t) 的 license_value 参数中填入一个新的 License。</td>
</tr>
<tr>
<td>

<a id="a618863d233cf869b03dd5f99fc04b19ba9b632de747f865d7e618efa59fca039f"></a>ERR_LICENSE_INTERNAL

</td>
<td>99: 内部原因。</td>
</tr>
</tbody>
</DocsTable>

<a id="a29a5e8defc6abf737109eb0b5349ac84"></a>

### rdt_state [#rdt_state]

<ApiSignature>

enum [rdt_state](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a29a5e8defc6abf737109eb0b5349ac84)

</ApiSignature>

RDT 通道的连接状态。

<DocsTable>
<thead>
<tr>
<th colSpan={2} scope="colgroup">枚举值</th>
</tr>
</thead>
<tbody>
<tr>
<td>

<a id="a29a5e8defc6abf737109eb0b5349ac84a757c5096332a339fdfe10488a955d6f5"></a>RDT_STATE_CLOSED

</td>
<td>初始状态，未连接 RDT 通道。该状态下用户不可以收发 RDT 消息。</td>
</tr>
<tr>
<td>

<a id="a29a5e8defc6abf737109eb0b5349ac84ae07e035ba0878b81839416a8fde5cf1c"></a>RDT_STATE_OPENED

</td>
<td>已连接 RDT 通道。该状态下用户可以收发 RDT 消息。</td>
</tr>
<tr>
<td>

<a id="a29a5e8defc6abf737109eb0b5349ac84afd20c1dde52083e0ced5b7a3ef42672e"></a>RDT_STATE_BLOCKED

</td>
<td>RDT 通道中的发送缓冲区已满。该状态下用户不可以发送数据消息 ([RDT_STREAM_DATA](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a39c4148522dd2ce2d729b8f264e7b955a04654c2c006244086c3b455375d10766))，但可以发送控制消息 ([RDT_STREAM_CMD](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a39c4148522dd2ce2d729b8f264e7b955a7f3a2a89aa98975482c02131bd224b46))。</td>
</tr>
<tr>
<td>

<a id="a29a5e8defc6abf737109eb0b5349ac84af89166c4372fa78670dffe957108a8d3"></a>RDT_STATE_PENDING

</td>
<td>

正在重新连接 RDT 通道。

- 如果重新连接成功，则连接状态会变为 [RDT_STATE_OPENED](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a29a5e8defc6abf737109eb0b5349ac84ae07e035ba0878b81839416a8fde5cf1c)，SDK 会保留 RDT 通道中发送和接收缓冲区中的历史数据。
- 如果重新连接失败，则连接状态会变为 [RDT_STATE_CLOSED](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a29a5e8defc6abf737109eb0b5349ac84a757c5096332a339fdfe10488a955d6f5)，SDK 会清除 RDT 通道中发送和接收缓冲区中的历史数据。

</td>
</tr>
<tr>
<td>

<a id="a29a5e8defc6abf737109eb0b5349ac84a186710d2d5fc763d84fe8d2697761142"></a>RDT_STATE_BROKEN

</td>
<td>与 RDT 通道的连接已损坏，SDK 会尝试重新连接。SDK 不论能否成功连接，都会清空 RDT 通道中发送和接收缓冲区中的历史数据。</td>
</tr>
</tbody>
</DocsTable>

<a id="a39c4148522dd2ce2d729b8f264e7b955"></a>

### rdt_stream_type [#rdt_stream_type]

<ApiSignature>

enum [rdt_stream_type](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a39c4148522dd2ce2d729b8f264e7b955)

</ApiSignature>

RDT 消息类型。

<DocsTable>
<thead>
<tr>
<th colSpan={2} scope="colgroup">枚举值</th>
</tr>
</thead>
<tbody>
<tr>
<td>

<a id="a39c4148522dd2ce2d729b8f264e7b955a7f3a2a89aa98975482c02131bd224b46"></a>RDT_STREAM_CMD

</td>
<td>控制消息。发送优先级高，不受拥塞控制策略影响，不会阻塞发送。每秒至多发送 100 个消息包，每个消息包的长度至多为 256 B。</td>
</tr>
<tr>
<td>

<a id="a39c4148522dd2ce2d729b8f264e7b955a04654c2c006244086c3b455375d10766"></a>RDT_STREAM_DATA

</td>
<td>数据消息。发送优先级低，受拥塞控制策略影响，如果缓冲区满了，则消息会发送失败。不限制发送的消息包数量，每个消息包的长度至多为 128 KB。</td>
</tr>
<tr>
<td>

<a id="a39c4148522dd2ce2d729b8f264e7b955ab13f605f38d97c90e09fa7846a1d6e06"></a>RDT_STREAM_COUNT

</td>
<td>枚举值边界。</td>
</tr>
</tbody>
</DocsTable>

<a id="abccb8cb27efdca58bafccf4092ccc868"></a>

### rtc_log_level_e [#rtc_log_level_e]

<ApiSignature>

enum [rtc_log_level_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#abccb8cb27efdca58bafccf4092ccc868)

</ApiSignature>

日志输出级别。

<DocsTable>
<thead>
<tr>
<th colSpan={2} scope="colgroup">枚举值</th>
</tr>
</thead>
<tbody>
<tr>
<td>

<a id="abccb8cb27efdca58bafccf4092ccc868a24e55625febbd7f5e86ebe04abab6d7b"></a>RTC_LOG_DEFAULT

</td>
<td>0：（默认）输出 EMERG、ALERT、CRIT、ERROR、WARNING、NOTICE 级别的日志。</td>
</tr>
<tr>
<td>

<a id="abccb8cb27efdca58bafccf4092ccc868a8d59102ccbd168181e12bf6ef4548b86"></a>RTC_LOG_EMERG

</td>
<td>1：输出 EMERG 级别的日志。</td>
</tr>
<tr>
<td>

<a id="abccb8cb27efdca58bafccf4092ccc868a42d3462b640722db79ee1b9119a17302"></a>RTC_LOG_ALERT

</td>
<td>2：输出 EMERG、ALERT 级别的日志。</td>
</tr>
<tr>
<td>

<a id="abccb8cb27efdca58bafccf4092ccc868afb611a30262f2f38c5ed802bea069e64"></a>RTC_LOG_CRIT

</td>
<td>3：输出 EMERG、ALERT、CRIT 级别的日志。</td>
</tr>
<tr>
<td>

<a id="abccb8cb27efdca58bafccf4092ccc868ad394cccfea48c61d07633bde0b39fdf1"></a>RTC_LOG_ERROR

</td>
<td>4：输出 EMERG、ALERT、CRIT、ERROR 级别的日志。</td>
</tr>
<tr>
<td>

<a id="abccb8cb27efdca58bafccf4092ccc868a60426a1d96e3be124df17385a4e55ed9"></a>RTC_LOG_WARNING

</td>
<td>5：输出 EMERG、ALERT、CRIT、ERROR、WARNING 级别的日志。</td>
</tr>
<tr>
<td>

<a id="abccb8cb27efdca58bafccf4092ccc868ae3eead5cceec7ef6dfaaa1ac83a42257"></a>RTC_LOG_NOTICE

</td>
<td>6：（默认）输出 EMERG、ALERT、CRIT、ERROR、WARNING、NOTICE 级别的日志。</td>
</tr>
<tr>
<td>

<a id="abccb8cb27efdca58bafccf4092ccc868ae1c0db40d0eaf716d43ff3d55188317c"></a>RTC_LOG_INFO

</td>
<td>7：输出 EMERG、ALERT、CRIT、ERROR、WARNING、NOTICE、INFO 级别的日志。</td>
</tr>
<tr>
<td>

<a id="abccb8cb27efdca58bafccf4092ccc868a8de3838b01978383dc3ade2c812b9d2e"></a>RTC_LOG_DEBUG

</td>
<td>8：输出所有 API 日志信息。如果你想获取最完整的日志，可以将日志级别设为该等级。</td>
</tr>
</tbody>
</DocsTable>

<a id="a67e13664c08581f85cd18c0e36299395"></a>

### rtm_err_code_e [#rtm_err_code_e]

<ApiSignature>

enum [rtm_err_code_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a67e13664c08581f85cd18c0e36299395)

</ApiSignature>

RTM 错误码。

<DocsTable>
<thead>
<tr>
<th colSpan={2} scope="colgroup">枚举值</th>
</tr>
</thead>
<tbody>
<tr>
<td>

<a id="a67e13664c08581f85cd18c0e36299395ae6d349a878142d7c39278c651009b3e7"></a>ERR_RTM_OK

</td>
<td>0: 方法调用成功或登录成功。</td>
</tr>
<tr>
<td>

<a id="a67e13664c08581f85cd18c0e36299395abe3684599c7991766805d00724b9a3bf"></a>ERR_RTM_FAILED

</td>
<td>1: 通用错误。你可以根据日志文件排查问题。</td>
</tr>
<tr>
<td>

<a id="a67e13664c08581f85cd18c0e36299395aaf7445dc645867b299b521d33d8806af"></a>ERR_RTM_LOGIN_REJECTED

</td>
<td>2: 声网服务器拒绝了登录 RTM 的请求。你需要检查 RTM Token、App ID、User ID 是否符合要求。</td>
</tr>
<tr>
<td>

<a id="a67e13664c08581f85cd18c0e36299395a028d05777130bf725b376f5398e55e1e"></a>ERR_RTM_INVALID_RTM_UID

</td>
<td>3: RTM 用户 ID 无效。你需要检查 User ID 是否符合要求。</td>
</tr>
<tr>
<td>

<a id="a67e13664c08581f85cd18c0e36299395a759c243b2f6579660e5283ea7fec49f4"></a>ERR_RTM_LOGIN_INVALID_TOKEN

</td>
<td>5: RTM Token 无效。你需要检查 Token 是否符合要求。</td>
</tr>
<tr>
<td>

<a id="a67e13664c08581f85cd18c0e36299395ae66c3720fed2b809991aad603b099678"></a>ERR_RTM_LOGIN_NOT_AUTHORIZED

</td>
<td>7: 未经授权的登录。你需要先进行登录，再进行其他操作。</td>
</tr>
<tr>
<td>

<a id="a67e13664c08581f85cd18c0e36299395aff3cd211a9e47d717330db875292c2c0"></a>ERR_RTM_LOCAL_NETDOWN

</td>
<td>8: 检测到网卡出现故障</td>
</tr>
<tr>
<td>

<a id="a67e13664c08581f85cd18c0e36299395a42ee38fc588f057ffa1d6cce5f1a8590"></a>ERR_RTM_LOCAL_INTERRUPT

</td>
<td>9: 本地用户网络中断。你需要检查网络是否正常。</td>
</tr>
<tr>
<td>

<a id="a67e13664c08581f85cd18c0e36299395a81c8a98baffacb7cef2555975fa91c9d"></a>ERR_RTM_LOCAL_TIMEOUT

</td>
<td>10: 本地用户没有收到服务端响应的心跳包。</td>
</tr>
<tr>
<td>

<a id="a67e13664c08581f85cd18c0e36299395a86dfec717916e6a4390117d20a4fe93e"></a>ERR_RTM_SERVER_TIMEOUT

</td>
<td>11: 服务器没有收到本地用户发动的心跳包。</td>
</tr>
<tr>
<td>

<a id="a67e13664c08581f85cd18c0e36299395a8de11746d8aa79253dfc4d2339974a7c"></a>ERR_RTM_INVALID_APP_ID

</td>
<td>101: RTM App ID 无效。你需要检查 App ID 是否符合要求。</td>
</tr>
<tr>
<td>

<a id="a67e13664c08581f85cd18c0e36299395ad8a80f6c8d330265bb1fbb23388e5fd7"></a>WARN_RTM_LOOKUP_CHANNEL_REJECTED

</td>
<td>105: 声网服务器拒绝了查询 RTM 频道的请求。你需要检查 RTM Token 是否符合要求。</td>
</tr>
<tr>
<td>

<a id="a67e13664c08581f85cd18c0e36299395a2bad14752327e855007347e23aa26217"></a>ERR_RTM_TOKEN_EXPIRED

</td>
<td>109: RTM Token 已过期。你需要重新生成 RTM Token。</td>
</tr>
<tr>
<td>

<a id="a67e13664c08581f85cd18c0e36299395a94a76b5f288a60b0182f21fd1994d3d6"></a>ERR_RTM_INVALID_TOKEN

</td>
<td>110: RTM Token 无效。你需要检查 Token 是否符合要求。</td>
</tr>
</tbody>
</DocsTable>

<a id="ab5b2cce4f434a399c2be533afaa837d7"></a>

### rtm_event_type_e [#rtm_event_type_e]

<ApiSignature>

enum [rtm_event_type_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ab5b2cce4f434a399c2be533afaa837d7)

</ApiSignature>

RTM RTM 事件类型。

<DocsTable>
<thead>
<tr>
<th colSpan={2} scope="colgroup">枚举值</th>
</tr>
</thead>
<tbody>
<tr>
<td>

<a id="ab5b2cce4f434a399c2be533afaa837d7ad113c30e603a965a059df68586de7bdc"></a>RTM_EVENT_TYPE_LOGIN

</td>
<td>0: 用户成功登录 RTM 服务。</td>
</tr>
<tr>
<td>

<a id="ab5b2cce4f434a399c2be533afaa837d7a05f8e9a7117c74b6f7f7063ca03b03a6"></a>RTM_EVENT_TYPE_KICKOFF

</td>
<td>1: 用户被踢出。可能的原因是 UID 重复。</td>
</tr>
<tr>
<td>

<a id="ab5b2cce4f434a399c2be533afaa837d7a791cd45e40580ae8ad73be9e325a0340"></a>RTM_EVENT_TYPE_EXIT

</td>
<td>

2: 用户退出 RTM 服务。可能得原因是：

- [ERR_RTM_SERVER_TIMEOUT](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a67e13664c08581f85cd18c0e36299395a86dfec717916e6a4390117d20a4fe93e)：服务器没有收到本地客户端发送的心跳包。
- [ERR_RTM_LOCAL_INTERRUPT](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a67e13664c08581f85cd18c0e36299395a42ee38fc588f057ffa1d6cce5f1a8590)：本地用户网络中断。
- [ERR_RTM_LOCAL_TIMEOUT](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a67e13664c08581f85cd18c0e36299395a81c8a98baffacb7cef2555975fa91c9d)：本地客户端没收到服务端响应的心跳包。
- [ERR_RTM_LOCAL_NETDOWN](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a67e13664c08581f85cd18c0e36299395aff3cd211a9e47d717330db875292c2c0)：检测到网卡出现故障。

在该状态下，SDK 会自动尝试重连，如果重连成功，则可以恢复登录。

</td>
</tr>
</tbody>
</DocsTable>

<a id="a35525a9e5a7992d762bf4e9084813f8d"></a>

### rtm_message_type_e [#rtm_message_type_e]

<ApiSignature>

enum [rtm_message_type_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a35525a9e5a7992d762bf4e9084813f8d)

</ApiSignature>

RTM 消息类型。

<DocsTable>
<thead>
<tr>
<th colSpan={2} scope="colgroup">枚举值</th>
</tr>
</thead>
<tbody>
<tr>
<td>

<a id="a35525a9e5a7992d762bf4e9084813f8da552385ad8ec29983109d4071662ff77f"></a>RTM_MESSAGE_TYPE_BINARY

</td>
<td>0: 二进制消息。</td>
</tr>
<tr>
<td>

<a id="a35525a9e5a7992d762bf4e9084813f8da464f052504625125b4d5a0c769a252ad"></a>RTM_MESSAGE_TYPE_STRING

</td>
<td>1: 字符串消息。</td>
</tr>
</tbody>
</DocsTable>

<a id="af57ca27ae3585628b148da1406cc9ce6"></a>

### rtm_msg_state_e [#rtm_msg_state_e]

<ApiSignature>

enum [rtm_msg_state_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#af57ca27ae3585628b148da1406cc9ce6)

</ApiSignature>

RTM 消息的发送状态。

<DocsTable>
<thead>
<tr>
<th colSpan={2} scope="colgroup">枚举值</th>
</tr>
</thead>
<tbody>
<tr>
<td>

<a id="af57ca27ae3585628b148da1406cc9ce6a27775e1bab1bd135224e14638cef8fcf"></a>RTM_MSG_STATE_INIT

</td>
<td>0: 初始状态。</td>
</tr>
<tr>
<td>

<a id="af57ca27ae3585628b148da1406cc9ce6aae52bb084b2ad43b9116f31faa58b772"></a>RTM_MSG_STATE_RECEIVED

</td>
<td>1: 消息已接收。</td>
</tr>
<tr>
<td>

<a id="af57ca27ae3585628b148da1406cc9ce6ae94a5a13749f792cff289e067a0a7e14"></a>RTM_MSG_STATE_UNREACHABLE

</td>
<td>2: 消息到达了服务端，但是不确定是否到达了远端用户。</td>
</tr>
<tr>
<td>

<a id="af57ca27ae3585628b148da1406cc9ce6a0b5a63f6422b819cbe63d337b555e243"></a>RTM_MSG_STATE_TIMEOUT

</td>
<td>服务端 10 秒内没有响应，SDK 会删除这条未知状态的消息。</td>
</tr>
</tbody>
</DocsTable>

<a id="aaa6c469f77d32b9c4e6d4c1676308cd5"></a>

### user_offline_reason_e [#user_offline_reason_e]

<ApiSignature>

enum [user_offline_reason_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#aaa6c469f77d32b9c4e6d4c1676308cd5)

</ApiSignature>

远端用户下线的原因。

<DocsTable>
<thead>
<tr>
<th colSpan={2} scope="colgroup">枚举值</th>
</tr>
</thead>
<tbody>
<tr>
<td>

<a id="aaa6c469f77d32b9c4e6d4c1676308cd5a8f60542089fd7be69f08f94d5990c6df"></a>USER_OFFLINE_QUIT

</td>
<td>0: 远端用户主动离开频道。</td>
</tr>
<tr>
<td>

<a id="aaa6c469f77d32b9c4e6d4c1676308cd5a05239488395bc85de4bf28c6e9a08f78"></a>USER_OFFLINE_DROPPED

</td>
<td>1: 因过长时间收不到远端用户的数据包，SDK 判定该远端用户超时掉线。注意：在网络连接不稳定时，该判定可能会有误。建议使用云信令 SDK 来做可靠的掉线检测。</td>
</tr>
<tr>
<td>

<a id="aaa6c469f77d32b9c4e6d4c1676308cd5aa96bd52b63153c3b4502cec78309013b"></a>USER_OFFLINE_BECOME_AUDIENCE

</td>
<td>2: 远端用户的角色从主播切换为观众。</td>
</tr>
</tbody>
</DocsTable>

<a id="a1ccdeb97ac0c919ca5de750fad95c222"></a>

### video_data_type_e [#video_data_type_e]

<ApiSignature>

enum [video_data_type_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a1ccdeb97ac0c919ca5de750fad95c222)

</ApiSignature>

视频编码格式。

<DocsTable>
<thead>
<tr>
<th colSpan={2} scope="colgroup">枚举值</th>
</tr>
</thead>
<tbody>
<tr>
<td>

<a id="a1ccdeb97ac0c919ca5de750fad95c222a24613b631dcf675ec3ba1224a8b5e91f"></a>VIDEO_DATA_TYPE_YUV420

</td>
<td>0: YUV420 （暂不支持）。</td>
</tr>
<tr>
<td>

<a id="a1ccdeb97ac0c919ca5de750fad95c222a366eef7674071f5d8a4288f9e35757ba"></a>VIDEO_DATA_TYPE_H264

</td>
<td>2: H264。</td>
</tr>
<tr>
<td>

<a id="a1ccdeb97ac0c919ca5de750fad95c222a7ea89e0b6742421358a4c61748f25a2f"></a>VIDEO_DATA_TYPE_H265

</td>
<td>3: H265。</td>
</tr>
<tr>
<td>

<a id="a1ccdeb97ac0c919ca5de750fad95c222ab9616cee056df34f7d2b0fc01f154445"></a>VIDEO_DATA_TYPE_GENERIC

</td>
<td>6: Generic。</td>
</tr>
<tr>
<td>

<a id="a1ccdeb97ac0c919ca5de750fad95c222aa2ab50c43048ca3282bed2bd5da5847e"></a>VIDEO_DATA_TYPE_GENERIC_JPEG

</td>
<td>20: Generic JPEG。</td>
</tr>
</tbody>
</DocsTable>

<a id="a6072f9d97582869362eaa8c81b028c22"></a>

### video_frame_type_e [#video_frame_type_e]

<ApiSignature>

enum [video_frame_type_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a6072f9d97582869362eaa8c81b028c22)

</ApiSignature>

视频帧类型。

<DocsTable>
<thead>
<tr>
<th colSpan={2} scope="colgroup">枚举值</th>
</tr>
</thead>
<tbody>
<tr>
<td>

<a id="a6072f9d97582869362eaa8c81b028c22a8d1bbd09567fb30a955faa706bc8eca2"></a>VIDEO_FRAME_AUTO_DETECT

</td>
<td>0: 未知。SDK 会自行判断帧类型。</td>
</tr>
<tr>
<td>

<a id="a6072f9d97582869362eaa8c81b028c22a4e31a5296b3c6791e574db21a2b0edae"></a>VIDEO_FRAME_KEY

</td>
<td>3: 关键帧。</td>
</tr>
<tr>
<td>

<a id="a6072f9d97582869362eaa8c81b028c22ae24012315af9ca7988080920f9cea6b7"></a>VIDEO_FRAME_DELTA

</td>
<td>4: Delta 帧，例如 P-Frame。</td>
</tr>
</tbody>
</DocsTable>

<a id="ab962f73944a73baa69882e4256aebad7"></a>

### video_orientation_e [#video_orientation_e]

<ApiSignature>

enum [video_orientation_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ab962f73944a73baa69882e4256aebad7)

</ApiSignature>

已编码视频帧的旋转角度。

<DocsTable>
<thead>
<tr>
<th colSpan={2} scope="colgroup">枚举值</th>
</tr>
</thead>
<tbody>
<tr>
<td>

<a id="ab962f73944a73baa69882e4256aebad7a9f6c6ff5146e77d5dcdfe7c464d2d0e2"></a>VIDEO_ORIENTATION_0

</td>
<td>0: （默认）顺时针旋转 0 度。</td>
</tr>
<tr>
<td>

<a id="ab962f73944a73baa69882e4256aebad7aa9bce06fe89f0788e6d7f4ec7eaf973f"></a>VIDEO_ORIENTATION_90

</td>
<td>1: 顺时针旋转 90 度。</td>
</tr>
<tr>
<td>

<a id="ab962f73944a73baa69882e4256aebad7a3dc54ff51606226550656fcede191ad8"></a>VIDEO_ORIENTATION_180

</td>
<td>2: 顺时针旋转 180 度。</td>
</tr>
<tr>
<td>

<a id="ab962f73944a73baa69882e4256aebad7ad70cb082af9397176c10dd21ed7b6c4a"></a>VIDEO_ORIENTATION_270

</td>
<td>3: 顺时针旋转 270 度。</td>
</tr>
</tbody>
</DocsTable>

<a id="a662fba13746193012793896faeb278ed"></a>

### video_stream_type_e [#video_stream_type_e]

<ApiSignature>

enum [video_stream_type_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a662fba13746193012793896faeb278ed)

</ApiSignature>

视频流类型。

<DocsTable>
<thead>
<tr>
<th colSpan={2} scope="colgroup">枚举值</th>
</tr>
</thead>
<tbody>
<tr>
<td>

<a id="a662fba13746193012793896faeb278eda046872b3583d9286bf805f16775efc4c"></a>VIDEO_STREAM_HIGH

</td>
<td>0: 视频大流。分辨率和码率较高。</td>
</tr>
<tr>
<td>

<a id="a662fba13746193012793896faeb278eda30bd873e1099b86ebf6d852ee2218319"></a>VIDEO_STREAM_LOW

</td>
<td>1: 视频小流。分辨率和码率较低。</td>
</tr>
</tbody>
</DocsTable>

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

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

## 函数说明 [#函数说明]

<a id="a390557a8930a59dfffbfd1d4b52e9c94"></a>

### agora_rtc_config_log() [#agora_rtc_config_log]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_config_log(int *size_per_file*, int *max_file_count*)

</ApiSignature>

配置 SDK 的日志文件。

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

每份日志文件的大小（字节）。取值范围为 [0,10 × 1024 × 1024]。默认值为 1 × 1024 × 1024，即 1 MB。如果你将此参数设为 0，则代表关闭日志功能。

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

日志文件数。取值范围为 [0,100]。默认值为 10。如果你将此参数设为 0，则代表关闭日志功能。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="adef869ae47e2f1c194af611b57d06394"></a>

### agora_rtc_create_connection() [#agora_rtc_create_connection]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_create_connection([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) * *conn_id*)

</ApiSignature>

创建 Connection。

你需要在加入频道前调用该方法创建 Connection。如需使用同一个用户 ID 加入不同频道，或者使用不同用户 ID 加入同一个频道，则你需要多次调用该方法创建多个 Connection，然后再使用对应的 Connection ID 加入频道。

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

Connection ID。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-1"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="aa6b288b479c7048b4cceb85d995771ed"></a>

### agora_rtc_create_data_stream() [#agora_rtc_create_data_stream]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_create_data_stream([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) *conn_id*, int * *stream_id*, bool *reliable*, bool *ordered*)

</ApiSignature>

创建数据流。

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

在 Connection 生命周期内，每个用户最多可以创建五条数据流。

:::info[注解]
- 该方法需要在加入频道后调用。
- SDK 不支持 reliable 设为 true，且 ordered 设为 false 的参数组合。
:::

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

Connection ID。

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

数据流 ID 指针。

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

是否保证数据可靠性，即接收方是否需要在数据发送后的 5 秒内接收：

- true: 是。SDK 提供有限度的可靠保证，在发送后的 5 秒内会有丢包检测和重传。
- false: 否。SDK 不做丢包检测和重传。

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

是否保证接收方需要收到有序的数据流：

- true: 接收方按照发送方发送的顺序收到数据流。
- false: 接收方不按照发送方发送的顺序收到数据流。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-2"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="ac58d42a331c45233d81085fc13defcaf"></a>

### agora_rtc_destroy_connection() [#agora_rtc_destroy_connection]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_destroy_connection([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) *conn_id*)

</ApiSignature>

销毁 Connection。

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

Connection ID。设为 [CONNECTION_ID_ALL](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a30a294de6c0b971e85edfa7265788772) 表示针对当前创建的所有 Connection。你可以通过 [agora_rtc_create_connection](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#adef869ae47e2f1c194af611b57d06394) 创建 Connection。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-3"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a4d71911dc6236c8317bed8e2e7be6a6f"></a>

### agora_rtc_err_2_str() [#agora_rtc_err_2_str]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) const char * agora_rtc_err_2_str(int *err*)

</ApiSignature>

将错误码转为静态字符串，以便查看错误描述。

:::info[注解]
使用后不必释放。
:::

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

错误码。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-4"}>返回值</h4>

静态字符串。

<a id="a09875c7766bbb543425da877a3ef6e1d"></a>

### agora_rtc_fini() [#agora_rtc_fini]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_fini(void)

</ApiSignature>

释放所有由 [agora_rtc_init](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a6187076d897f0b56cb20942368c15aaa) 方法分配给 RTSA 服务的资源。

<h4 data-toc-hidden="true" id={"返回值-5"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="aa3c03b5de5004ce61ba9f9e5a7637b25"></a>

### agora_rtc_get_connection_info() [#agora_rtc_get_connection_info]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_get_connection_info([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) *conn_id*, [connection_info_t](/zh-CN/api-reference/rtsa/c/structconnection-info-t) * *conn_info*)

</ApiSignature>

获取 Connection 信息。

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

Connection ID。设为 [CONNECTION_ID_ALL](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a30a294de6c0b971e85edfa7265788772) 表示针对当前创建的所有 Connection。你可以通过 [agora_rtc_create_connection](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#adef869ae47e2f1c194af611b57d06394) 创建 Connection。

</Parameter>
<Parameter name="conn_info" direction="[out]">

Connection 信息。详见 [connection_info_t](/zh-CN/api-reference/rtsa/c/structconnection-info-t) 。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-6"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a80f16bf3cf9bcdf8a6cecc51f8e584aa"></a>

### agora_rtc_get_rdt_status_info() [#agora_rtc_get_rdt_status_info]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_get_rdt_status_info([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) *conn_id*, uint32_t *remote_uid*, [rdt_status_info_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#aa8f682dca66b0793fbf74d1d467f5327) * *info*)

</ApiSignature>

获取 RDT 通道的信息。

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

该方法可以获取当前 RDT 通道的连接状态和缓冲区长度，从而判断远端用户是否成功接收 RDT 消息、本地用户是否可以继续发送 RDT 消息。例如，发送缓冲区长度 (send_queue_size) 为 0 表示远端用户已接收完 RDT 消息。

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

Connection ID。

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

远端用户的用户 ID。

</Parameter>
<Parameter name="info" direction="[out]">

RDT 通道的信息。详见 [rdt_status_info](/zh-CN/api-reference/rtsa/c/structrdt-status-info) 。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-7"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="ad6b1be785d6c2b4fa8fb0eac90290194"></a>

### agora_rtc_get_user_info_by_uid() [#agora_rtc_get_user_info_by_uid]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_get_user_info_by_uid([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) *conn_id*, uint32_t *uid*, [user_info_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a5a045013221683ad1abf079c2749c3de) * *user*)

</ApiSignature>

通过用户 ID 获取用户信息。

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

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

Connection ID。

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

用户 ID。

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

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

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-8"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a68efcfa431803942c8fdc733b00c30c1"></a>

### agora_rtc_get_user_info_by_user_account() [#agora_rtc_get_user_info_by_user_account]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_get_user_info_by_user_account([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) *conn_id*, const char * *user_account*, [user_info_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a5a045013221683ad1abf079c2749c3de) * *user*)

</ApiSignature>

通过用户 User account 获取用户信息。

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

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

Connection ID。

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

用户 User account。

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

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

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-9"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="ad01077e5b926ab8a6a1743a74ff3cdd7"></a>

### agora_rtc_get_version() [#agora_rtc_get_version]

<ApiSignature labels="extern">

const char * agora_rtc_get_version(void)

</ApiSignature>

获取 SDK 版本。

<h4 data-toc-hidden="true" id={"返回值-10"}>返回值</h4>

包含 SDK 版本信息的静态字符串。

<a id="a6187076d897f0b56cb20942368c15aaa"></a>

### agora_rtc_init() [#agora_rtc_init]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_init(const char * *app_id*, const [agora_rtc_event_handler_t](/zh-CN/api-reference/rtsa/c/structagora-rtc-event-handler-t) * *event_handler*, [rtc_service_option_t](/zh-CN/api-reference/rtsa/c/structrtc-service-option-t) * *option*)

</ApiSignature>

初始化 RTSA 服务。

:::info[注解]
- 每条进程只能初始化一次。
- SDK 每次初始化时会在指定的目录下自动创建一个新文件夹（随机命名），用于存放此次运行的日志。 SDK 不负责回收上一次初始化时创建的文件夹。为了避免日志占用过多空间，建议每次初始化之前先清空日志文件夹。
:::

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

声网为 App 开发者签发的 APP ID。

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

用于处理 SDK 事件的一系列回调。详见 [agora_rtc_event_handler_t](/zh-CN/api-reference/rtsa/c/structagora-rtc-event-handler-t) 。

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

服务配置选项，如果不需要设置则请置空。详见 [rtc_service_option_t](/zh-CN/api-reference/rtsa/c/structrtc-service-option-t) 。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-11"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a6c29ff27f04623526a164cf6e5dcd738"></a>

### agora_rtc_join_channel() [#agora_rtc_join_channel]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_join_channel([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) *conn_id*, const char * *channel_name*, uint32_t *uid*, const char * *token*, [rtc_channel_options_t](/zh-CN/api-reference/rtsa/c/structrtc-channel-options-t) * *options*)

</ApiSignature>

加入指定 Connection 所关联的 RTC 频道。

该方法让本地用户加入指定频道。同一个频道内使用相同 App ID 的用户可以互相传输数据。

:::info[注解]
- 你可以同时加入多个频道，所有你加入的频道都能接收到你发送的音视频数据。
- 如需使用同一个用户 ID 加入不同频道，或者使用不同用户 ID 加入同一个频道，则你需要创建不同的 Connection 并在调用 [agora_rtc_join_channel](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a6c29ff27f04623526a164cf6e5dcd738) 方法时填入对应的 Connection ID。
:::

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

Connection ID。设为 [CONNECTION_ID_ALL](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a30a294de6c0b971e85edfa7265788772) 表示针对当前创建的所有 Connection 。你可以通过 [agora_rtc_create_connection](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#adef869ae47e2f1c194af611b57d06394) 创建 Connection。

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

频道名，长度在 64 字节以内的字符串。以下为支持的字符集范围（共 89 个字符）：

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

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

用户 ID。

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

用于鉴权的 RTC Token。

- 如果你的声网项目启用的是 App ID 鉴权，可以将该值设为 NULL。
- 如果你的声网项目启用的是 App ID + Token 鉴权，你需要将该值设为应用服务端生成的 RTC Token。详见[使用 RTC Token 鉴权](/zh-CN/realtime-media/rtc/build/setup-and-access/token-authentication)。自 1.8.0 版本起，RTSA Lite SDK 支持 AccessToken2。1.8.0 之前的版本支持 AccessToken。

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

频道设置选项。详见 [rtc_channel_options_t](/zh-CN/api-reference/rtsa/c/structrtc-channel-options-t) 。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-12"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a64a24029bfaa5408e987122261385013"></a>

### agora_rtc_join_channel_with_user_account() [#agora_rtc_join_channel_with_user_account]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_join_channel_with_user_account([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) *conn_id*, const char * *channel_name*, const char * *user_account*, const char * *token*, [rtc_channel_options_t](/zh-CN/api-reference/rtsa/c/structrtc-channel-options-t) * *options*)

</ApiSignature>

使用用户 User account 加入指定 Connection 所关联的 RTC 频道。

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

该方法让本地用户加入指定频道。同一个频道内使用相同 App ID 的用户可以互相传输数据。

:::info[注解]
- 你可以同时加入多个频道，所有你加入的频道都能接收到你发送的音视频数据。
- 如需使用同一个用户 User account 加入不同频道，或者使用不同用户 User account 加入同一个频道，则你需要创建不同的 Connection 并在调用 [agora_rtc_join_channel_with_user_account](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a64a24029bfaa5408e987122261385013) 方法时填入对应的 Connection ID。
:::

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

Connection ID。

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

频道名，长度在 64 字节以内的字符串。以下为支持的字符集范围（共 89 个字符）：

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

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

用户 User account。

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

用于鉴权的 RTC Token。

- 如果你的声网项目启用的是 App ID 鉴权，可以将该值设为 NULL。
- 如果你的声网项目启用的是 App ID + Token 鉴权，你需要将该值设为应用服务端生成的 RTC Token。详见[使用 RTC Token 鉴权](/zh-CN/realtime-media/rtc/build/setup-and-access/token-authentication)。自 1.8.0 版本起，RTSA Lite SDK 支持 AccessToken2。1.8.0 之前的版本支持 AccessToken。

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

频道设置选项。详见 [rtc_channel_options_t](/zh-CN/api-reference/rtsa/c/structrtc-channel-options-t) 。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-13"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a939878648ce563ef4041da892d478f8b"></a>

### agora_rtc_leave_channel() [#agora_rtc_leave_channel]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_leave_channel([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) *conn_id*)

</ApiSignature>

离开指定 Connection 所关联的 RTC 频道。

停止在某频道传输数据后需要离开该频道。

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

Connection ID。设为 [CONNECTION_ID_ALL](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a30a294de6c0b971e85edfa7265788772) 表示针对当前创建的所有 Connection 。你可以通过 [agora_rtc_create_connection](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#adef869ae47e2f1c194af611b57d06394) 创建 Connection。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-14"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a6fe757f18a9c19e2bbc254a71061f280"></a>

### agora_rtc_license_gen_credential() [#agora_rtc_license_gen_credential]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_license_gen_credential(char * *credential*, unsigned int * *credential_len*)

</ApiSignature>

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

:::error[弃用]
自 v1.9.0 废弃。
:::

生成设备唯一标识 Credential。

:::info[注解]
该方法仅用于声网 License 机制。如不使用 License，可忽略该方法。
:::

<ParameterList title="参数">
<Parameter name="credential" direction="[out]">

用于存放 Credential 的缓冲区。

</Parameter>
<Parameter name="credential_len" direction="[in,out]">

缓冲区大小（字节）。

- 输入值用于确认缓冲区的可用长度（字节），需大于 [AGORA_CREDENTIAL_MAX_LEN](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a02e5aee7d86c93a30696a11c2da69fb4)。
- 输出值为 Credential 的实际长度（字节）。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-15"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="aa1b710e51d7520b83da6d4e9ef9711c6"></a>

### agora_rtc_license_strerror() [#agora_rtc_license_strerror]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) const char * agora_rtc_license_strerror(int *err*)

</ApiSignature>

获取 Licence 错误描述。

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

错误码。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-16"}>返回值</h4>

表示错误描述的字符串。

<a id="a8c9a8560c8b826db43cce78ce723c63f"></a>

### agora_rtc_license_verify() [#agora_rtc_license_verify]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_license_verify(const char * *certificate*, int *certificate_len*, const char * *credential*, int *credential_len*)

</ApiSignature>

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

:::error[弃用]
自 v1.9.0 废弃。改用 [on_license_validation_failure](/zh-CN/api-reference/rtsa/c/structagora-rtc-event-handler-t#af300f9a2a90391ce3ef8bbca2217bd91) 回调获取 License 校验失败的错误码。
:::

认证 SDK。

启用了声网 License 机制后，安装了 SDK 的设备只有通过 Certificate 验证 才能加入声网频道、使用数据传输功能。

:::info[注解]
- 该方法仅用于声网 License 机制。如不使用 License，可忽略该方法。
- 该方法必须在 [agora_rtc_init](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a6187076d897f0b56cb20942368c15aaa) 前调用。认证通过后，你才能有效调用 RTSA SDK 的其他 API。
:::

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

许可证 Certificate。

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

许可证长度。

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

凭证 Credential。

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

凭证长度。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-17"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a577ba22b315e7ec594221fb3f1e89ce7"></a>

<a id="abd4be43c4d5850c8753ef27c18417c20"></a>

### agora_rtm_login() [#agora_rtm_login]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtm_login(const char * *rtm_uid*, const char * *rtm_token*, const [agora_rtm_handler_t](/zh-CN/api-reference/rtsa/c/structagora-rtm-handler-t) * *handler*)

</ApiSignature>

登录 RTM。

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

RTM 用户 ID。该字符串不可超过 64 字节。不可设为空、NULL 或 "NULL"。以下为支持的字符集范围:

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

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

用于登录 RTM 系统的动态密钥。详见《校验用户权限》。如果你没有开启 Token 鉴权，此参数可设为 NULL。

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

RTM 回调。详见 [agora_rtm_handler_t](/zh-CN/api-reference/rtsa/c/structagora-rtm-handler-t) 。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-18"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="ab6ec6e5968325a3d24c4352f0b7dafec"></a>

<a id="a6775e5f6356091e50328cc5dd7c3f9a1"></a>

### agora_rtm_logout() [#agora_rtm_logout]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtm_logout(void)

</ApiSignature>

登出 RTM。

<h4 data-toc-hidden="true" id={"返回值-19"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a28c1dae086be4014ad732a07db248b16"></a>

### agora_rtc_mute_local_audio() [#agora_rtc_mute_local_audio]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_mute_local_audio([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) *conn_id*, bool *mute*)

</ApiSignature>

对指定 Connection 所关联的 RTC 频道暂停/恢复发送本地音频流。

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

Connection ID。设为 [CONNECTION_ID_ALL](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a30a294de6c0b971e85edfa7265788772) 表示针对当前创建的所有 Connection 。你可以通过 [agora_rtc_create_connection](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#adef869ae47e2f1c194af611b57d06394) 创建 Connection。

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

暂停/恢复发送本地音频流：

- 0:（默认）发送本地音频流。
- 其他值: 暂停发送本地音频流。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-20"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a47f116e271b78c0659fcd68a96d34224"></a>

### agora_rtc_mute_local_video() [#agora_rtc_mute_local_video]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_mute_local_video([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) *conn_id*, bool *mute*)

</ApiSignature>

指定 Connection 所关联的 RTC 频道暂停/恢复发送本地视频流。

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

Connection ID。设为 [CONNECTION_ID_ALL](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a30a294de6c0b971e85edfa7265788772) 表示针对当前创建的所有 Connection 。你可以通过 [agora_rtc_create_connection](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#adef869ae47e2f1c194af611b57d06394) 创建 Connection。

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

暂停/恢复发送本地视频流：

- 0:（默认）发送本地视频流。
- 其他值: 暂停发送本地视频流。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-21"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a8ad8bfa0e0a46a0c5e7fae11449ab575"></a>

### agora_rtc_mute_remote_audio() [#agora_rtc_mute_remote_audio]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_mute_remote_audio([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) *conn_id*, uint32_t *remote_uid*, bool *mute*)

</ApiSignature>

暂停/恢复接收指定 Connection 所关联的 RTC 频道内的指定远端用户的音频流。

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

Connection ID。设为 [CONNECTION_ID_ALL](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a30a294de6c0b971e85edfa7265788772) 表示针对当前创建的所有 Connection 。你可以通过 [agora_rtc_create_connection](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#adef869ae47e2f1c194af611b57d06394) 创建 Connection。

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

远端用户 ID。设为 0 则停止接收频道内所有用户的音频流。

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

暂停/恢复接收远端音频流：

- false:（默认）接收远端音频流。
- true: 暂停接收远端音频流。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-22"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a894f5a102c66b20c408bb495ac424efa"></a>

### agora_rtc_mute_remote_video() [#agora_rtc_mute_remote_video]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_mute_remote_video([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) *conn_id*, uint32_t *remote_uid*, bool *mute*)

</ApiSignature>

暂停/恢复接收指定 Connection 所关联的 RTC 频道内的指定远端用户的视频流。

可以先暂停接收所有频道的视频流，然后恢复接收指定频道的视频流。

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

Connection ID。设为 [CONNECTION_ID_ALL](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a30a294de6c0b971e85edfa7265788772) 表示针对当前创建的所有 Connection 。你可以通过 [agora_rtc_create_connection](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#adef869ae47e2f1c194af611b57d06394) 创建 Connection。

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

远端用户 ID。设为 0 则停止接收频道内所有用户的视频流。

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

暂停/恢复接收远端视频流：

- 0: （默认）接收远端视频流。
- 其他值: 暂停接收远端视频流。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-23"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a87c94a2d518278926807e24592b41336"></a>

### agora_rtc_renew_token() [#agora_rtc_renew_token]

<ApiSignature labels="extern">

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

</ApiSignature>

更新指定 Connection 所关联的 RTC 频道的 RTC Token。

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

Connection ID。设为 [CONNECTION_ID_ALL](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a30a294de6c0b971e85edfa7265788772) 表示针对当前创建的所有 Connection 。你可以通过 [agora_rtc_create_connection](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#adef869ae47e2f1c194af611b57d06394) 创建 Connection。

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

声网 RTC Token。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-24"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a74fbf2ac33a8cefce0f02de3eacc2577"></a>

### agora_rtc_request_video_key_frame() [#agora_rtc_request_video_key_frame]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_request_video_key_frame([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) *conn_id*, uint32_t *remote_uid*, [video_stream_type_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a662fba13746193012793896faeb278ed) *stream_type*)

</ApiSignature>

请求指定 Connection 所关联的 RTC 频道内的指定远端用户为指定远端视频流生成关键帧。

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

Connection ID。设为 [CONNECTION_ID_ALL](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a30a294de6c0b971e85edfa7265788772) 表示针对当前创建的所有 Connection 。你可以通过 [agora_rtc_create_connection](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#adef869ae47e2f1c194af611b57d06394) 创建 Connection。

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

远端用户 ID。如果为频道内的所有用户，则设为 0。

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

视频流类型。详见 [video_stream_type_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a662fba13746193012793896faeb278ed) 。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-25"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a0a00045d34a87e7a3798c6c906f9e197"></a>

### agora_rtc_send_audio_data() [#agora_rtc_send_audio_data]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_send_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*, [audio_frame_info_t](/zh-CN/api-reference/rtsa/c/structaudio-frame-info-t) * *info_ptr*)

</ApiSignature>

向指定 Connection 所关联的 RTC 频道发送音频帧。

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

Connection ID。设为 [CONNECTION_ID_ALL](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a30a294de6c0b971e85edfa7265788772) 表示针对当前创建的所有 Connection 。你可以通过 [agora_rtc_create_connection](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#adef869ae47e2f1c194af611b57d06394) 创建 Connection。

</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>

<h4 data-toc-hidden="true" id={"返回值-26"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a83dd3f91afbae5d54548c4d8e546aafc"></a>

### agora_rtc_send_media_ctrl_msg() [#agora_rtc_send_media_ctrl_msg]

<ApiSignature labels="extern">

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

</ApiSignature>

向所有频道或指定频道发送消息。

:::info[自从]
1.9.5
:::

成功调用该方法后，远端会触发 [on_media_ctrl_msg](/zh-CN/api-reference/rtsa/c/structagora-rtc-event-handler-t#a2e1c250bc84081128d1c2f4fed26bf92) 回调，远端用户可以在该回调中获取接收到的消息。

:::info[注解]
调用该方法时，你需要明确指定发送的频道；否则 SDK 会将消息发送到所有你加入的频道。
:::

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

Connection ID。

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

远端用户 ID；如果 remote_uid 设为 0，表示所有远端用户。

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

消息的 Payload。

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

消息的 Payload 长度。最大不能超过 1 KB。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-27"}>返回值</h4>

- 0: 方法调用成功
- &lt; 0: 方法调用失败

<a id="a056de38235f67ad1ea91cfd695ffaf61"></a>

### agora_rtc_send_rdt_msg() [#agora_rtc_send_rdt_msg]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_send_rdt_msg([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) *conn_id*, uint32_t *remote_uid*, [rdt_stream_type_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a18e9113feef6d094da117d9341b9c24a) *type*, const void * *msg*, size_t *length*)

</ApiSignature>

发送 RDT（Reliable Data Transmission，可靠数据传输）消息。

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

在文件传输、文件下载等需要可靠传输的场景中，你可以参考如下步骤发送 RDT 消息：

1. 在 RDT 通道中建立连接：在加入频道时，将 [rtc_channel_options_t](/zh-CN/api-reference/rtsa/c/structrtc-channel-options-t) 中的 enable_rdt 参数设置为 true，主动与频道内其他用户建立连接。
2. 获取 RDT 通道的连接状态：监听 [on_rdt_state](/zh-CN/api-reference/rtsa/c/structagora-rtc-event-handler-t#afe6c35e916473a1424f28d3fefbdda69) 回调。当在 RDT 通道中成功建立连接时，连接状态会变为 [RDT_STATE_OPENED](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a29a5e8defc6abf737109eb0b5349ac84ae07e035ba0878b81839416a8fde5cf1c)，此时才可进行下一步。
3. 调用 [agora_rtc_send_rdt_msg](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a056de38235f67ad1ea91cfd695ffaf61) 方法发送 RDT 消息：你可以根据需要发送控制消息 ([RDT_STREAM_CMD](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a39c4148522dd2ce2d729b8f264e7b955a7f3a2a89aa98975482c02131bd224b46)) 或数据消息 ([RDT_STREAM_DATA](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a39c4148522dd2ce2d729b8f264e7b955a04654c2c006244086c3b455375d10766))，二者区别如下：

- 控制消息。发送优先级高，不受拥塞控制策略影响，不会阻塞发送。每秒至多发送 100 个消息包，每个消息包的长度至多为 256 B。
- 数据消息。发送优先级低，受拥塞控制策略影响，如果缓冲区满了，则消息会发送失败。每个消息包的长度至多为 128 KB。

成功发送 RDT 消息后，远端用户会收到 [on_rdt_msg](/zh-CN/api-reference/rtsa/c/structagora-rtc-event-handler-t#a7b5b9ba5f3acaf9b336040e4edd282a5) 回调。你可以调用 agora_rtc_get_rdt_status_info 方法获取远端用户是否接收完消息等信息。

:::info[注解]
每条连接限制传输 4 Mbps。如果超出，会返回如下错误码：

- [ERR_RDT_CMD_EXCEED_LIMIT(603)](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#aec639f854206054cb48acde88e998abfaec9b32272bc37e2ba2352908d7037b39)，控制消息的数量超过限制。
- [ERR_RDT_DATA_EXCEED_LIMIT(604)](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#aec639f854206054cb48acde88e998abfad5480174d08af976c9d208da224bb28e): 数据数据大小超出限制。
:::

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

Connection ID。

</Parameter>
<Parameter name="remote_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="length" direction="[in]">

RDT 消息长度。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-28"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

  - RTC_ERR_RDT_USER_NOT_EXIST(600): 频道内不存在该远端用户。
  - RTC_ERR_RDT_USER_NOT_READY(601): 未成功与远端用户建立连接。你需要等 RDT 通道的连接状态变为 [RDT_STATE_OPENED](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a29a5e8defc6abf737109eb0b5349ac84ae07e035ba0878b81839416a8fde5cf1c) 后重新调用该方法。
  - RTC_ERR_RDT_DATA_BLOCKED(602): 发送缓冲区已满。你需要等 RDT 通道的连接状态变为 [RDT_STATE_OPENED](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a29a5e8defc6abf737109eb0b5349ac84ae07e035ba0878b81839416a8fde5cf1c) 后重新调用该方法。
  - RTC_ERR_RDT_CMD_EXCEED_LIMIT(603): 控制消息的数量超过限制。每秒发送的控制消息包不能超过 4 Mbps。. - [ERR_RDT_DATA_EXCEED_LIMIT(604)](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#aec639f854206054cb48acde88e998abfad5480174d08af976c9d208da224bb28e): 数据数据大小超出限制。

<a id="a1eaa46ebfb4613c624eef98ae7275319"></a>

<a id="ab001eda008555d96e4e64dc9e66687bf"></a>

### agora_rtm_send_data() [#agora_rtm_send_data]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtm_send_data(const char * *rtm_uid*, const void * *msg*, size_t *msg_len*, uint32_t *msg_id*, [rtm_message_type_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a35525a9e5a7992d762bf4e9084813f8d) *msg_type*, const char * *custom_type*)

</ApiSignature>

通过 RTM 服务发送消息。

RTM 默认开启基于 TLS 加密的传输层安全保护且不可关闭。

:::info[注解]
成功登录 RTM 服务并收到 [agora_rtm_handler_t::on_rtm_event](/zh-CN/api-reference/rtsa/c/structagora-rtm-handler-t#ab2549296a558191c8108cc5ca80de6ca) 回调时才可以发送消息。调用频率不能超过 3 秒 180 次。
:::

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

RTM 用户 ID。

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

消息内容。

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

消息长度，单位是字节，取值至多为 31 KB。

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

消息 ID。

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

消息类型，必须为 [RTM_MESSAGE_TYPE_BINARY](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a35525a9e5a7992d762bf4e9084813f8da552385ad8ec29983109d4071662ff77f) 或 [RTM_MESSAGE_TYPE_STRING](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a35525a9e5a7992d762bf4e9084813f8da464f052504625125b4d5a0c769a252ad) 。

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

自定义消息类型，仅当 msg_type 为 [RTM_MESSAGE_TYPE_STRING](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a35525a9e5a7992d762bf4e9084813f8da464f052504625125b4d5a0c769a252ad) 时支持，最长 32 字节；未设置时为 NULL。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-29"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="aee89fa14447b4529d45275afe5b5a86f"></a>

### agora_rtc_send_stream_message() [#agora_rtc_send_stream_message]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_send_stream_message([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) *conn_id*, int *stream_id*, const char * *data*, size_t *length*)

</ApiSignature>

向频道内的所有用户发送数据流。

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

调用 [agora_rtc_create_data_stream](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#aa6b288b479c7048b4cceb85d995771ed) 后，你可以调用该方法向频道内所有用户发送数据流消息。

:::info[注解]
- 该方法需要在加入频道后、且调用了 [agora_rtc_create_data_stream](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#aa6b288b479c7048b4cceb85d995771ed) 创建数据通道后调用。
- SDK 对该方法的实现进行了如下限制：

  - 单个频道里，每秒最多发送 60 个数据包，每个数据包的大小不能超过 1 KB。
  - 频道内每个客户端最多可以同时拥有 5 个数据通道，每个数据通道每秒最多发送 6 KB 的数据流。所有数据通道共用的总发包码率限制为 30 Kbps。
:::

成功调用该方法后，远端会触发 [on_stream_message](/zh-CN/api-reference/rtsa/c/structagora-rtc-event-handler-t#a60c9fde781cd1429ed824efeb1cdd7e5) 回调，远端用户可以在该回调中获取接收到的流消息。

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

发送的数据流 ID，在 [agora_rtc_create_data_stream](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#aa6b288b479c7048b4cceb85d995771ed) 方法的输出参数中返回。

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

待发送的数据的指针。

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

发送数据的大小。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-30"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a05973c4f32a5eb480e52b4f566601bf5"></a>

### agora_rtc_send_video_data() [#agora_rtc_send_video_data]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_send_video_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*, [video_frame_info_t](/zh-CN/api-reference/rtsa/c/structvideo-frame-info-t) * *info_ptr*)

</ApiSignature>

向指定 Connection 所关联的 RTC 频道发送视频帧。

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

Connection ID。设为 [CONNECTION_ID_ALL](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a30a294de6c0b971e85edfa7265788772) 表示针对当前创建的所有 Connection 。你可以通过 [agora_rtc_create_connection](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#adef869ae47e2f1c194af611b57d06394) 创建 Connection。

</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>

<h4 data-toc-hidden="true" id={"返回值-31"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="ae274291aadd1afb9974a4672ed6c2bb8"></a>

### agora_rtc_set_bwe_param() [#agora_rtc_set_bwe_param]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_set_bwe_param([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) *conn_id*, uint32_t *min_bps*, uint32_t *max_bps*, uint32_t *start_bps*)

</ApiSignature>

设置 bandwidth estimation (BWE) 参数。

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

Connection ID。设为 [CONNECTION_ID_ALL](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a30a294de6c0b971e85edfa7265788772) 表示针对当前创建的所有 Connection 。你可以通过 [agora_rtc_create_connection](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#adef869ae47e2f1c194af611b57d06394) 创建 Connection。

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

最小码率，单位为 bps。

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

最大码率，单位为 bps。

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

起始码率，单位为 bps。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-32"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a665de5b57dcb7b3c62d7a35b9a5992f7"></a>

### agora_rtc_set_log_level() [#agora_rtc_set_log_level]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_set_log_level([rtc_log_level_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#abccb8cb27efdca58bafccf4092ccc868) *level*)

</ApiSignature>

设置 SDK 的日志输出等级。

设置一个级别后，你可以看到该级别及之前所有级别的日志信息。

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

日志输出等级。详见 [rtc_log_level_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#abccb8cb27efdca58bafccf4092ccc868) 。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-33"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="a3d0aac6ce04ce9f2420c459fa9990d41"></a>

### agora_rtc_set_params() [#agora_rtc_set_params]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtc_set_params([connection_id_t](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad7f88cfbc57654bf3b391c3be0e8444c) *conn_id*, const char * *params*)

</ApiSignature>

通过 JSON 配置 SDK 提供技术预览或特别定制功能。

JSON 选项默认不公开。声网工程师正在努力寻求以标准化方式公开 JSON 选项。

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

Connection ID。如果设为 [CONNECTION_ID_ALL(0)](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a30a294de6c0b971e85edfa7265788772) 则表示所有 Connection。

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

JSON 字符串形式的参数。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"返回值-34"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。

<a id="ab3dfb2693ca2cc21a56862065a16d718"></a>

### agora_rtm_publish() [#agora_rtm_publish]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtm_publish(const char * *channel_name*, const void * *message*, size_t *length*, uint32_t *msg_id*, [rtm_message_type_e](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a35525a9e5a7992d762bf4e9084813f8d) *msg_type*, const char * *custom_type*)

</ApiSignature>

向 RTM 频道发布消息。

无需订阅该频道即可发布消息。最终发送结果通过 [agora_rtm_handler_t::on_rtm_publish_result](/zh-CN/api-reference/rtsa/c/structagora-rtm-handler-t#ab4a465f3612760c6b7b74f6b79a5e6f6) 回调报告。

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

目标频道名称。

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

消息数据。

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

消息长度，单位为字节，取值至多为 31 KB。

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

由应用定义的消息 ID。

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

消息类型，必须为 [RTM_MESSAGE_TYPE_BINARY](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a35525a9e5a7992d762bf4e9084813f8da552385ad8ec29983109d4071662ff77f) 或 [RTM_MESSAGE_TYPE_STRING](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#a35525a9e5a7992d762bf4e9084813f8da464f052504625125b4d5a0c769a252ad) 。

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

自定义消息类型，最长 31 字节；未设置时为 NULL。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"rtsa2083-agora_rtm_publish-return"}>返回值</h4>

- 0: 已接受发布请求。
- &lt; 0: 方法调用失败。

<a id="a30c2d99a514ebd98a4d335685668f595"></a>

### agora_rtm_subscribe() [#agora_rtm_subscribe]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtm_subscribe(const char * *channel_name*)

</ApiSignature>

异步订阅 RTM 频道。

订阅结果通过 [agora_rtm_handler_t::on_rtm_subscribe_result](/zh-CN/api-reference/rtsa/c/structagora-rtm-handler-t#a4af3bd1e0ff1e84245e81e7f2cb1fc79) 回调报告。

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

要订阅的频道名称。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"rtsa2083-agora_rtm_subscribe-return"}>返回值</h4>

- 0: 已接受订阅请求。
- &lt; 0: 方法调用失败。

<a id="a80ccd21954a2f23c1fc7d0b540709fe6"></a>

### agora_rtm_unsubscribe() [#agora_rtm_unsubscribe]

<ApiSignature labels="extern">

[__agora_api__](/zh-CN/api-reference/rtsa/c/agora-rtc-api-8h#ad2a412e8ee6a8a2002439dda41fcf809) int agora_rtm_unsubscribe(const char * *channel_name*)

</ApiSignature>

同步取消订阅 RTM 频道。

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

要取消订阅的频道名称。

</Parameter>
</ParameterList>

<h4 data-toc-hidden="true" id={"rtsa2083-agora_rtm_unsubscribe-return"}>返回值</h4>

- 0: 方法调用成功。
- &lt; 0: 方法调用失败。
