
# 示例1：创建单流录制任务
#### 场景描述
若您需要对某一个房间的实时音视频进行录制，可以在加入房间后，调用录制接口创建单流录制任务。
#### 前提条件
- 已获取需要使用的SparkRTC服务的终端节点：rtc-api.myhuaweicloud.com。
- 已创建用于存储录制文件的OBS桶，并完成OBS桶授权。您可以通过调用[OBS 创建桶API](https://support.huaweicloud.com/api-obs/obs_04_0015.html)进行创建，并在SparkRTC控制台中完成[OBS桶授权](https://support.huaweicloud.com/usermanual-rtc/rtc_04_0008.html)。
 
#### 总体流程
![](https://support.huaweicloud.com/api-rtc/zh-cn_image_0000001124012202.png)
1. [获取用户Token]
2. [创建SparkRTC应用]
3. [创建录制规则]
4. [配置录制回调]
5. [终端用户加入SparkRTC房间]
6. [创建单流录制任务]
 
#### 操作步骤
1. [获取用户Token](https://support.huaweicloud.com/api-iam/iam_30_0001.html)，用于调用SparkRTC接口时进行认证鉴权。
   
   在"我的凭证"页面获取***username*** 、***password*** 、***domainname*** ，调用如下接口获取Token。详细信息请参见[构造请求](https://support.huaweicloud.com/api-rtc/rtc_07_0004.html)。
   ```
   POST https://iam.myhuaweicloud.com/v3/auth/tokens
   Content-Type: application/json
   {
     "auth": {
       "identity": {
         "methods": [
           "password"
         ],
         "password": {
           "user": {
             "name": "username", //用户名。
             "password": "password", //用户登录密码。
             "domain": {
               "name": "domainname" //用户所属的账号名。  
             }
           }
         }
       },
       "scope": {
         "domain": {
            "name": "domainname"  //用户所属的账号名。
         }
       }
     }
   }
   ```
   如[图1]所示，红框中的信息为获取用户Token。
   图1获取用户Token   
   ![](https://support.huaweicloud.com/api-rtc/zh-cn_image_0301106159.png)
   
   
2. 调用[创建应用](https://support.huaweicloud.com/api-rtc/CreateApp.html)接口创建SparkRTC应用。
   
   1. 选择**POST** 请求方法并输入URI。
      ```
      https://rtc-api.myhuaweicloud.com/v2/apps
      ```
      
   
   2. 请求消息头中增加"X-Auth-Token"，值设置为步骤[1]中获取的用户Token。
   
   3. Request Body中传入如下参数：
      ```
      {
        "app_name" : "rtctest"
      }
      ```
      
   
   4. 请求响应成功后，返回已创建应用的ID。
      ```
      {
      "app_id": "5ff9701f2346968bb306cb43",
      }
      ```
      
   
   
   
   
3. 调用[创建或更新录制规则](https://support.huaweicloud.com/api-rtc/CreateRecordRule.html)接口，创建录制规则。
   
   1. 选择**POST** 请求方法并输入URI。
      ```
      https://rtc-api.myhuaweicloud.com/v2/apps/{app_id}/record-rules
      ```
      
   
   2. 请求消息头中增加"X-Auth-Token"，值设置为步骤[1]中获取的用户Token。
   
   3. Request Body中传入如下参数：
      ```
      {
      "obs_addr": {
      "bucket": "obsName",
      "location": "cn-north-4",
      "object": "Record/",
      "project_id": "01234567890123456789012345678901"
      },
      "record_formats": ["MP4"],
      "mp4_config": {}
      }
      ```
      
   
   4. 请求响应成功后，返回已创建的录制规则。
      ```
      {
      "app_id": "5ff9701f2346968bb306cb43",
      "rule_id": "5d0ec2c53a2c15625017adb8bbbcd9ab",
      "create_time": "2021-04-21T10:29:33Z",
      "hls_config": {
      "record_cycle": 0,
      "record_max_duration_to_merge_file": 0
      },
      "mp4_config": {
      "record_cycle": 7200,
      "record_max_duration_to_merge_file": 0,
      "record_prefix": "Record/{publish_domain}/{app}/{record_type}/{record_format}/{stream}_{file_start_time}/{stream}_{file_start_time}"
      },
      "obs_addr": {
      "bucket": "obsName",
      "location": "cn-north-4",
      "object": "Record/",
      "project_id": "01234567890123456789012345678901"
      },
      "record_formats": [
      "MP4"
      ],
      "update_time": "2021-04-21T10:29:33Z"
      }
      ```
      
   
   
   
   
4. 调用[RTC增值（录制）事件回调配置](https://support.huaweicloud.com/api-rtc/UpdateRecordCallback.html)接口，配置录制回调。
   
   1. 选择**PUT** 请求方法并输入URI。
      ```
      https://rtc-api.myhuaweicloud.com/v2/apps/{app_id}/record-callback
      ```
      
   
   2. 请求消息头中增加"X-Auth-Token"，值设置为步骤[1]中获取的用户Token。
   
   3. Request Body中传入如下参数：
      ```
      {
      "url": "http://mydomain.com/callback",
      "auth_key": "8923ab8c2dcef4538923ab8c2dcef453"
      }
      ```
      
   
   4. 请求响应成功后，返回已创建的回调信息。
      ```
      {
      "app_id": "5ff9701f2346968bb306cb43",
      "record_callback": {
      "auth_key": "8923ab8c2dcef4538923ab8c2dcef453",
      "update_time": "2021-04-07T12:05:18.0718Z",
      "url": "http://mydomain.com/callback",
      "notify_event_subscription": [
      "RECORD_NEW_FILE_START",
      "RECORD_FILE_COMPLETE",
      "CLOUD_RECORD_OVER"
      ]
      }
      }
      ```
      
   
   
   
   
5. 终端用户通过SparkRTC APP加入某个SparkRTC房间，SparkRTC APP的集成开发请参见[客户端SDK](https://support.huaweicloud.com/csdk-rtc/rtc_05_0001.html)。
6. 调用[启动单流任务](https://support.huaweicloud.com/api-rtc/CreateIndividualStreamJob.html)接口，创建录制任务。
   
   1. 选择**POST** 请求方法并输入URI。
      ```
      https://rtc-api.myhuaweicloud.com/v2/apps/{app_id}/individual-stream-jobs
      ```
      
   
   2. 请求消息头中增加"X-Auth-Token"，值设置为步骤[1]中获取的用户Token。
   
   3. Request Body中传入如下参数：
      ```
      {
      "room_id": "room001",
      "user_id": "user001",
      "is_record_audio": true,
      "video_type": "CAMERASTREAM",
      "resolution": "1280*720",
      "resolution_policy": "DOWNWARD",
      "max_idle_time": 30,
      "record_param": {
      "record_rule_id": "5d0ec2c53a2c15625017adb8bbbcd9ab"
      }
      }
      ```
      
   
   4. 请求响应成功后，返回录制任务信息。
      ```
      {
      "app_id": "5ff9701f2346968bb306cb43",
      "create_time": "2021-04-21T10:51:55Z",
      "is_record_audio": true,
      "job_id": "607f87cf00d861eeefffa6c88054cdab",
      "job_unique_id": "a77bb33dbdc948d8",
      "max_idle_time": 30,
      "push_param": {
      "rtmp_urls": null
      },
      "record_files": null,
      "record_param": {
      "record_rule_id": "5d0ec2c53a2c15625017adb8bbbcd9ab"
      },
      "resolution_policy": "DOWNWARD",
      "resolution": "1280*720",
      "room_id": "room001",
      "start_time": "2021-04-21T10:51:55Z",
      "state": "INIT",
      "stop_time": "0001-01-01T00:00:00Z",
      "stream_name": "s_607f87cf00d861eeefffa6c88054cdab_room001_user001",
      "update_time": "2021-04-21T10:51:55Z",
      "user_id": "user001",
      "video_type": "CAMERASTREAM"
      }
      ```
      
   
   
   
   
7. SparkRTC房间结束音视频互动后，您可以在配置的OBS桶中获取录制文件。
 
