在你的音视频应用中,你可能会需要对房间内的实时音视频互动按一定时间间隔进行截图,供后续处理。比如,实现存证,鉴别非法信息。

你可以使用 StartSnapshot 这个 OpenAPI 实现这一功能。

你也可以在控制台上开启自动抽帧功能,开启该功能后,若未设置业务标识,默认对房间内每个用户都进行全程抽帧。截图结果会上传到你指定的存储平台。

接口行为

你可以调用 StartSnapshot 接口,指定你所属的 AppId,对指定 roomId 房间中指定的一路或多路视频流进行截图。
截图结果会上传到你指定的存储平台。你在控制台上设置的回调地址会收到每一张图片的元数据回调。有关回调结果的详细说明,参看SnapshotRealTimeData。

调用接口

关于调用接口的服务地址、通信协议、字符编码和签名机制,参看调用OpenAPI。

请求方式

使用 Post 方式发起请求。

请求参数

以下是接口特有的请求参数。关于其他公共请求参数,参看请求参数。

Query
参数名类型必填示例值描述
ActionString是StartSnapshot接口名称,本接口取值: StartSnapshot
VersionString是2022-06-01接口版本,本接口取值:2022-06-01
Body
参数名类型必填示例值描述备注
AppIdString是Your_AppId应用的唯一标志
BusinessIdString否Your_BusinessId业务标识
RoomIdString是Your_RoomId房间 ID,是房间的唯一标志
TaskIdString是Your_TaskId截图任务 ID。你可以自行设定 TaskId 以区分不同的切片任务,且在后续进行任务更新和结束时也须使用该 TaskId。关于 TaskId 的详细说明,参看备注 1 。 关于 TaskId 及以上 Id 字段的命名规则,参看 ID。
TargetStreamsStreams否/你可以通过本参数设定需要截图的视频流。如果参数为空,默认对房间内所有人进行截图。最多17路视频流。参看备注2
MaxIdleTimeuint32否180任务最大的空闲超时时间。如果抽帧截图任务订阅的所有流都已停止发布,那么任务会在空闲时间超过设定值后自动停止。值的范围为[1, 86400] ,单位为秒。默认值为 180秒。值不合法时,自动调整为默认值。
ImageConfigImageConfig否/图片的相关配置:图片格式,尺寸和截图间隔时间。参看备注3
StorageConfigStorageConfig是/存储平台设置。当前截图功能仅支持存储到 Tos 平台和第三方存储平台,即 Type只可取值 0或2。
  1. TaskId 说明:

TaskId 是任务的标识,在一个 AppId 的 RoomId 下 taskID 是唯一的,不同 AppId 或者不同 RoomId 下 TaskId 可以重复,因此 AppId + RoomId + TaskId 是任务的唯一标识,可以用来标识指定 AppId 下某个房间内正在运行的任务,从而能在此任务运行中停止此任务。

  1. 如果在开启抽帧截图时指定了多路流,会对每一路流进行截图。如果对应流的发布者关闭了摄像头,则不会产生截图。
  2. 如果截图时,对应流的尺寸(长宽)和设置的截图尺寸(长宽)不一致,那么,视频流原始截图会按比例缩放为指定的尺寸。
请求示例代码
Query
https://rtc.volcengineapi.com?Action=StartSnapshot&&Version=2022-06-01
Body
{
    "AppId": "Your_AppId",
    "BusinessId": "Your_BusinessId",
    "RoomId": "Your_RoomId",
    "TaskId": "Your_TaskId",
    "TargetStreams": {
        "StreamList": [
            {
                "UserId": "user1",
                "StreamType": 0
            },
            {
                "UserId": "user2",
                "StreamType": 0
            }
        ]
    },
    "MaxIdleTime": 180,
    "ImageConfig": {
        "Format": 0,
        "Width": 800,
        "Height": 800,
        "Interval": 2
    },
    "StorageConfig": {
        "Type": 3,
        "VeImageXConfig": {
            "AccountId": "Your_AccountId",
            "Region": 0,
            "ServiceId": "Your_ServiceId"
        }
    }
}
返回调用结果

返回值 Result 仅在请求成功时返回"ok",失败时为空。

正常返回示例
{
    "Result": "ok",
    "ResponseMetadata": {
        "RequestId": "Your_RequestId",
        "Action": "StartSnapshot",
        "Version": "202",
        "Service": "rtc",
        "Region": "cn-north-1"
        }
}