
# 合流录制
#### 场景说明
将房间中的多路音视频进行云端混流，再将混合后的音视频流录制成一个文件。
![](https://support.huaweicloud.com/bestpractice-rtc/zh-cn_image_0000001273352748.png)
#### 合流布局
在合流录制模式下，支持分屏九宫格模板和共享屏幕模板（主视窗居左/主视窗居右）两种预设合流布局。同时，也支持用户自定义合流布局样式（自定义视频窗格位置）。
- **九宫格模板**
  每个用户画面平铺在画布上，大小一致。根据用户数量，动态调整每个画面的大小和位置。最多支持25个画面。不同人数的实际布局效果如下图所示。
  ![](https://support.huaweicloud.com/bestpractice-rtc/zh-cn_image_0000001126205436.png)
  - 如果实际视频流的宽高比与视窗的宽高比不一致，视频画面会裁剪以适配视窗的大小。
  
  - 中途有流退出房间，则该条流的画面会被后进入房间的流顶替。
  
  - 如果房间内的人数不足，则剩余位置显示背景色。
  
  - 如果用户只发送音频，仍然会占用画面位置。
  
  - 支持背景图，如果房间内人数不足，显示背景图。
   

- **屏幕共享模板**
  屏幕分享（或者主讲人摄像头画面）始终占据屏幕左侧或者右侧大画面位置，其他用户依次垂直排列于旁边。最多支持17个画面。不同人数的实际布局效果如下图所示。
  ![](https://support.huaweicloud.com/bestpractice-rtc/zh-cn_image_0000001172285129.png)
  ![](https://support.huaweicloud.com/bestpractice-rtc/zh-cn_image_0000001172405049.png)
  - 大视窗画面，可选择主讲摄像头流或共享屏幕流。
  
  - 大视窗画面，显示指定的UID用户的视频，如果未指定或者指定用户未进入频道，大视窗区域显示背景色。
  
  - 左侧大视窗为了保持内容的完整性采用缩放方式处理，右侧小视窗采用裁剪方式适配视窗的大小。
  
  - 右侧小视窗画面按照加入房间的时间先后顺序排列。
  
  - 右侧小视窗有流退出房间，则该条流的画面会被后进入房间的流顶替。
  
  - 如果房间内的人数不足，则剩余位置显示背景色。
  
  - 如果用户只发送音频，仍然会占用画面位置。
  
  - 支持背景图，如果房间内人数不足，显示背景图。
   
- **自定义布局模板**
  支持用户自定义合流布局样式，可灵活设置用户画面的大小，指定用户画面在视频画布上的相对位置。
  ![](https://support.huaweicloud.com/bestpractice-rtc/zh-cn_image_0000001276178521.png)
  - 可自定义各个视频窗格在画布上的位置。
  
  - 可自定义各个视频窗格的宽和高。
  
  - 针对每一个窗格，可通过user_id指定显示房间内某一用户。
  
  - 针对窗格，可自定义选择呈现摄像头流或者屏幕分享流。
  
  - 如果实际视频流的宽高比与视窗的宽高比不一致，自定义布局场景下支持选择裁剪和缩放两种模式。
  
  - 如果房间内的人数不足，则剩余位置显示背景色。
  
  - 如果用户只发送音频，仍然会占用画面位置。
  
  - 支持背景图，如果房间内人数不足，则显示背景图。
   
 
#### 录制机制
SparkRTC提供的[合流录制](https://support.huaweicloud.com/api-rtc/CreateMixJob.html)，具体的实现机制如[图1]所示。
**说明** ：启动合流录制任务时，需要设定**MixParam** 合流参数，指定**layout_template**视频布局模板。
图1合流录制   
![](https://support.huaweicloud.com/bestpractice-rtc/zh-cn_image_0000001233214550.png)
#### 实现流程
![](https://support.huaweicloud.com/bestpractice-rtc/zh-cn_image_0000001276854665.png)
1. [创建OBS桶]：创建用于存储SparkRTC录制文件的OBS桶，若已有OBS桶，请直接执行[2]。
   ![](https://support.huaweicloud.com/bestpractice-rtc/public_sys-resources/note_3.0-zh-cn.png)
   由于单AZ桶的可靠性低于多AZ桶，为避免因OBS服务异常导致录制失败，建议您创建多AZ桶用于录制文件的存储。
   
2. [OBS桶授权]：在SparkRTC服务中对存储录制文件的OBS桶进行授权，允许SparkRTC服务将录制文件存储在对应的OBS桶中。
3. [配置录制规则]：为实时音视频互动配置录制规则，并开启自动录制功能，加入SparkRTC房间后，与应用中的**录制规则ID**相同的录制模板会自动生效，录制内容按录制设置存储至OBS中。还可以通过设置回调地址获取录制任务状态通知。
4. [加入房间]：录制规则配置完成后，您可以通过SparkRTC APP加入某个SparkRTC房间进行音视频互动，SparkRTC会根据配置的录制规则对正在直播的音视频进行录制。
   ![](https://support.huaweicloud.com/bestpractice-rtc/public_sys-resources/note_3.0-zh-cn.png)
   若配置录制规则时，未开启自动录制功能，则加入SparkRTC房间后，您需要调用[实时音视频API](https://support.huaweicloud.com/api-rtc/rtc_07_0002.html#section4)开启、查询和控制云端录制任务。SparkRTC服务才会根据接口中的**录制规则ID**对实时音视频互动画面进行录制。
   
5. [回放录制文件]：录制完成后，在已配置的回调地址中会收到录制任务的回调消息，您可以获取到录制文件的基本信息，也可以在OBS中管理录制文件，如下载、分享、删除等。
   ![](https://support.huaweicloud.com/bestpractice-rtc/public_sys-resources/note_3.0-zh-cn.png)
   录制文件的分辨率与推流分辨率相关，按推流原分辨率进行录制。
   
 
#### 实现步骤
1. 请参见[OBS帮助中心](https://support.huaweicloud.com/qs-obs/obs_qs_0001.html)创建桶。若已有OBS桶，请直接执行[步骤2](https://support.huaweicloud.com/bestpractice-rtc/rtc_08_0009.html#rtc_08_0009__li83125012392)。
   
   ![](https://support.huaweicloud.com/bestpractice-rtc/public_sys-resources/note_3.0-zh-cn.png)
   创建的OBS桶所在区域必须为**华北-北京四**。
   
   
2. OBS桶授权。
   
   1. 登录[实时音视频控制台](https://console.huaweicloud.com/rtc/#/rtc/app-mgmt/app-list)。
   
   2. 在左侧导航树中选择"云资源授权"，进入桶授权页面。
   
   3. 在对应的OBS桶行单击"授权"，完成桶授权。
   
   
   
   
3. 配置录制规则。
   
   1. 登录[实时音视频控制台](https://console.huaweicloud.com/rtc/#/rtc/app-mgmt/app-list)。
   
   2. 在左侧导航树中选择"应用管理"，进入应用管理页面。
   
   3. 在需要创建录制规则的应用行单击"录制配置"，进入录制配置页面。
   
   4. 在"录制规则"页签，单击"添加"，进入添加录制规则页面。
      ![](https://support.huaweicloud.com/bestpractice-rtc/public_sys-resources/note_3.0-zh-cn.png)
      一个应用ID仅支持创建一个录制规则。
      
   
   5. 请您按照实际需求配置录制参数，参数说明如[表1]所示。
       表1录制参数说明 
      | 参数名             || 描述                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
      |:---|---|:---|
      | 存储-桶            || 存储录制文件的OBS桶。 目前录制文件仅支持存储到**华北-北京四**的OBS桶中。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                  |
      | 区域              || OBS桶所在的区域。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       |
      | 存储-路径           || 存储录制文件的OBS桶路径。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |
      | 录制格式            || 录制文件的格式，支持HLS和MP4文件格式。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
      | HLS规则 | m3u8命名规则 | 录制m3u8文件的存储路径和文件的前缀。 默认命名格式： ``` {app_id}/{record_format}/{stream}_{file_start_time}/{stream}_{file_start_time} ``` 上述特殊变量的含义如下： - app_id：应用ID。  - record_format：录制格式。  - stream：流名。  - file_start_time：文件生成时间。   |
      | HLS规则 | 录制周期     | 录制时长支持0-720分钟，最小录制周期为1分钟，最大录制周期为12小时，超过12小时，系统将按照命名规则生成新文件。如果录制周期为0，则整个流录制为一个文件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
      | HLS规则 | 最大断流合并时长 | 支持如下三种配置： - 断流后生成新文件：是指录制的直播流中断后，会立即生成新的录制文件。  - 断流后不生成新文件：是指录制的直播流中断后，会和之前录制的文件合并为一个文件。最大断流合并时长为30天。  - 其他数值：是指录制的直播流中断时间在设置范围内，则和之前录制的文件合并为一个文件，否则，生成新的录制文件。                                                                                                           |
      | MP4规则 | mp4命名规则  | 录制mp4文件的存储路径和文件的前缀。 默认命名格式： ``` {app_id}/{record_format}/{stream}_{file_start_time}/{stream}_{file_start_time} ``` 上述特殊变量的含义如下： - app_id：应用ID。  - record_format：录制格式。  - stream：流名。  - file_start_time：文件生成时间。                    |
      | MP4规则 | 录制周期     | 录制时长支持1-180分钟，最小录制周期为1分钟，最大录制周期为3小时，超过3小时，系统将按照命名规则生成新文件。                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        |
      | MP4规则 | 最大断流合并时长 | 支持如下两种配置： - 断流后生成新文件：是指录制的直播流中断后，会立即生成新的录制文件。  - 其他数值：是指录制的直播流中断时间在设置范围内，则和之前录制的文件合并为一个文件，否则，生成新的录制文件。                                                                                                                                                                                                                                                                                                                                                |
         
      
   
   6. 单击"确定"，在录制规则列表中会增加一条新的录制规则。
      图2录制规则   
      ![](https://support.huaweicloud.com/bestpractice-rtc/zh-cn_image_0000001276218929.png) 
   
   7. 您可以在录制规则列表中，根据实际需求选择是否开启自动录制功能。自动录制功能开启后，若该应用下有新创建的房间，则会按照已配置的录制规则自动对该房间中的实时音视频互动过程进行录制。
      ![](https://support.huaweicloud.com/bestpractice-rtc/public_sys-resources/note_3.0-zh-cn.png)
      自动录制功能开启后，仅对同一应用下新创建的房间生效，自动录制功能开启前已创建的房间不生效。
      
   
   
   
   
4. 加入房间。
   
   录制规则配置完成后，您可以通过SparkRTC APP加入某个SparkRTC房间进行音视频互动，SparkRTC服务会根据配置的录制规则对正在直播的音视频进行录制。
   ![](https://support.huaweicloud.com/bestpractice-rtc/public_sys-resources/note_3.0-zh-cn.png)
   若配置录制规则时，未开启自动录制功能，则加入SparkRTC房间后，您需要调用[实时音视频API](https://support.huaweicloud.com/api-rtc/rtc_07_0002.html#section4)开启云端录制任务，SparkRTC才会根据API中的**录制规则** **ID**对实时音视频互动画面进行录制。
   
   
5. 回放录制文件。
   
   录制完成后，您可以在OBS控制台中或通过回调消息查看录制文件。
   - 通过OBS控制台查看录制文件
     1. 登录[OBS控制台](https://console.huaweicloud.com/console/#/obs/manager/dashboard)。
     
     2. 在左侧导航栏中，选择"桶列表"。
     
     3. 在桶列表中单击存储SparkRTC录制文件的桶，进入"概览"页面。
     
     4. 在左侧导航栏，单击"对象"，查看录制文件信息。
     
     5. 您还可以对录制文件进行下载、分享等操作，具体请参见[OBS帮助中心](https://support.huaweicloud.com/qs-obs/obs_qs_0001.html)。
      
   
   
   
   
 
