云端截图

更新时间不可用

了解如何在云端录制中云端截图,包括适用场景、配置步骤、实现要点和注意事项。

单流录制模式下,你可以使用声网云端录制进行视频截图,即云端截图。

本文介绍使用云端录制 RESTful API 进行视频截图的重点步骤。建议你同时参考云端录制快速开始了解云端录制的基础流程。

功能描述

云端录制支持对频道内的视频流进行截图,并将图片上传至你的第三方云存储。

支持以下两种截图方式:

  • 在一个单流录制进程中仅截图。产生截图费用。
  • 在一个单流录制进程中同时进行录制和截图。仅产生单流录制费用。

信息

如果你只需截图而无需保存录制文件,声网建议你使用性价比更高的本地截图上传。

前提条件

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

实现步骤

1. 申请录制服务器资源

开始录制前,调用 acquire 方法请求一个用于云端录制的服务器资源,并将 clientRequest.scene 设置为 0。

请求示例如下:

  • 请求 URL:

    Text
    https://api.sd-rtn.com/v1/apps/{yourappid}/cloud_recording/acquire
  • 请求 Body 内容:

    JSON
    {
      "cname": "httpClient463224",
      "uid": "527841",
      "clientRequest": {
        "resourceExpiredHour": 24,
        "scene": 0
      }
    }

2. 开始截图

在调用 start 方法时,你需要将路径参数 mode 设为 individual。

云端截图需要设置的 clientRequest 字段还包括:

字段配置内容是否选填
token录制频道的 Token。如果加入的 RTC 频道使用了 Token,则为必填。
recordingConfig用于设置媒体流的订阅、转码、输出音视频的属性。必填
snapshotConfig

设置截图周期和截图文件格式。snapshotConfig 包含如下字段:

  • captureInterval:选填,表示截图周期。Number 类型,单位为秒,云端录制会按此周期定期截图。取值范围是 [1,3600],默认值为 10。截图仅在视频关键帧时生成,实际截图间隔可能大于设置的周期。
  • fileType:由多个字符串组成的数组,指定截图的文件格式。目前只支持 ["jpg"],即生成 JPG 截图文件。
必填
storageConfig设置第三方云存储。必填
recordingFileConfig录制文件的设置。如果在一个录制进程中同时进行录制和截图,则该字段为必填;如果在一个录制进程中仅截图,则不可填写该字段。
表格内容超出当前宽度,可横向滚动查看更多列。

仅截图时,请求 Body 示例如下:

JSON
{
  "uid": "527841",
  "cname": "httpClient463224",
  "clientRequest": {
    "token": "<token if any>",
    "recordingConfig": {
      "channelType": 1,
      "subscribeUidGroup": 0
    },
    "snapshotConfig": {
      "captureInterval": 5,
      "fileType": [
        "jpg"
      ]
    },
    "storageConfig": {
      "accessKey": "xxxxxxf",
      "region": 3,
      "bucket": "xxxxx",
      "secretKey": "xxxxx",
      "vendor": 2,
      "fileNamePrefix": [
        "directory1",
        "directory2"
      ]
    }
  }
}

录制并截图时,请求 Body 示例如下:

JSON
{
  "uid": "527841",
  "cname": "httpClient463224",
  "clientRequest": {
    "token": "<token if any>",
    "recordingConfig": {
      "maxIdleTime": 30,
      "streamTypes": 1,
      "channelType": 0
    },
    "snapshotConfig": {
      "captureInterval": 5,
      "fileType": [
        "jpg"
      ]
    },
    "recordingFileConfig": {
      "avFileType": [
        "hls"
      ]
    },
    "storageConfig": {
      "accessKey": "xxxxxxf",
      "region": 3,
      "bucket": "xxxxx",
      "secretKey": "xxxxx",
      "vendor": 2,
      "fileNamePrefix": [
        "directory1",
        "directory2"
      ]
    }
  }
}

截图生成文件

云端录制生成的截图文件的命名规则为 <sid>_<cname>__uid_s_<uid>__uid_e_video_<utc>.jpg。文件类型取决于你在 start 方法中设置的 fileType,目前只支持 JPG。

上述文件名中各字段含义如下:

  • <sid>:录制 ID
  • <cname>:频道名
  • <uid>:用户 ID
  • <utc>:该截图文件生成时的 UTC 时间,时区为 UTC + 0,由年、月、日、小时、分钟、秒和毫秒组成。例如,utc 为 20190611073246073,表示该截图文件生成时间为 UTC 2019 年 6 月 11 日 7 点 32 分 46 秒 73 毫秒。

当出现服务器断网、进程被杀时,云端录制会自动启用高可用机制,在 90 秒内切换到新的服务器,自动恢复截图服务。启用高可用机制后,截图文件的文件名会增加 bak<n> 前缀,n 为高可用机制在该次截图进程中的启用序号,0 表示第一次启用。以文件名 bak0_sid_channel1__uid_s_123__uid_e_video_20190611073246073.jpg 为例,bak0 表示该文件为本次截图中第一次启用高可用机制后生成的截图文件。

开发注意事项

在进行云端截图时,需要注意以下字段的设置。如设置错误,会收到报错,导致截图失败。

  • 请求 URL 中的 mode 参数必须设为 individual。
  • streamTypes 必须设置为 1 或 2。
  • 如果设置了 subscribeAudioUid,则必须同时设置 subscribeVideoUids。

如果录制服务或录制上传服务异常,也会导致截图失败。

另外,在截图过程中,如果有用户中途停止发布视频流,云端录制会停止对其截图。如果你开通了消息通知服务,还会收到相应的事件回调。当该用户再次发布视频流时,云端录制会恢复对其截图。其他用户的截图不受影响。

API 参考

你可以参考 acquire 和 start 方法了解字段详情。