实现单流录制(旧版)

更新时间不可用

云端录制支持单流录制、合流录制和页面录制三种模式,其中单流录制模式指分别录制频道中每个用户 ID 的音频流和视频流,录制结束后每个用户 ID 会生成对应的音频文件和视频文件。

本文介绍如何使用云端录制的 RESTful API 并设置核心字段,进行单流转码录制,并生成特定格式的文件。如果你不需要指定单流录制生成的文件格式,可以使用单流音频不转码录制。

前提条件

开始前,请参考使用 RESTful API 开始云端录制进行一次完整的录制流程体验。

实现步骤

本节介绍如何在申请录制服务器资源后,实现单流音视频转码录制。

开始录制

调用 start 方法开始云端录制。

请求示例

以下介绍开始单流音频转码录制请求的关键配置,确保你进行正确设置以实现预期的录制效果。

  1. 在调用 start 方法时,将 mode 参数设置为 individual,开启单流录制模式。

    注意

    录制模式的设置必须在开始录制的时候完成,不支持在录制开始后切换模式。

  2. 设置 recordingConfig 中的如下参数:

    字段配置内容
    recordingConfig.streamTypes订阅媒体流类型,2 为订阅音频和视频。具体设置参见 streamTypes 参数说明。
    recordingConfig.streamMode媒体流输出模式,为获得能直接播放的 MP4 文件,建议设置为 standard(标准模式)或 default(默认模式)。
    表格内容超出当前宽度,可横向滚动查看更多列。
  3. 参照快速开始配置 storageConfig 相关参数。

单流音视频转码录制的请求 Body 示例如下:

Shell
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": {
    "token": "<your_token>",
    "recordingConfig": {
      "channelType": 1,
      "streamTypes": 2,
      "streamMode": "default",
      "videoStreamType": 0,
      "maxIdleTime": 30,
      "subscribeAudioUids": [
        "123",
        "456"
      ],
      "subscribeVideoUids": [
        "123",
        "456"
      ],
      "subscribeUidGroup": 0
    },
    "recordingFileConfig": {
      "avFileType": [
        "hls"
      ]
    },
    "storageConfig": {
      "vendor": 2,
      "region": 3,
      "bucket": "<your_storage_bucket_name>",
      "accessKey": "<your_storage_access_key>",
      "secretKey": "<your_storage_secret_key>",
      "fileNamePrefix": [
        "quickstart",
      ]
    },
  }
}

响应示例

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

你需要复制 sid 以备后用。

停止录制

录制完成后,调用 stop 方法离开频道,停止录制。录制停止后如需再次录制,必须再调用 acquire 方法请求一个新的 Resource ID。

请求示例

Shell
curl --location --request POST 'https://api.sd-rtn.com/v1/apps/<yourappid>/cloud_recording/resourceid/<resourceid>/sid/<sid>/mode/individual/stop' \
--header 'Content-Type: application/json' \
--data '{
  "cname": "show",
  "uid": "123",
  "clientRequest": {
    "async_stop": false
  }
}'

响应示例

JSON
{
  "resourceId": "SGXETXXX",
  "sid": "04a85XXX",
  "serverResponse": {
    "fileListMode": "json",
    "fileList": [
      {
        "fileName": "xxxxxxx",
        "isPlayable": true,
        "mixedAllUser": false,
        "sliceStartTime": xxxxxxxxxx,
        "trackType": "audio_and_video",
        "uid": "xxx"
      }
    ],
    "uploadingStatus": "uploaded"
  },
  "cname": "show",
  "uid": "123"
}

uploadingStatus 字段表示录制文件上传状态,当值为 uploaded 时表示录制文件已上传至第三方云存储。

参考信息

录制文件音视频编码配置

单流录制模式下录制文件的音视频编码配置如下:

  • 音频编码配置:采样率固定为 48 kHz,声道数和码率与原始音频流一致。
  • 视频编码配置:与原始视频流一致。

根据录制内容的不同,录制生成的文件如下表所示:

录制内容字段设置录制生成文件
仅录制音频streamTypes 设为 0每个用户 ID 生成一个 M3U8 文件和多个 TS 文件。TS 文件内仅存储该用户 ID 的音频数据。
仅录制视频streamTypes 设为 1每个用户 ID 生成一个 M3U8 文件和多个 TS/WebM 文件。TS/WebM 文件内仅存储该用户 ID 的视频数据。
同时录制音视频,且使用录制的标准模式streamTypes 设为 2,streamMode 设为 standard。
  • 每个用户 ID 生成一个 M3U8 音频文件、一个 M3U8 视频文件、一个合并的 M3U8 音视频文件,以及多个 TS 音频切片文件和 TS 视频切片文件。
  • 如果在 Web 端使用 VP8 编码,录制结束后你可以获得合并的 MPD 音视频索引文件,以及多个 WebM 格式的音频文件和多个 WebM 格式的视频文件。
同时录制音视频,且使用录制的默认模式streamTypes 设为 2,streamMode 设为 default。每个用户 ID 分别生成 M3U8 音频索引文件和视频索引 HLS 文件,以及多个 TS 音频切片文件和 TS 视频切片文件。
表格内容超出当前宽度,可横向滚动查看更多列。

如下展示单流转码录制,同时录制音视频时生成的文件,以频道中有两个用户 uid 1 和 uid 2 为例:

信息

生成后的 M3U8 或 MPD 格式的音频、视频文件可以直接播放。

开发注意事项

在进行单流录制过程中,你需要关注如下注意事项:

  • 使用标准模式录制(streamMode 为 standard),如果录制过程中将 Native 端切换到 Web 端(或反之),录制结束后你会获得 M3U8 格式和 MPD 格式的两个音视频索引文件,无法连贯播放整个录制过程。

  • 如果在录制过程中禁用视频轨道,则录制效果详见下表:

    发流端类型禁用视频轨道的方法录制效果
    Native 端调用 muteLocalVideoStream 或 disableVideo 方法不继续生成视频切片文件,在本切片内用户画面显示最后一帧。
    Web 端调用 setEnabled 方法不继续生成视频切片文件,在本切片内用户画面显示最后一帧。
    表格内容超出当前宽度,可横向滚动查看更多列。

相关文档

在单流转码录制过程中,你还可以参考如下文档:

API 参考

你可以参考以下方法了解字段详情:

常见问题