文档首页/ 实时音视频 SparkRTC/ API参考/ 应用示例/ 示例1:创建单流录制任务
更新时间:2024-10-18 GMT+08:00

示例1:创建单流录制任务

场景描述

若您需要对某一个房间的实时音视频进行录制,可以在加入房间后,调用录制接口创建单流录制任务。

前提条件

  • 已获取需要使用的SparkRTC服务的终端节点:rtc-api.myhuaweicloud.com。
  • 已创建用于存储录制文件的OBS桶,并完成OBS桶授权。

操作步骤

  1. 获取用户Token,用于调用SparkRTC接口时进行认证鉴权。

    “我的凭证”页面获取usernamepassworddomainname,调用如下接口获取Token。详细信息请参见构造请求
    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

  2. 调用创建应用接口创建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. 调用创建或更新录制规则接口,创建录制规则。

    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增值(录制)事件回调配置接口,配置录制回调。

    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
  6. 调用启动单流任务接口,创建录制任务。

    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桶中获取录制文件。