# 错误码 (/zh-CN/realtime-media/rtc/reference/error-code/unreal)

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

在调用声网 API 过程中，SDK 可能会返回错误码。当收到错误码时，意味着 SDK 遭遇了不可恢复的错误，需要 App 干预。

本文列出常见错误码的详细含义及其解决方法。对于未给出解决方法的错误码，声网推荐你[联系技术支持](https://ticket.shengwang.cn)，我们的技术服务会根据你在实际场景中遇到的问题进行排查。



















:::info[信息]
- SDK 在返回错误码时，可能会返回一个负数。这个负数对应着错误码里的正整数。例如返回 `-2`，则对应错误码里的 `2`。
  - 本文中出现的 API 名称以 C++ 为准，其他平台的 API 名称可能会有所不同，请查阅对应平台的 API 文档。
:::

本节所列错误码适用于以下平台的声网 RTC v4.x SDK：

- 原生平台：Android、iOS、macOS、Windows、HarmonyOS NEXT。
- 第三方框架（即基于原生平台封装的第三方平台）：Electron、Unity、React Native、Flutter、Unreal。

声网 SDK 在运行过程中，可能通过如下方式返回错误码：

- 在方法调用失败的返回值中，返回一个负数，这个负数就对应着错误码的正数。
- 通过 `onError` 回调报告错误码。

## 通用错误码 [#通用错误码-9]

| 枚举值 | 说明 |
| --- | --- |
| `1` | 一般性的错误（没有明确归类的错误原因）。请重新调用方法。 |
| `2` | 方法中设置了无效的参数。例如指定的频道名中含有非法字符。请重新设置参数。 |
| `3` | [error-code-html-0-3-1-unreal details](#table-slot-error-code-html-0-3-1-unreal) |
| `4` | [error-code-html-0-4-1-unreal details](#table-slot-error-code-html-0-4-1-unreal) |
| `5` | [error-code-html-0-5-1-unreal details](#table-slot-error-code-html-0-5-1-unreal) |
| `6` | 缓冲区大小不足以存放返回的数据。 |
| `7` | `RtcEngine` 尚未初始化就调用方法。请确认在调用该方法前已创建 `RtcEngine` 对象并完成初始化。 |
| `8` | 当前状态无效。请查看 SDK 回调日志了解具体原因。 |
| `9` | 没有操作权限。请检查用户是否授予了 App 音视频设备的使用权限。 |
| `10` | 方法调用超时。有些方法调用需要 SDK 返回结果，如果 SDK 处理事件过长，超过 10 秒没有返回，会出现此错误。 |
| `17` | [error-code-html-0-11-1-unreal details](#table-slot-error-code-html-0-11-1-unreal) |
| `18` | [error-code-html-0-12-1-unreal details](#table-slot-error-code-html-0-12-1-unreal) |
| `19` | 资源已被占用，不能重复使用。 |
| `20` | SDK 放弃请求，可能由于请求的次数太多。 |
| `21` | Windows 下特定的防火墙设置导致 `RtcEngine` 初始化失败然后崩溃。 |
| `22` | SDK 分配资源失败，可能由于 App 占用资源过多或系统资源耗尽。 |
| `101` | 不是有效的 App ID。请更换有效的 App ID 重新加入频道。 |
| `102` | 不是有效的频道名。可能的原因是设置的参数数据类型不正确。请更换有效的频道名重新加入频道。 |
| `103` | 无法获取当前区域的服务器资源。请在初始化 `RtcEngine` 时尝试指定其他区域。 |
| `109` | [error-code-html-0-20-1-unreal details](#table-slot-error-code-html-0-20-1-unreal) |
| `110` | [error-code-html-0-21-1-unreal details](#table-slot-error-code-html-0-21-1-unreal) |
| `111` | 网络连接中断。SDK 在和服务器建立连接后，失去网络连接超过 4 秒。 |
| `112` | 网络连接丢失。网络连接中断，且 SDK 无法在 10 秒内连接服务器。 |
| `119` | 用户切换角色失败，请尝试重新加入频道。 |
| `120` | 解密失败。可能是用户加入频道时使用了错误的密码。请检查用户加入频道时填入的密码，或引导用户尝试重新加入频道。 |
| `121` | 该用户 ID 无效。 |
| `123` | 此用户被服务器禁止。当用户被服务端踢出时会报告这个错误。 |
| `134` | 用户账号无效，可能是因为设置了无效的参数。 |

<a id="table-slot-error-code-html-0-3-1-unreal"></a>

**error-code-html-0-3-1-unreal details**

SDK 尚未准备好。一般有以下原因：

- `RtcEngine` 初始化失败。请重新初始化 `RtcEngine`。
- 调用方法时用户尚未加入频道。请检查方法的调用逻辑。
- 调用 `rate` 或 `complain` 方法时用户尚未离开频道，请检查方法的调用逻辑。
- 音频模块未开启。
- 程序集不完整。

<a id="table-slot-error-code-html-0-4-1-unreal"></a>

**error-code-html-0-4-1-unreal details**

`RtcEngine` 当前状态不支持该操作。一般有以下原因：

- 使用内置加密时，设置的加密模式不正确。
- 加载外部加密库失败。
请检查加密的枚举值是否正确，或重新加载外部加密库。

<a id="table-slot-error-code-html-0-5-1-unreal"></a>

**error-code-html-0-5-1-unreal details**

方法调用被拒绝。一般有以下原因：

- `RtcEngine` 初始化失败。请重新初始化 `RtcEngine`。
- 在加入频道时，将频道名设为空字符 `""`。请重新设置频道名。
- 多频道场景下，在调用 `joinChannel` 方法加入频道时，设置的频道名已存在。请重新设置频道名。
- 多频道场景下，在调用 `joinChannelEx` 方法加入频道时，设置的频道名已存在。请重新设置频道名。

<a id="table-slot-error-code-html-0-11-1-unreal"></a>

**error-code-html-0-11-1-unreal details**

加入频道被拒绝。一般有以下原因：

- 用户已经在频道中。声网推荐通过 `onConnectionStateChanged` 回调判断用户是否在频道中。除非收到 `CONNECTION_STATE_DISCONNECTED`(1) 状态，否则请勿再次调用该方法加入频道。
- 用户在调用 `startEchoTest` 进行通话测试时，未调用 `stopEchoTest` 结束当前测试，就尝试加入频道。开始通话测试后，需要先调用 `stopEchoTest` 结束当前测试，再加入频道。

<a id="table-slot-error-code-html-0-12-1-unreal"></a>

**error-code-html-0-12-1-unreal details**

离开频道失败。一般有以下原因：

- 用户已离开频道，再次调用退出频道的方法，如 `leaveChannel` 时，会返回此错误。停止调用该方法即可。
- 用户尚未加入频道，就调用 `leaveChannel` 等退出频道的方法。这种情况下无需额外操作。

<a id="table-slot-error-code-html-0-20-1-unreal"></a>

**error-code-html-0-20-1-unreal details**

当前使用的 Token 过期，不再有效。请在服务端申请生成新的 Token，并调用 `renewToken` 更新 Token。

:::info[废弃]
该错误码已废弃。请改用 `onConnectionStateChanged` 回调中的 `CONNECTION_CHANGED_TOKEN_EXPIRED`(9)。
:::

<a id="table-slot-error-code-html-0-21-1-unreal"></a>

**error-code-html-0-21-1-unreal details**

Token 无效。一般有以下原因：

- 在声网控制台中启用了 App 证书，但未使用 App ID + Token 鉴权。当项目启用了 App 证书，就必须使用 Token 鉴权。
- 生成 Token 时填入的 `uid` 字段，和用户加入频道时填入的 `uid` 不一致。

:::info[废弃]
该错误码已废弃。请改用 `onConnectionStateChanged` 回调中的 `CONNECTION_CHANGED_INVALID_TOKEN`(8)。
:::

## 音频相关错误码 [#音频相关错误码-9]

| 枚举值 | 说明 |
| --- | --- |
| `1005` | 音频设备出现错误（未指明何种错误）。请检查音频设备是否被其他应用占用，或者尝试重新进入频道。 |
| `1008` | 初始化播放设备出错。请检查播放设备是否被其他应用占用，或者尝试重新进入频道。 |
| `1009` | 启动播放设备出错。请检查播放设备是否正常。 |
| `1010` | 停止播放设备出错。 |
| `1011` | 初始化录音设备出错。请检查录音设备是否正常，或者尝试重新进入频道。 |
| `1012` | 启动录音设备出错。请检查录音设备是否正常。 |
| `1013` | 停止录音设备出错。 |

## 数据流相关错误码 [#数据流相关错误码-9]

| 枚举值 | 说明 |
| --- | --- |
| `113` | 调用 `sendStreamMessage` 方法时，用户不在频道内。 |
| `114` | 调用 `sendStreamMessage` 时，发送的数据长度大于 1024 个字节。 |
| `115` | 调用 `sendStreamMessage` 时，发送数据的频率超过限制（6 KB/s）。 |
| `116` | 调用 `createDataStream` 时，创建的数据流超过限制（5 个）。 |
| `117` | 当发送端调用 `createDataStream`[1/2] 设置 `reliable` 为 `true`，或调用 `createDataStream`[2/2] 设置 `DataStreamConfig.ordered` 为 `true` 时，若接收端在 5 秒内未收到数据，或检测到数据丢失，将在接收端触发 `onStreamMessageError` 回调并返回错误码 `117`。 |

## 其他错误码 [#其他错误码-9]

| 枚举值 | 说明 |
| --- | --- |
| `130` | SDK 不支持将加密过的流推到 CDN 上。 |
| `1001` | 加载媒体引擎失败。 |
| `1501` | 没有摄像头使用权限。请检查是否已经打开摄像头权限。 |






