# 录制服务事件 (/zh-CN/realtime-media/cloud-recording/build/implement-core-features/service)

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

当 payload 中的 serviceType 返回 0 时，表示该回调事件的服务类型是云端录制服务。

本页介绍录制服务相关的回调事件。如果你想查看其他云端录制的相关事件，可以参考[回调事件概览](/zh-CN/realtime-media/cloud-recording/reference/ncs-events)。

录制服务回调包含如下事件：

| eventType     | 事件描述                                                     |
| ------------- |  ------------------------------------------------------------ |
| [`1`](#1)       |  云端录制服务发生错误                                         |
| [`2`](#2)       |  云端录制服务发生警告                                         |
| [`3`](#3)       |  云端录制服务状态发生变化                                     |
| [`4`](#4)       |  生成录制索引文件                                             |
| [`11`](#11)     |  云端录制服务结束任务并退出                                   |
| [`12`](#12)     |  云端录制[启用高可用机制](/zh-CN/reference/faq/integration/high_availability) |

<a id="1"></a>
## 1 cloud_recording_error [#1-cloud_recording_error]

`eventType` 为 `1` 表示云端录制服务发生错误， `details` 中包含以下字段：

- `msgName`：String 类型，消息名称，即 `"cloud_recording_error"`。
- `module`：Number 类型，发生错误的模块。
  - `0`：录制模块
  - `1`：上传模块
  - `2`：云端录制服务
  - `6`：页面录制服务
- `errorLevel`：Number 类型，错误级别。
  - `1`：debug
  - `2`：minor
  - `3`：medium
  - `4`：major
  - `5`：fatal。fatal 级别的错误很可能导致录制退出，如果收到该级别的消息请及时调用 [`query`](/zh-CN/api-reference/api-ref/cloud-recording/query)
 API 查询当前状态，并结合错误消息的内容进行处理。

- `errorCode`：Number 类型，错误码。与 `module` 有关：
  - 如果 `module` 为 `1`，错误发生在上传模块，错误码可能为：
    - `32`：第三方云存储信息错误。
    - `47`：文件上传失败。
    - `51`：上传时文件操作发生错误。
  - 如果 `module` 为 `2`，错误发生在云端录制服务模块，错误码可能为：
    - `50`：上传超时。
    - `52`：云端录制服务启动超时。
  - 如果 `module` 为其他，请参考[响应状态码和错误码](/zh-CN/realtime-media/cloud-recording/reference/response-code)中的错误码说明。

  如果错误码未在文档中列出，请联系[技术支持](https://ticket.shengwang.cn/)。

- `stat`：Number 类型，事件状态，`0` 表示正常，其他值表示异常。
- `errorMsg`：String 类型，具体的错误信息。

回调示例如下：

```json
{
    "msgName": "cloud_recording_error",
    "module": 0,
    "errorLevel": 5,
    "errorCode": 3,
    "stat": 0,
    "errorMsg": ""
}
```

<a id="2"></a>
## 2 cloud_recording_warning [#2-cloud_recording_warning]

`eventType` 为 `2` 表示云端录制服务发生警告， `details` 中包含以下字段：

- `msgName`：String 类型，消息名称，即 `cloud_recording_warning`。
- `module`：Number 类型，发生警告的模块名。
  - `0`：录制模块
  - `1`：上传模块
- `warnCode`：Number 类型，警告码。与 `module` 有关：
  - 如果 `module` 为 `0`，警告发生在录制模块，请参考[警告码](/zh-CN/api-reference/local-server-recording/cpp/legacy/namespaceagora-1-1linuxsdk#a11cab69078db26c1f166c68e469dcfcf)的说明。
  - 如果 `module` 为 `1`，警告发生在上传模块，警告码可能为：
    - `31`：重传到指定的云存储。
    - `32`：重传到声网备份云。

<a id="3"></a>
## 3 cloud_recording_status_update [#3-cloud_recording_status_update]

`eventType` 为 `3` 表示云端录制服务状态与你调用的方法不匹配，导致调用失败。例如，云端录制服务已开始，导致再次调用 `start` 失败。`details` 中包含以下字段：

- `msgName`：String 类型，消息名称，即 `cloud_recording_status_update`。
- `status`：Number 类型，云端录制当前的状态：
  - `0`：没有开始云端录制。
  - `1`：云端录制初始化完成。
  - `2`：录制组件开始启动。
  - `3`：上传组件已启动。
  - `4`：录制组件启动完成。
  - `5`：已成功上传第一个文件。
  - `6`：已经停止录制。
  - `7`：云端录制服务全部停止。
  - `8`：云端录制准备退出。
  - `20`：云端录制异常退出。
- `recordingMode`：Number 类型，录制模式。
  - `0`：合流模式
  - `1`：单流模式
- `fileList`：String 类型，录制生成的 M3U8 索引文件名。

<a id="4"></a>
## 4 cloud_recording_file_infos [#4-cloud_recording_file_infos]

`eventType` 为 4 表示生成 M3U8 文件并上传。录制过程中，录制服务会反复上传和覆盖 M3U8 文件，以更新索引信息，但只有第一次生成并上传 M3U8 文件时会触发该回调。

**合流录制**和**页面录制**模式下，将 `avFileType` 设置为 `["hls","mp4"]` 时，`eventType` 为 4 表示生成 M3U8 和 MP4 文件并上传。

 `details` 中包含以下字段：

- `msgName`：String 类型，消息名称，即 `cloud_recording_file_infos`。
- `fileList`：String 类型，生成的 M3U8 和 MP4 文件名（如有）。

<a id="11"></a>
## 11 session_exit [#11-session_exit]

`eventType` 为 `11` 表示云端录制服务结束任务并退出，`details` 中包含以下字段：

- `msgName`：String 类型，消息名称，即 `session_exit`。
- `exitStatus`：Number 类型，退出状态。
  - `0`：正常退出，即录制结束、录制文件成功上传后，录制服务退出。
  - `1`：异常退出，例如参数设置错误，导致录制停止。

<a id="12"></a>
## 12 session_failover [#12-session_failover]

`eventType` 为 `12` 表示云端录制启用高可用机制，`details` 中包含以下字段：

- `msgName`：String 类型，消息名称，即 `session_failover`。
- `newUid`：Number 类型，启用高可用机制后，云端录制随机指定的录制用户 ID。云端录制将使用该录制用户 ID 加入频道，不再使用原有的录制用户 ID。
