> ## Documentation Index
> Fetch the complete documentation index at: https://docs.stmlink.com/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> 服务端接口只有 `/server/v1/...` 这一套对外开放，需用 app_id + app_key 做 HMAC-SHA256 签名，只能从业务方自己的后端调用。文档中若出现其它前缀的接口，均为内部接口，不要建议客户调用。
> app_key 是服务端密钥，绝不能出现在客户端代码、前端配置或移动 App 里。客户端加入频道用的 token 必须由业务方后端调用 `/server/v1/channel/grant` 签发后下发。
> SRTC 与 SMeeting 是上下两层不同的产品，术语不通用：SRTC 是音视频底座，说「频道 channel」「加入 / 退出」；SMeeting 建在 SRTC 之上，说「房间 room」「会议 meeting」「进入 / 退出」。回答时按用户所在的层用对应术语，不要把「房间」「会议」安到 SRTC 的接口上。
> 同一能力在各端 SDK 里的包名、类名、方法名并不相同。写示例代码时请使用文档中该端自己的 API，不要把一个端的写法套到另一个端上。

# 云录制与直播接入指南

> 会议的云端录制、合流与直播：任务类型怎么组合、什么时候会自动开、画面怎么排、产物怎么取

本页讲云录制与直播的整体玩法。单个接口的参数与返回结构见[会议录制与直播](/zh/meeting/server-api/mcu)。

## 一个任务，四种能力

`task_type` 是**按位组合**的，四个独立能力各占一位，想同时要哪几个就相加：

| 值 | 能力  | 产物       | 怎么取                                               |
| - | --- | -------- | ------------------------------------------------- |
| 1 | 录像  | 录像文件     | [单个录像的点播地址](/zh/meeting/server-api/mcu#单个录像的点播地址) |
| 2 | 合流  | 把多路流混成一路 | 旁路推流，给不支持多流的下游用                                   |
| 4 | 录音  | 纯音频文件    | 同录像                                               |
| 8 | 直播流 | 直播拉流地址   | [直播流地址](/zh/meeting/server-api/mcu#直播流地址)         |

所以 `3` = 录像+合流，`9` = 录像+直播，`15` = 四种全开。

<Warning>不要把 `3` 理解成「混合模式」这一种独立类型。早前的文档把值域写成「1录像 2合流 3混合」，那是错的 —— 既漏了录音与直播流，也误导了组合语义。</Warning>

## 有些任务会自动启动

这是 SMeeting 与底层 SRTC 最不一样的地方：**不是所有录制都要你手动调 start**。
第一个人进会时，服务端会按会议自身的配置决定要不要起任务：

| 会议情况                          | 自动启动的 `task_type` |
| ----------------------------- | ----------------- |
| 普通会议，`auto_record` 关          | 不启动               |
| 普通会议，`auto_record` 开          | `1` 录像            |
| 合成模式的**预约**会议，`auto_record` 关 | `2` 合流            |
| 合成模式的**预约**会议，`auto_record` 开 | `3` 录像+合流         |

若部署时开了直播能力，上面每一行都会再加 `8`（直播流）—— 例如普通会议开了
`auto_record` 实际起的是 `9`。这个开关由部署决定，不由接口控制，不确定的话问一下我们。

自动启动用的布局是会议自己的 `layout_data`，没配就是 `auto`。

所以：**创建会议时把 `auto_record` 设成 `true`，就不用在业务里管录制的启停了。**
手动调 [start](/zh/meeting/server-api/mcu#开始--更新录制任务) 适用于「会议中途才决定要录」这类场景。

## 同一场会议重复调 start 是更新，不是新建

同一个会议对同一类型只有一个进行中的任务。用不同参数再调一次 `start`，改的是现有任务
（例如换布局），不会多出一个任务，也不会产生第二个录像文件。

## 录像和直播的关键区别

|         | 录像                       | 直播             |
| ------- | ------------------------ | -------------- |
| 何时能取到地址 | 收到 `mcu_record_done` 回调后 | 任务**进行中**就能取   |
| 用途      | 事后回放、归档                  | 把画面分发给不参与互动的观众 |
| 地址有效期   | 有，每次播放前重新获取              | 有              |

<Note>取回放地址请等 [`mcu_record_done` 回调](/zh/meeting/server-api/guides/callbacks)，不要在任务一结束就取 —— 那时转码往往还没完成。</Note>

## 画面怎么排

`layout_data.layout` 决定画面布局。`auto` 会按在线人数自动选宫格，**绝大多数场景够用**；
需要固定画面时才指定具体布局：

| 取值                  | 说明                                                 |
| ------------------- | -------------------------------------------------- |
| `auto`              | 自动，按在线人数选宫格                                        |
| `full`              | 全屏单画面                                              |
| `grids_N`           | 等分宫格，N 取 2、3、4、5、6、8、9、12、16、20、25（`grids_3` 是品字形） |
| `right_4` / `top_4` | 主画面 + 右侧 / 顶部小窗                                    |
| `br_7` / `tl_7`     | 下 L 型 / 上 L 型                                      |
| `tb_8`              | 左右布局                                               |

注意 `grids_N` 的 N **不连续**（没有 7、10、11），传不支持的值会报错。

不想每次都传布局，就把统一的水印、标签、布局策略配进[录制配置](/zh/meeting/server-api/mcu#保存录制配置)。

## 指定谁出现在哪个格子

`layout_data.div_list` 用来把特定用户钉到特定格子，不指定就按进会顺序自动填充。

* `cells[].idx` 是格子序号，顺序等同 HTML 表格里 `<td>` 的排列（从左到右、从上到下）
* `uids` **留空**表示「剩余在线用户轮流出现在这些格子里」（大轮询）；**填多个**则是这几个人在这些格子里轮询（小轮询）
* `polling_dur` 是轮询间隔秒数，`0` 表示不轮询
* `cells[].bind_share` 为 `true` 时该格子优先绑定会中的共享屏幕流

一个典型用法是「主持人固定在大格子、其余人轮播小格子」：给大格子的 `cells` 填主持人
`user_id`，给小格子的 `cells` 留空 `uids` 并设 `polling_dur`。

## 无人时的行为

`layout_data.nobody_text` 决定会议里没人时怎么办：

* **留空** → 暂停录制（推荐，避免录出大段黑屏）
* **填了文本** → 继续录制并显示该文本

## 水印与成员名标签

* `watermark.type`：`0` 默认、`1` 无、`2` 单排、`3` 多排。`watermark.text` 留空时用会议标题作为水印内容
* 成员名标签的位置用字母组合表示：`L` 左、`R` 右、`T` 上、`B` 下，可组合（`LB` = 左下）。**留空表示不显示标签**
* 字号、颜色、轮廓都留默认值即可，只在有明确视觉要求时才指定

## 完整时序

```
1. 可选：配好应用的默认录制配置     POST /server/v1/mcu/save-record-config
2. 创建会议时设 auto_record         POST /server/v1/meet/create
   → 第一个人进会时任务自动启动，跳到第 5 步
   或：会议中途手动启动             POST /server/v1/mcu/start        → task_id
3. task_type 带 8 → 立即可取直播地址 POST /server/v1/mcu/live-url
4. 结束                             POST /server/v1/mcu/stop
5. 收到 mcu_record_done 回调后取回放 POST /server/v1/mcu/vod-url
   一场会议有多个录像时             POST /server/v1/mcu/vods-url
```

## 计费提示

录制、录音、直播都是持续产生费用的服务端能力。`auto_record` 开着就意味着每一场会议都在录 ——
上线前确认这是你要的。手动启动的任务，业务侧最好在会议结束流程里显式调 stop。
