快速开始云端录制

  • RESTful API

更新时间不可用

了解如何通过 RESTful API、Go SDK、Java SDK 或 Node.js SDK 快速接入云端录制。

选择你要使用的接口或 SDK,完成云端录制的环境准备、参数配置、示例运行和核心流程验证。

本文向新手介绍如何使用声网 RESTful API 开始第一次云端录制。

前提条件

开通服务并获取关键参数

参考开通云端录制服务在声网控制台开通云端录制,并复制保存如下参数,以供后续使用:

  • App ID
  • 临时 Token
  • 客户 ID
  • 客户密钥

开通第三方云存储

云端录制文件需要上传到第三方云存储。开始录制前,请开通第三方云存储服务,并获取如下字段以备后用:

  • Bucket
  • Access Key
  • Secret Key

模拟音视频互动场景

模拟一个音视频互动场景,云端录制服务后续会录制该场景下的音视频。

此处使用声网实时互动 Web Demo 在浏览器中模拟一个基础视频直播场景,频道内有一名主播发流:

  1. 打开 Web Demo,完成初始化设置。
  2. 进入基础视频直播页面,在 Channel 填入频道名为 show,点击 Join as host。

如果模拟成功,你会在 local stream 区域看到你的视频画面。

进行云端录制

本节介绍进行云端录制的极简流程。为方便说明,本节以录制之前模拟的音视频直播为例,并假设录制主播的音频和视频录制到 MP4 文件中。

申请录制服务器资源

请求

Bash
curl --location --request POST 'https://api.sd-rtn.com/v1/apps/<your_app_id>/cloud_recording/acquire' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: <http_basic_auth>' \
--data '{
  "cname": "show",
  "uid": "123",
  "clientRequest": {}
}'

你可以使用第三方在线工具快速得到 Authorization 值。将客户 ID 和客户密钥分别填入 Username 和 Password 框,得到形如 Authorization: Basic NDI1OTQ3N2I4MzYy...YwZjA= 的结果。将该结果替代上述代码中的 Authorization: <http_basic_auth> 即可。

响应

JSON
{
    "cname": "show",
    "uid": "123",
    "resourceId": "SGXETXXX"
}

你需要复制 resourceId 以备后用。

开始录制

请求

Bash
curl --location --request POST 'https://api.sd-rtn.com/v1/apps/<your_app_id>/cloud_recording/resourceid/<resourceId_returned>/mode/mix/start' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: <http_basic_auth>' \
--data '{
  "cname": "show",
  "uid": "123",
  "clientRequest": {
    "token": "<your_token>",
    "recordingConfig": {
      "channelType": 1
    },
    "storageConfig": {
      "vendor": 2,
      "region": 3,
      "bucket": "<your_storage_bucket_name>",
      "accessKey": "<your_storage_access_key>",
      "secretKey": "<your_storage_secret_key>",
      "fileNamePrefix": [
        "quickstart"
      ]
    }
  }
}'

"vendor": 2 代表使用阿里云,如果你使用其他云存储厂商,请参考下表赋值:

云存储厂商Vendor ID
Amazon S31
阿里云2
腾讯云3
Microsoft Azure5
谷歌云6
华为云7
百度智能云8
表格内容超出当前宽度,可横向滚动查看更多列。

响应

JSON
{
    "cname": "show",
    "uid": "123",
    "resourceId": "SGXETXXX",
    "sid": "04a85XXX"
}

你需要复制 sid 以备后用。

查看录制文件

参考第三方云存储官方文档操作,查看云存储中的文件。录制文件位于 quickstart 目录下。如下截图以阿里云为例:

在录制过程中,会有一个 .m3u8 和多个 .ts 文件。点击任意一个 .ts 文件即可播放。

如果还需要查看 .mp4 文件,你需要先结束录制,再查看云存储文件。结束录制可参照如下代码:

Bash
curl --location --request POST 'https://api.sd-rtn.com/v1/apps/<your_app_id>/cloud_recording/resourceid/<resourceId_returned>/sid/<sid_returned>/mode/mix/stop' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: <http_basic_auth>' \
--data '{
  "cname": "show",
  "uid": "123",
  "clientRequest": {}
}'

最终 quickstart 录制文件夹内包含如下:

Shell
.
├── <sid>_show.m3u8
├── <sid>_show_0.mp4
├── <sid>_show_20240507070329192.ts
├── <sid>_show_20240507070346226.ts
├── <sid>_show_20240507070402264.ts
├── <sid>_show_20240507070418236.ts
├── <sid>_show_20240507070434208.ts
├── <sid>_show_20240507070450246.ts
├── <sid>_show_20240507070506218.ts
├── <sid>_show_20240507070522256.ts
├── <sid>_show_20240507070538236.ts
├── <sid>_show_20240507070554266.ts
├── <sid>_show_20240507070610238.ts
├── <sid>_show_20240507070626210.ts
└── <sid>_show_20240507070642248.ts

有关录制文件的详细信息,请参考录制文件介绍。

进阶设置

本文提供的示例代码仅为快速上手时使用。在实际业务中,你需要根据实际业务场景修改请求参数。如下示例代码展示了录制直播频道中所有的音视频流,且输出的视频流需要转码的参数配置:

Bash
curl --location --request POST 'https://api.sd-rtn.com/v1/apps/<your_app_id>/cloud_recording/resourceid/<resourceId_returned>/mode/mix/start' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: <http_basic_auth>' \
--data '{
  "cname": "show",
  "uid": "123",
  "clientRequest": {
    "token": "<your_token>",
    "recordingConfig": {
      "channelType": 1,
      "streamTypes": 2,
      "audioProfile": 2,
      "maxIdleTime": 30,
      "transcodingConfig": {
        "width": 640,
        "height": 640,
        "fps": 15,
        "bitrate": 800,
        "mixedVideoLayout": 0,
        "backgroundColor": "#000000"
      },
      "subscribeVideoUids": [
        "#allstream#"
      ],
      "subscribeAudioUids": [
        "#allstream#"
      ]
    },
    "recordingFileConfig": {
      "avFileType": [
        "hls",
        "mp4"
      ]
    },
    "storageConfig": {
      "vendor": 2,
      "region": 3,
      "bucket": "<your_storage_bucket_name>",
      "accessKey": "<your_storage_access_key>",
      "secretKey": "<your_storage_secret_key>",
      "fileNamePrefix": [
        "quickstart"
      ]
    }
  }
}'

云端录制支持设置的所有参数请参考 API 文档。

排查错误