# agora::linuxsdk 命名空间参考 (/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk)

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

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

<a id="af50c9c155458449dbe080a49543815fa"></a>

### uchar_t [#uchar_t]

<ApiSignature>

typedef unsigned char [agora::linuxsdk::uchar_t](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#af50c9c155458449dbe080a49543815fa)

</ApiSignature>

<a id="a77da0a90fda43eee8b6a004e607cf116"></a>

### uint_t [#uint_t]

<ApiSignature>

typedef unsigned int [agora::linuxsdk::uint_t](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a77da0a90fda43eee8b6a004e607cf116)

</ApiSignature>

<a id="a8ec0e86208531827f0014a30bb4ae395"></a>

### uid_t [#uid_t]

<ApiSignature>

typedef unsigned int [agora::linuxsdk::uid_t](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a8ec0e86208531827f0014a30bb4ae395)

</ApiSignature>

<a id="a9cc1f6639ee34314ef127d703c7c7b5d"></a>

### u64_t [#u64_t]

<ApiSignature>

typedef uint64_t [agora::linuxsdk::u64_t](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a9cc1f6639ee34314ef127d703c7c7b5d)

</ApiSignature>

<a id="a18df28a194b2daad6df9f1081d18e428"></a>

### VideoMixingLayout [#videomixinglayout]

<ApiSignature>

typedef struct [agora::linuxsdk::VideoMixingLayout](/zh-CN/api-reference/local-server-recording/cpp/legacy/structagora-1-1linuxsdk-1-1-video-mixing-layout) [agora::linuxsdk::VideoMixingLayout](/zh-CN/api-reference/local-server-recording/cpp/legacy/structagora-1-1linuxsdk-1-1-video-mixing-layout)

</ApiSignature>

视频合流布局的具体设置。

<a id="ac9c6bde3c4ac9a5a824a8c24963dbde1"></a>

### UserJoinInfos [#userjoininfos]

<ApiSignature>

typedef struct [agora::linuxsdk::UserJoinInfos](/zh-CN/api-reference/local-server-recording/cpp/legacy/structagora-1-1linuxsdk-1-1-user-join-infos) [agora::linuxsdk::UserJoinInfos](/zh-CN/api-reference/local-server-recording/cpp/legacy/structagora-1-1linuxsdk-1-1-user-join-infos)

</ApiSignature>

用户加入频道信息。

<a id="a5f37e3fa14fad2982f248d247d76996b"></a>

### ERROR_CODE_TYPE [#error_code_type]

<ApiSignature>

enum [agora::linuxsdk::ERROR_CODE_TYPE](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a5f37e3fa14fad2982f248d247d76996b)

</ApiSignature>

错误代码。

:::info[注解]
使用 Recording SDK 的过程中，也可能收到 Native SDK 的错误代码，请参考 [Agora Native/Web SDK 错误代码](/zh-CN/realtime-media/rtc/reference/error-code)。
:::

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

<a id="a5f37e3fa14fad2982f248d247d76996bafd291480b064f3ce68fa982c5f485b30"></a>ERR_OK

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

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

</td>
<td>1：一般性的错误（没有明确归类的错误原因）。</td>
</tr>
<tr>
<td>

<a id="a5f37e3fa14fad2982f248d247d76996ba97a3ce54bed6d0ec01629a572853544c"></a>ERR_INVALID_ARGUMENT

</td>
<td>2：API 调用了无效的参数。例如指定的频道名含有非法字符。</td>
</tr>
<tr>
<td>

<a id="a5f37e3fa14fad2982f248d247d76996ba51050a5caf96e71d4d316f7563d6be87"></a>ERR_INTERNAL_FAILED

</td>
<td>3：SDK 内部启动失败。</td>
</tr>
</tbody>
</DocsTable>

<a id="a467894afed372a4fe76594a6223869a0"></a>

### STAT_CODE_TYPE [#stat_code_type]

<ApiSignature>

enum [agora::linuxsdk::STAT_CODE_TYPE](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a467894afed372a4fe76594a6223869a0)

</ApiSignature>

状态代码。

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

<a id="a467894afed372a4fe76594a6223869a0a2205467984c378afe1e17d0af8955f66"></a>STAT_OK

</td>
<td>0：一切正常。</td>
</tr>
<tr>
<td>

<a id="a467894afed372a4fe76594a6223869a0aa716a41d5c239ad4cfe0c6f7833a342b"></a>STAT_ERR_FROM_ENGINE

</td>
<td>1：Nativa SDK 产生的错误。详见 [Agora Native/Web SDK 错误代码](/zh-CN/realtime-media/rtc/reference/error-code)。</td>
</tr>
<tr>
<td>

<a id="a467894afed372a4fe76594a6223869a0ae64facec04ea4380e549613931af334b"></a>STAT_ERR_ARS_JOIN_CHANNEL

</td>
<td>2：加入频道失败。</td>
</tr>
<tr>
<td>

<a id="a467894afed372a4fe76594a6223869a0af5832ccfa35835ddfb3a2c2929c5cb6f"></a>STAT_ERR_CREATE_PROCESS

</td>
<td>3：创建进程失败。</td>
</tr>
<tr>
<td>

<a id="a467894afed372a4fe76594a6223869a0a38fa0dc46da5d1f46c5d7ee152fb6d33"></a>STAT_ERR_MIXED_INVALID_VIDEO_PARAM

</td>
<td>4: 合流视频参数设置错误。请参考分辨率、帧率、码率对照表设置合流视频编码属性。</td>
</tr>
<tr>
<td>

<a id="a467894afed372a4fe76594a6223869a0a838b9fbb8c17e4e851dfb6a8808ed0bb"></a>STAT_ERR_NULL_POINTER

</td>
<td>5：无效的指针。</td>
</tr>
<tr>
<td>

<a id="a467894afed372a4fe76594a6223869a0ade4ff22dd630c37c1a08e6e2b34b7023"></a>STAT_ERR_PROXY_SERVER_INVALID_PARAM

</td>
<td>6：代理服务器参数无效。</td>
</tr>
<tr>
<td>

<a id="a467894afed372a4fe76594a6223869a0a249dd0e7d73e85c09002c04f04d3a7cb"></a>STAT_POLL_ERR

</td>
<td>0x8：轮询出错。</td>
</tr>
<tr>
<td>

<a id="a467894afed372a4fe76594a6223869a0afdfa541a6a6cd208fee2a545f53eb1f5"></a>STAT_POLL_HANG_UP

</td>
<td>0x10：轮询挂起。</td>
</tr>
<tr>
<td>

<a id="a467894afed372a4fe76594a6223869a0a051a7c04855f01ae8af4345e34f51ffc"></a>STAT_POLL_NVAL

</td>
<td>0x20：轮询请求无效。</td>
</tr>
</tbody>
</DocsTable>

<a id="a9bed76add2c986c154d0ab761a7a07ac"></a>

### LEAVE_PATH_CODE [#leave_path_code]

<ApiSignature>

enum [agora::linuxsdk::LEAVE_PATH_CODE](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a9bed76add2c986c154d0ab761a7a07ac)

</ApiSignature>

录制端离开频道的原因。将 `LEAVE_PATH_CODE` 与各枚举值逐一进行按位与运算，计算结果非零的，即为退出原因。例如，code 为 `6`（二进制 110）时，将其与各枚举值逐一进行按位与计算，`LEAVE_CODE_SIG` (二进制 10）与 `LEAVE_CODE_NO_USERS` (二进制 100）的结果非零，则退出原因包括收到 SIGINT 信号以及录制超时。

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

<a id="a9bed76add2c986c154d0ab761a7a07aca1db899a2146c02cce119b5d4c0eeedb2"></a>LEAVE_CODE_INIT

</td>
<td>0：初始化失败。</td>
</tr>
<tr>
<td>

<a id="a9bed76add2c986c154d0ab761a7a07aca7ffbd32955bc508166a6cef320ae95e7"></a>LEAVE_CODE_SIG

</td>
<td>2（二进制 10）：AgoraCoreService 收到 SIGINT 信号而触发的退出。</td>
</tr>
<tr>
<td>

<a id="a9bed76add2c986c154d0ab761a7a07aca67fb28084c8653162efefdb537f8c04d"></a>LEAVE_CODE_NO_USERS

</td>
<td>4（二进制 100）：频道内除录制端外没有其他用户，录制端自动离开频道。</td>
</tr>
<tr>
<td>

<a id="a9bed76add2c986c154d0ab761a7a07aca018d08044909bc0dfd09a42d11d177ae"></a>LEAVE_CODE_TIMER_CATCH

</td>
<td>8（二进制 1000）：可忽略。</td>
</tr>
<tr>
<td>

<a id="a9bed76add2c986c154d0ab761a7a07aca8941a7e5bb71f7ec6eeaa2e7d676dccd"></a>LEAVE_CODE_CLIENT_LEAVE

</td>
<td>16（二进制 10000）：录制端调用 [leaveChannel](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine#adafb45815ad0f02dc1c8b3cadb7cd2e3) 方法退出频道。</td>
</tr>
</tbody>
</DocsTable>

<a id="a11cab69078db26c1f166c68e469dcfcf"></a>

### WARN_CODE_TYPE [#warn_code_type]

<ApiSignature>

enum [agora::linuxsdk::WARN_CODE_TYPE](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a11cab69078db26c1f166c68e469dcfcf)

</ApiSignature>

警告代码。

:::info[注解]
使用 Recording SDK 的过程中，也可能收到 Native SDK 的警告代码，请参考 [Agora Native/Web SDK 警告代码](/zh-CN/realtime-media/rtc/reference/error-code)。
:::

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

<a id="a11cab69078db26c1f166c68e469dcfcfa7748954452a2b535e46b9913a748db74"></a>WARN_NO_AVAILABLE_CHANNEL

</td>
<td>103：没有可用的频道资源。可能是因为服务端没法分配频道资源。</td>
</tr>
<tr>
<td>

<a id="a11cab69078db26c1f166c68e469dcfcfa3fcb9a17b0f1b5de154ee12cc76afea0"></a>WARN_LOOKUP_CHANNEL_TIMEOUT

</td>
<td>104：查找频道超时。在加入频道时 SDK 先要查找指定的频道，出现该警告一般是因为网络太差，连接不到服务器。</td>
</tr>
<tr>
<td>

<a id="a11cab69078db26c1f166c68e469dcfcfaefa6dabe37b1193dd15b3f699565522e"></a>WARN_LOOKUP_CHANNEL_REJECTED

</td>
<td>105：查找频道请求被服务器拒绝。服务器可能没有办法处理这个请求或请求是非法的。</td>
</tr>
<tr>
<td>

<a id="a11cab69078db26c1f166c68e469dcfcfa25e7c3094cbc037e50fd52a1a0474a8e"></a>WARN_OPEN_CHANNEL_TIMEOUT

</td>
<td>106：打开频道超时。查找到指定频道后，SDK 接着打开该频道，超时一般是因为网络太差，连接不到服务器。</td>
</tr>
<tr>
<td>

<a id="a11cab69078db26c1f166c68e469dcfcfa5ee9cffb10e91118ecf261aed8bf5d7d"></a>WARN_OPEN_CHANNEL_REJECTED

</td>
<td>107：打开频道请求被服务器拒绝。服务器可能没有办法处理该请求或该请求是非法的。</td>
</tr>
<tr>
<td>

<a id="a11cab69078db26c1f166c68e469dcfcfad9d2348e4a754966945c164e08e747b7"></a>WARN_RECOVERY_CORE_SERVICE_FAILURE

</td>
<td>108：录制程序出现了异常错误（例如崩溃），录制 SDK 会重新恢复录制。</td>
</tr>
<tr>
<td>

<a id="a11cab69078db26c1f166c68e469dcfcfaf1f87138125039c6625b0543cb4ca1c1"></a>WARN_DECRYPTION_FAILED

</td>
<td>120: 错误的解密模式或解密密码。</td>
</tr>
</tbody>
</DocsTable>

<a id="ad9f9be8fcec3408e36ec870c8eb9808e"></a>

### CHANNEL_PROFILE_TYPE [#channel_profile_type]

<ApiSignature>

enum [agora::linuxsdk::CHANNEL_PROFILE_TYPE](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#ad9f9be8fcec3408e36ec870c8eb9808e)

</ApiSignature>

频道模式。

:::info[注解]
录制的频道模式必须和 Native SDK 或 Web SDK 设置的频道模式保持一致，否则可能导致问题。
:::

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

<a id="ad9f9be8fcec3408e36ec870c8eb9808ea0700d38641239c4fc2de13be093bde87"></a>CHANNEL_PROFILE_COMMUNICATION

</td>
<td>0：（默认）通信，即常见的 1 对 1 单聊或群聊，频道内任何用户可以自由说话。</td>
</tr>
<tr>
<td>

<a id="ad9f9be8fcec3408e36ec870c8eb9808ea9d2c393ae49bd0a43767db6341e4fbf9"></a>CHANNEL_PROFILE_LIVE_BROADCASTING

</td>
<td>1：直播，有两种用户角色：主播和观众。</td>
</tr>
</tbody>
</DocsTable>

<a id="a0e6e9d00d96e6ae8da87bffa12a675f4"></a>

### USER_OFFLINE_REASON_TYPE [#user_offline_reason_type]

<ApiSignature>

enum [agora::linuxsdk::USER_OFFLINE_REASON_TYPE](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a0e6e9d00d96e6ae8da87bffa12a675f4)

</ApiSignature>

用户离开当前频道或掉线的原因。

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

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

</td>
<td>0：用户主动离开。</td>
</tr>
<tr>
<td>

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

</td>
<td>1：因过长时间收不到对方数据包，超时掉线。注意：可能有误判。</td>
</tr>
<tr>
<td>

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

</td>
<td>2：用户身份从主播切换为观众时触发。该选项仅适用于当你在调用 [joinChannel](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine#a011ff5c4a47816050be60b26ba0fb431) 时将频道模式设置为直播的场景。</td>
</tr>
</tbody>
</DocsTable>

<a id="a15775e611bf72104f8210b3ad70e107d"></a>

### REMOTE_VIDEO_STREAM_TYPE [#remote_video_stream_type]

<ApiSignature>

enum [agora::linuxsdk::REMOTE_VIDEO_STREAM_TYPE](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a15775e611bf72104f8210b3ad70e107d)

</ApiSignature>

选择视频流类型。仅在 Agora Native SDK 或 Web SDK 开启双流模式时有效。

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

<a id="a15775e611bf72104f8210b3ad70e107dac72d8ee77dd2e02b824dfb9ae6d0de3d"></a>REMOTE_VIDEO_STREAM_HIGH

</td>
<td>0：（默认）大流。</td>
</tr>
<tr>
<td>

<a id="a15775e611bf72104f8210b3ad70e107da170ccd8856c53625d332155f7fadf82d"></a>REMOTE_VIDEO_STREAM_LOW

</td>
<td>1：小流。</td>
</tr>
</tbody>
</DocsTable>

<a id="a6ec9426fec3c703757f31793b55c41dd"></a>

### VIDEO_FORMAT_TYPE [#video_format_type]

<ApiSignature>

enum [agora::linuxsdk::VIDEO_FORMAT_TYPE](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a6ec9426fec3c703757f31793b55c41dd)

</ApiSignature>

录制视频格式。

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

<a id="a6ec9426fec3c703757f31793b55c41ddaa35b5787504d13596f9d01fc7e07307a"></a>VIDEO_FORMAT_DEFAULT_TYPE

</td>
<td>0：默认视频格式。基于你的 codec 设置，默认视频格式可能为 MP4 或 WebM。</td>
</tr>
<tr>
<td>

<a id="a6ec9426fec3c703757f31793b55c41ddacf272508c13889eb386cb0ab0c214f45"></a>VIDEO_FORMAT_H264_FRAME_TYPE

</td>
<td>**DEPRECATED** 1：原始视频数据 H.264 帧格式。</td>
</tr>
<tr>
<td>

<a id="a6ec9426fec3c703757f31793b55c41dda2802098f00571cc3e9929991b1dddffd"></a>VIDEO_FORMAT_ENCODED_FRAME_TYPE

</td>
<td>1: 原始视频数据 H.264 或 H.265 帧格式。如设置该格式，你可通过 [videoFrameReceived](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine-event-handler#ac1121a1af126872bbbe2cb2767c311d4) 回调接收原始视频数据。</td>
</tr>
<tr>
<td>

<a id="a6ec9426fec3c703757f31793b55c41ddadfe385988def3b49d1ca60e3c4685de2"></a>VIDEO_FORMAT_YUV_FRAME_TYPE

</td>
<td>2：原始视频数据 YUV 帧格式。如设置该格式，你可通过 [videoFrameReceived](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine-event-handler#ac1121a1af126872bbbe2cb2767c311d4) 回调接收原始视频数据。</td>
</tr>
<tr>
<td>

<a id="a6ec9426fec3c703757f31793b55c41dda2219c67450a3e0fe67ae5e974c174f0c"></a>VIDEO_FORMAT_JPG_FRAME_TYPE

</td>
<td>3：原始视频数据 JPG 帧格式。如设置该格式，你可通过 [videoFrameReceived](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine-event-handler#ac1121a1af126872bbbe2cb2767c311d4) 回调接收原始视频数据。</td>
</tr>
<tr>
<td>

<a id="a6ec9426fec3c703757f31793b55c41ddaf73babc312f910529b26ddbf8bbe0607"></a>VIDEO_FORMAT_JPG_FILE_TYPE

</td>
<td>4：JPG 文件格式。</td>
</tr>
<tr>
<td>

<a id="a6ec9426fec3c703757f31793b55c41dda768818c31ae7624a94764eafd019ab29"></a>VIDEO_FORMAT_JPG_VIDEO_FILE_TYPE

</td>
<td>

5：JPG 文件格式 + MP4 或 WebM 视频文件格式。

- 单流模式（[isMixingEnabled](/zh-CN/api-reference/local-server-recording/cpp/legacy/structagora-1-1recording-1-1-recording-config#a1ee4fc94e7de4c810a5ad0f4f4327299) 为 false）下，录制得到多个 MP4 或 WebM 视频文件，并截图获得多个 JPG 文件。
- 合流模式 ([isMixingEnabled](/zh-CN/api-reference/local-server-recording/cpp/legacy/structagora-1-1recording-1-1-recording-config#a1ee4fc94e7de4c810a5ad0f4f4327299) 为 true）下，对合流录制，得到一个 MP4 或 WebM 视频文件，并对各单流截图，获得多个 JPG 文件。

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

<a id="a97f1f8e3aa7bfe77c9c5f8d9d208bb1f"></a>

### AUDIO_FORMAT_TYPE [#audio_format_type]

<ApiSignature>

enum [agora::linuxsdk::AUDIO_FORMAT_TYPE](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a97f1f8e3aa7bfe77c9c5f8d9d208bb1f)

</ApiSignature>

录制音频格式。

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

<a id="a97f1f8e3aa7bfe77c9c5f8d9d208bb1fa13a4455904d6383130b2ae4329fdc851"></a>AUDIO_FORMAT_DEFAULT_TYPE

</td>
<td>0：默认音频格式，即 AAC 格式。</td>
</tr>
<tr>
<td>

<a id="a97f1f8e3aa7bfe77c9c5f8d9d208bb1fa22b4ffbe91cae033c868ac28baec5a61"></a>AUDIO_FORMAT_AAC_FRAME_TYPE

</td>
<td>1：原始音频数据 AAC 帧格式。如设置该格式，你可通过 [audioFrameReceived](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine-event-handler#a0e14a008e6a8829d8e30ff71b1238f82) 回调接收原始音频数据。</td>
</tr>
<tr>
<td>

<a id="a97f1f8e3aa7bfe77c9c5f8d9d208bb1fae77545bffd01596d4205a35d569d8bfd"></a>AUDIO_FORMAT_PCM_FRAME_TYPE

</td>
<td>2：原始音频数据 PCM 帧格式。如设置该格式，你可通过 [audioFrameReceived](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine-event-handler#a0e14a008e6a8829d8e30ff71b1238f82) 回调接收原始音频数据。</td>
</tr>
<tr>
<td>

<a id="a97f1f8e3aa7bfe77c9c5f8d9d208bb1fa16e862840ad32d505be0c5bb05d0b380"></a>AUDIO_FORMAT_MIXED_PCM_FRAME_TYPE

</td>
<td>3：原始音频数据 PCM 帧混音格式。如设置该格式，你可通过 [audioFrameReceived](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine-event-handler#a0e14a008e6a8829d8e30ff71b1238f82) 回调接收原始音频数据。</td>
</tr>
</tbody>
</DocsTable>

<a id="ab3e34cf1c0328e3f9e0dee0b7d768dc4"></a>

### AUDIO_FRAME_TYPE [#audio_frame_type]

<ApiSignature>

enum [agora::linuxsdk::AUDIO_FRAME_TYPE](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#ab3e34cf1c0328e3f9e0dee0b7d768dc4)

</ApiSignature>

原始音频数据格式。

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

<a id="ab3e34cf1c0328e3f9e0dee0b7d768dc4a81f516bc5d6b7dc2457e8d92bee0146b"></a>AUDIO_FRAME_RAW_PCM

</td>
<td>0：PCM 格式。</td>
</tr>
<tr>
<td>

<a id="ab3e34cf1c0328e3f9e0dee0b7d768dc4a6570402240827e9b843b4fb8367dc403"></a>AUDIO_FRAME_AAC

</td>
<td>1：AAC 格式。</td>
</tr>
</tbody>
</DocsTable>

<a id="a9c599c551b7b9f9577a1cc6e0f240e05"></a>

### MEMORY_TYPE [#memory_type]

<ApiSignature>

enum [agora::linuxsdk::MEMORY_TYPE](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a9c599c551b7b9f9577a1cc6e0f240e05)

</ApiSignature>

存储方式。

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

<a id="a9c599c551b7b9f9577a1cc6e0f240e05ae4cbd0adac4f429a9ff010eae0906703"></a>STACK_MEM_TYPE

</td>
<td>0：栈。</td>
</tr>
<tr>
<td>

<a id="a9c599c551b7b9f9577a1cc6e0f240e05a6c8c0e98e9b084adc4daea19a44ba3c8"></a>HEAP_MEM_TYPE

</td>
<td>1：堆。</td>
</tr>
</tbody>
</DocsTable>

<a id="a57f6731e09de6a5ee6978ccefb9f2cc3"></a>

### VIDEO_FRAME_TYPE [#video_frame_type]

<ApiSignature>

enum [agora::linuxsdk::VIDEO_FRAME_TYPE](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a57f6731e09de6a5ee6978ccefb9f2cc3)

</ApiSignature>

视频数据格式。

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

<a id="a57f6731e09de6a5ee6978ccefb9f2cc3a91d2eeb0504957e12b1944e198c0de4b"></a>VIDEO_FRAME_RAW_YUV

</td>
<td>0：YUV 格式。</td>
</tr>
<tr>
<td>

<a id="a57f6731e09de6a5ee6978ccefb9f2cc3aa567c907cb3bc52e904f27caca5d1852"></a>VIDEO_FRAME_H264

</td>
<td>1：H.264 格式。</td>
</tr>
<tr>
<td>

<a id="a57f6731e09de6a5ee6978ccefb9f2cc3aa60fa7b4e7f41f099c15a75e244a218b"></a>VIDEO_FRAME_JPG

</td>
<td>2：JPG 格式。</td>
</tr>
<tr>
<td>

<a id="a57f6731e09de6a5ee6978ccefb9f2cc3a645c35575fe832eab7f8d8d1c17f4a0a"></a>VIDEO_FRAME_H265

</td>
<td>3：H.265 格式。</td>
</tr>
<tr>
<td>

<a id="a57f6731e09de6a5ee6978ccefb9f2cc3ad9c04f83ce8df4b1d0ea5b3e80817027"></a>VIDEO_JPG_FILE

</td>
<td>4: JPG 文件格式。</td>
</tr>
</tbody>
</DocsTable>

<a id="ada7f3bd2af5d724bcb18cd936c0ddd2c"></a>

### SERVICE_MODE [#service_mode]

<ApiSignature>

enum [agora::linuxsdk::SERVICE_MODE](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#ada7f3bd2af5d724bcb18cd936c0ddd2c)

</ApiSignature>

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

<a id="ada7f3bd2af5d724bcb18cd936c0ddd2ca93dc1cf81c29c494d078873dfbb44498"></a>RECORDING_MODE

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

<a id="ada7f3bd2af5d724bcb18cd936c0ddd2cad4d1c9ed8e2b71f589c0c55e84800c19"></a>SERVER_MODE

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

<a id="ada7f3bd2af5d724bcb18cd936c0ddd2ca7faa79fbe421ee535c3ba1fef7401042"></a>IOT_MODE

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

<a id="a652d8aefc1931391ff65ae7a088b932f"></a>

### TRIGGER_MODE_TYPE [#trigger_mode_type]

<ApiSignature>

enum [agora::linuxsdk::TRIGGER_MODE_TYPE](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a652d8aefc1931391ff65ae7a088b932f)

</ApiSignature>

选择录制启动模式。

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

<a id="a652d8aefc1931391ff65ae7a088b932fad45402aea215c1f5ab9e7b9d91bd8bc3"></a>AUTOMATICALLY_MODE

</td>
<td>0：（默认）自动模式。此模式下，录制端加入频道即开始录制，退出频道即停止录制。</td>
</tr>
<tr>
<td>

<a id="a652d8aefc1931391ff65ae7a088b932fab1a3f5f1a945fe86004db2ef271a21d8"></a>MANUALLY_MODE

</td>
<td>1：手动模式。此模式下，可以调用 [startService](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine#a2d4e78e4164993e64fb0286b9108d478) 和 [stopService](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine#a302a83737a67b2693ede181484af862a) 方法灵活开始、暂停录制。</td>
</tr>
</tbody>
</DocsTable>

<a id="aed12bf14a903009cb75f432d9159696f"></a>

### LANGUAGE_TYPE [#language_type]

<ApiSignature>

enum [agora::linuxsdk::LANGUAGE_TYPE](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#aed12bf14a903009cb75f432d9159696f)

</ApiSignature>

编程语言。

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

<a id="aed12bf14a903009cb75f432d9159696fa2295b2435fea42e78fe4ee3736838d9d"></a>CPP_LANG

</td>
<td>0：（默认）CPP。</td>
</tr>
<tr>
<td>

<a id="aed12bf14a903009cb75f432d9159696fabf2e05beb8182cb34a626836da75d935"></a>JAVA_LANG

</td>
<td>1：Java。</td>
</tr>
</tbody>
</DocsTable>

<a id="a8e652e4f981c729da31b3dbb73b8d087"></a>

### AUDIO_PROFILE_TYPE [#audio_profile_type]

<ApiSignature>

enum [agora::linuxsdk::AUDIO_PROFILE_TYPE](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a8e652e4f981c729da31b3dbb73b8d087)

</ApiSignature>

录制文件的音频编码配置。设置采样率，码率，编码模式和声道数。只在合流模式（[isMixingEnabled](/zh-CN/api-reference/local-server-recording/cpp/legacy/structagora-1-1recording-1-1-recording-config#a1ee4fc94e7de4c810a5ad0f4f4327299) 为 true）下生效。

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

<a id="a8e652e4f981c729da31b3dbb73b8d087a37584d8be989cd6e83a21368e4fc8995"></a>AUDIO_PROFILE_DEFAULT

</td>
<td>（默认）音频默认设置，采样率 48 KHz，单声道，编码码率为 48 Kbps。</td>
</tr>
<tr>
<td>

<a id="a8e652e4f981c729da31b3dbb73b8d087a71947b94c41ed87e112c23a6837134bb"></a>AUDIO_PROFILE_HIGH_QUALITY

</td>
<td>高音质模式，采样率 48 KHz，单声道，编码码率 128 Kbps。</td>
</tr>
<tr>
<td>

<a id="a8e652e4f981c729da31b3dbb73b8d087a93b8ef01653e3c48397278b5b84f0458"></a>AUDIO_PROFILE_HIGH_QUALITY_STEREO

</td>
<td>高音质立体声，采样率 48 KHz，双声道，编码码率 192 Kbps。</td>
</tr>
</tbody>
</DocsTable>

<a id="a08e209290d684d21a48648bd755d0334"></a>

### agora_log_level [#agora_log_level]

<ApiSignature>

enum [agora::linuxsdk::agora_log_level](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a08e209290d684d21a48648bd755d0334)

</ApiSignature>

Log 等级。日志等级顺序从低到高是：FATAL，ERROR，WARN，NOTICE，INFO，DEBUG。

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

<a id="a08e209290d684d21a48648bd755d0334a617a8b881237ddc50991fb0c8ec12220"></a>AGORA_LOG_LEVEL_FATAL

</td>
<td>1：日志等级为 Fatal。</td>
</tr>
<tr>
<td>

<a id="a08e209290d684d21a48648bd755d0334aed331dbfd71efb6ff6a96958b5ecac01"></a>AGORA_LOG_LEVEL_ERROR

</td>
<td>2：日志等级为 Error。</td>
</tr>
<tr>
<td>

<a id="a08e209290d684d21a48648bd755d0334a912d824e88b029b03aff48c4dce776b0"></a>AGORA_LOG_LEVEL_WARN

</td>
<td>3：日志等级为 Warn。</td>
</tr>
<tr>
<td>

<a id="a08e209290d684d21a48648bd755d0334aa0d3d8b3bb0b132ea3f1e337c2d4eadb"></a>AGORA_LOG_LEVEL_NOTICE

</td>
<td>4：日志等级为 Notice。</td>
</tr>
<tr>
<td>

<a id="a08e209290d684d21a48648bd755d0334a523e7584ccd7aa618074903c69c180a3"></a>AGORA_LOG_LEVEL_INFO

</td>
<td>5：日志等级为 Info。</td>
</tr>
<tr>
<td>

<a id="a08e209290d684d21a48648bd755d0334ac74f01dd5dae36d3461681b883d45fc7"></a>AGORA_LOG_LEVEL_DEBUG

</td>
<td>6：日志等级为 Debug。</td>
</tr>
</tbody>
</DocsTable>

<a id="ada78417cb7c1ebe12301c07677df2a44"></a>

### RemoteStreamStateChangedReason [#remotestreamstatechangedreason]

<ApiSignature>

enum [agora::linuxsdk::RemoteStreamStateChangedReason](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#ada78417cb7c1ebe12301c07677df2a44)

</ApiSignature>

引起流状态发生变化的原因。

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

<a id="ada78417cb7c1ebe12301c07677df2a44a9b138d54715fc6e970e362695d850b22"></a>REASON_REMOTE_STREAM_STARTED

</td>
<td>录制端成功拉取远端流。</td>
</tr>
<tr>
<td>

<a id="ada78417cb7c1ebe12301c07677df2a44a67a241283c027ad19123bd2de988ade5"></a>REASON_REMOTE_STREAM_STOPPED

</td>
<td>录制端暂停拉取远端流。</td>
</tr>
</tbody>
</DocsTable>

<a id="a73d1bdcfa6ead0c7de998c9abf38d5e3"></a>

### RemoteStreamState [#remotestreamstate]

<ApiSignature>

enum [agora::linuxsdk::RemoteStreamState](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a73d1bdcfa6ead0c7de998c9abf38d5e3)

</ApiSignature>

远端流状态。

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

<a id="a73d1bdcfa6ead0c7de998c9abf38d5e3afd2e84f7a29e90dd46e939f9c6e51542"></a>REMOTE_STREAM_STATE_RUNNING

</td>
<td>远端用户正常发流。</td>
</tr>
<tr>
<td>

<a id="a73d1bdcfa6ead0c7de998c9abf38d5e3a173ea912d0f61273e595540a008ebd92"></a>REMOTE_STREAM_STATE_STOPPED

</td>
<td>远端用户停止发流。</td>
</tr>
</tbody>
</DocsTable>

<a id="af8f3a6529f57ccfa3621014808d1283a"></a>

### MIXED_AV_CODEC_TYPE [#mixed_av_codec_type]

<ApiSignature>

enum [agora::linuxsdk::MIXED_AV_CODEC_TYPE](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#af8f3a6529f57ccfa3621014808d1283a)

</ApiSignature>

实时混合语音和视频。

详见[录制文件的播放器支持](/zh-CN/reference/faq/integration/recording_player)。

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

<a id="af8f3a6529f57ccfa3621014808d1283aae6131013204f87ff2cceb63b59af54d8"></a>MIXED_AV_DEFAULT

</td>
<td>0: （默认）不混合音频和视频。</td>
</tr>
<tr>
<td>

<a id="af8f3a6529f57ccfa3621014808d1283aa1bb0cee3b771da48d11563bbedd2d0cf"></a>MIXED_AV_CODEC_V1

</td>
<td>1: 音频和视频混合成一个文件，录制文件格式为 MP4，但播放器支持有限。</td>
</tr>
<tr>
<td>

<a id="af8f3a6529f57ccfa3621014808d1283aa505ed0b3dc04ce9d637063cfb7e6481b"></a>MIXED_AV_CODEC_V2

</td>
<td>2: 音频和视频混合成一个文件，录制文件格式为 MP4，支持更多播放器。</td>
</tr>
<tr>
<td>

<a id="af8f3a6529f57ccfa3621014808d1283aa26572a17c24579f88b09b093959b6b5a"></a>AV_CODEC_INDIVIDUAL_TS_ONLY

</td>
<td>

4: 单流录制模式下，生成 TS 格式的视频文件，和 AAC 格式的音频文件。

:::info[注解]
录制 TS 格式的视频文件，当出现崩溃时，已录制的文件仍然可以播放。
:::

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

<a id="af8f3a6529f57ccfa3621014808d1283aa4c87c1889b57eba25940e97a7fbc2d24"></a>AV_CODEC_INDIVIDUAL_TS_AND_MP4

</td>
<td>

5: 单流录制模式下，同时生成 TS 和 MP4 格式的视频文件，AAC 格式的音频文件。

:::info[注解]
- 如果出现崩溃，已经录制的 MP4 文件从 TS 文件恢复。
- 录制结束后，SDK 将删除 TS 文件。
:::

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

<a id="af8f3a6529f57ccfa3621014808d1283aa5fc2109c091b783432939e1f8d771c46"></a>AV_CODEC_MIXED_TS_ONLY

</td>
<td>

6: 合流录制模式下音频和视频混合成一个文件，仅生成 TS 格式文件。

:::info[注解]
录制 TS 格式的视频文件，当出现崩溃时，已录制的文件仍然可以播放。
:::

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

<a id="af8f3a6529f57ccfa3621014808d1283aa99e994d4d732105c2663f77152061c91"></a>AV_CODEC_MIXED_TS_AND_MP4

</td>
<td>

7: 合流录制模式下音频和视频混合成一个文件，同时生成 MP4 和 TS 格式文件。

:::info[注解]
- 如果出现崩溃，已经录制的 MP4 文件从 TS 文件恢复。
- 录制结束后，SDK 将删除 TS 文件。
:::

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

<a id="a860f5e36977515fbaae09f75bb757eb6"></a>

### ClientRoleType [#clientroletype]

<ApiSignature>

enum [agora::linuxsdk::ClientRoleType](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a860f5e36977515fbaae09f75bb757eb6)

</ApiSignature>

直播场景里的用户角色。

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

<a id="a860f5e36977515fbaae09f75bb757eb6af4a61e25c804c3f0cb520a3b3a3a870e"></a>CLIENT_ROLE_BROADCASTER

</td>
<td>直播场景里的主播。</td>
</tr>
<tr>
<td>

<a id="a860f5e36977515fbaae09f75bb757eb6a7212a2b3c0324ef344261de466dd6760"></a>CLIENT_ROLE_AUDIENCE

</td>
<td>直播场景里的观众。</td>
</tr>
</tbody>
</DocsTable>

<a id="a7bb6c960800fca3b10effe482080f018"></a>

### ConnectionStateType [#connectionstatetype]

<ApiSignature>

enum [agora::linuxsdk::ConnectionStateType](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a7bb6c960800fca3b10effe482080f018)

</ApiSignature>

网络连接状态。

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

<a id="a7bb6c960800fca3b10effe482080f018a8846ee3d77b7be7f1d8ae454c28061ca"></a>CONNECTION_STATE_DISCONNECTED

</td>
<td>

1：网络连接断开。

该状态表示 SDK 处于:

- 调用 [joinChannel](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine#a011ff5c4a47816050be60b26ba0fb431) 加入频道前的初始化阶段;
- 或调用 [leaveChannel](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine#adafb45815ad0f02dc1c8b3cadb7cd2e3) 后的离开频道阶段。

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

<a id="a7bb6c960800fca3b10effe482080f018a509bf6f71d8b27c0e57116a350913101"></a>CONNECTION_STATE_CONNECTING

</td>
<td>

2：建立网络连接中。

该状态表示 SDK 在调用 [joinChannel](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine#a011ff5c4a47816050be60b26ba0fb431) 后正在与指定的频道建立连接。

- 如果成功加入频道，App 会收到 [onConnectionStateChanged](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine-event-handler#a08d04dd3d5f82ca0ab9cdadff20367b0) 回调，通知当前网络状态变成 [CONNECTION_STATE_CONNECTED](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a7bb6c960800fca3b10effe482080f018a14325c6be5987875a091fa051960922c)。
- 建立连接后，SDK 还会初始化，一切就绪后会回调 [onJoinChannelSuccess](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine-event-handler#ac08c2b0774684e1b5ce667d68c3a946d)。

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

<a id="a7bb6c960800fca3b10effe482080f018a14325c6be5987875a091fa051960922c"></a>CONNECTION_STATE_CONNECTED

</td>
<td>

3：网络已连接。

该状态表示用户已经加入频道。

如果因网络断开或切换而导致 SDK 与频道的连接中断，SDK 会自动重连，此时应用程序会收到：

- [onConnectionStateChanged](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine-event-handler#a08d04dd3d5f82ca0ab9cdadff20367b0) 回调，通知当前网络状态变成 [CONNECTION_STATE_RECONNECTING](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a7bb6c960800fca3b10effe482080f018ae3ef8066e702e708226a42ff30e17bcf)。
- 同时会收到 [onConnectionInterrupted](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine-event-handler#ac6a57d0f9721253294f7d1204084e00c) 回调。

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

<a id="a7bb6c960800fca3b10effe482080f018ae3ef8066e702e708226a42ff30e17bcf"></a>CONNECTION_STATE_RECONNECTING

</td>
<td>

4：重新建立网络连接中。

该状态表示 SDK 之前曾加入过频道，但因网络等原因连接中断了，此时 SDK 会自动尝试重新接入频道。

- 如果 SDK 无法在 10 秒内重新加入频道，则 [onConnectionLost](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine-event-handler#a0cf0383f0b6f841682a3ec3a588a9b18) 会被触发，SDK 会一直保持在 [CONNECTION_STATE_RECONNECTING](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a7bb6c960800fca3b10effe482080f018ae3ef8066e702e708226a42ff30e17bcf) 的状态，并不断尝试重新加入频道。
- 如果 SDK 在断开连接后，20 分钟内还是没能重新加入频道，则应用程序会收到 [onConnectionStateChanged](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine-event-handler#a08d04dd3d5f82ca0ab9cdadff20367b0) 回调，通知的网络状态进入 [CONNECTION_STATE_FAILED](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a7bb6c960800fca3b10effe482080f018ab5b249a02a1e3e467bc5ee672ba70d47)，SDK 停止尝试重连。

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

<a id="a7bb6c960800fca3b10effe482080f018ab5b249a02a1e3e467bc5ee672ba70d47"></a>CONNECTION_STATE_FAILED

</td>
<td>

5：网络连接失败。

如果 SDK 因服务器端使用 RESTful API 禁止加入频道，则应用程序会收到 [onConnectionStateChanged](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine-event-handler#a08d04dd3d5f82ca0ab9cdadff20367b0) 回调，通知当前网络状态变成 [CONNECTION_STATE_FAILED](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a7bb6c960800fca3b10effe482080f018ab5b249a02a1e3e467bc5ee672ba70d47)。

该状态表示 SDK 已不再尝试重新加入频道，用户必须要调用 [leaveChannel](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine#adafb45815ad0f02dc1c8b3cadb7cd2e3) 离开频道。如果用户还想重新加入频道，则需要再次调用 [joinChannel](/zh-CN/api-reference/local-server-recording/cpp/legacy/classagora-1-1recording-1-1-i-recording-engine#a011ff5c4a47816050be60b26ba0fb431)。

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

<a id="a7b099b2f12ca92293f38b7b18c4239c9"></a>

### ConnectionChangedReasonType [#connectionchangedreasontype]

<ApiSignature>

enum [agora::linuxsdk::ConnectionChangedReasonType](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a7b099b2f12ca92293f38b7b18c4239c9)

</ApiSignature>

引起网络连接状态发生改变的原因。

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

<a id="a7b099b2f12ca92293f38b7b18c4239c9a4bb5a4a6ae80c620e62f6c5bea044df7"></a>CONNECTION_CHANGED_CONNECTING

</td>
<td>0：建立网络连接中。</td>
</tr>
<tr>
<td>

<a id="a7b099b2f12ca92293f38b7b18c4239c9ad9918c7c8e56e78d66e7cf8726913361"></a>CONNECTION_CHANGED_JOIN_SUCCESS

</td>
<td>1：成功加入频道。</td>
</tr>
<tr>
<td>

<a id="a7b099b2f12ca92293f38b7b18c4239c9aec2fb0545a1dfe60a753c603eb96fe00"></a>CONNECTION_CHANGED_INTERRUPTED

</td>
<td>2：网络连接中断。</td>
</tr>
<tr>
<td>

<a id="a7b099b2f12ca92293f38b7b18c4239c9ab3ee91edf3adeed0c67a9732ff8f4987"></a>CONNECTION_CHANGED_BANNED_BY_SERVER

</td>
<td>3：网络连接被服务器禁止。</td>
</tr>
<tr>
<td>

<a id="a7b099b2f12ca92293f38b7b18c4239c9a055779b19fd783323e14d6c5901ff515"></a>CONNECTION_CHANGED_JOIN_FAILED

</td>
<td>4：加入频道失败。SDK 在尝试加入频道 20 分钟后还是没能加入频道，会返回该状态，并停止尝试重连。</td>
</tr>
<tr>
<td>

<a id="a7b099b2f12ca92293f38b7b18c4239c9af2aabb9e2795825e1685bb17549e20c1"></a>CONNECTION_CHANGED_LEAVE_CHANNEL

</td>
<td>5：离开频道。</td>
</tr>
</tbody>
</DocsTable>

<a id="a32d20fe4fdf564bc7d07a3e26bc36ff9"></a>

### MAX_USER_ACCOUNT_LENGTH_TYPE [#max_user_account_length_type]

<ApiSignature>

enum [agora::linuxsdk::MAX_USER_ACCOUNT_LENGTH_TYPE](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a32d20fe4fdf564bc7d07a3e26bc36ff9)

</ApiSignature>

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

<a id="a32d20fe4fdf564bc7d07a3e26bc36ff9a2a7f674e693f760845e43578b9d4fdb5"></a>MAX_USER_ACCOUNT_LENGTH

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

<a id="a5568d9f61bbfb066f28ba609987a2852"></a>

### WatermarkType [#watermarktype]

<ApiSignature>

enum [agora::linuxsdk::WatermarkType](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a5568d9f61bbfb066f28ba609987a2852)

</ApiSignature>

水印种类。

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

<a id="a5568d9f61bbfb066f28ba609987a2852aecf57d31c979a92c2ef36c8cd4ed0f99"></a>WATERMARK_TYPE_LITERA

</td>
<td>文字水印。</td>
</tr>
<tr>
<td>

<a id="a5568d9f61bbfb066f28ba609987a2852adeb9021dd547ce4a931ca63b65a3baf7"></a>WATERMARK_TYPE_TIMESTAMP

</td>
<td>时间戳水印。</td>
</tr>
<tr>
<td>

<a id="a5568d9f61bbfb066f28ba609987a2852a9e9c25948e2f4733890d67937aaa4bc9"></a>WATERMARK_TYPE_IMAGE

</td>
<td>图片水印。</td>
</tr>
</tbody>
</DocsTable>
