You need to enable JavaScript to run this app.
导航

开启音频切片 StartSegment

最近更新时间2024.04.11 11:50:50

首次发布时间2024.01.03 20:25:17

本文档 API 接口为最新版本接口,后续相关功能的新增都会在此更新,推荐使用最新版本接口。旧版接口文档请参考历史版本

在你的音视频应用中,你可能会需要对房间中的音频流进行切片,供后续处理。比如,你可以对音频内容进行审核。
你可以使用 StartSegment 这个 OpenAPI 实现这一功能。
你也可以在控制台上开启自动切片功能,开启该功能后,若未设置业务标识,默认对房间内每个用户都进行全程切片。切片结果会上传到你选择的存储平台上。

使用说明

接口行为

你可以调用 StartSegment 接口,指定你所属的 AppId,对指定 RoomId 房间中的一路或多路音频流进行切片。

切片结果会上传到你指定的存储平台上,随后你指定的回调地址会收到切片的元数据信息。你可以在控制台上设置回调地址。有关回调结果的详细说明,参看SegmentRealTimeData

前置条件

在使用音频切片功能前,你必须已经在控制台上开启音频切片服务。

调用接口

关于调用接口的请求结构、公共参数、签名算法和返回结构,参看调用方法

注意事项

请求频率:QPS 不得超过 60。

请求说明

  • 请求方式:POST
  • 请求地址:https://rtc.volcengineapi.com?Action=StartSegment&Version=2023-11-01

调试

请求参数

下表仅列出该接口特有的请求参数和部分公共参数。更多信息请见公共参数

Query

参数名称
数据类型
是否必选
示例值
描述
Action
String
StartSegment
接口名称。当前 API 的名称为 StartSegment
Version
String
2023-11-01
接口版本。当前 API 的版本为 2023-11-01

Body

参数
类型
是否必选
示例值
描述
AppId
String
Your_AppId
应用的唯一标志
BusinessId
String
Your_BusinessId
业务标识。添加 BusinessId 后,你可以在控制台上查看根据 BusinessId 划分的质量和用量数据。
RoomId
String
Your_RoomId
房间 ID,是房间的唯一标志
TaskId
String
Your_TaskId

截图任务 ID。你可以自行设定 TaskId 以区分不同的切片任务,且在后续更新和结束任务时也须使用该 TaskId。

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

关于 TaskId 及以上 Id 字段的命名规则符合正则表达式:[a-zA-Z0-9_@\-\.]{1,128}

若任务运行中,使用相同的 TaskId 重复调用开始接口不会导致请求失败,BaseResponse.Result 会提示 The task has been started. Please do not call the startup task interface repeatedly
MaxIdleTime
Integer
任务最大的空闲超时时间。
如果切片任务订阅的所有流都已停止发布,那么任务会在空闲时间超过设定值后自动停止。值的范围为[1, 86400] ,单位为秒。默认值为 180秒。
TargetStreams
Object
-
房间内需要切片的音频流。如果参数为空,默认对房间内所有发布的音频流进行切片。最多17路音频流。
如果在开启音频切片时指定了多路流,那么,切片时会针对屏幕流在内的每一路流进行切片。
如果切片时,对应流的发布者关闭了麦克风,会产生静音文件,但若开启了切片对齐或忽略静音切片功能,则不会产生静音切片。
StreamList
Object[]
-
Stream组成的列表,可以为空。为空时,表示订阅房间内所有流。在一个 StreamList 中,Stream.Index 不能重复。
Index
Integer
0
在自定义布局中,使用 Index 对流进行标志。后续在 Layout.regions.StreamIndex 中,你需要使用 Index 指定对应流的布局设置。
UserId
String
Your_UserId
用户Id,表示这个流所属的用户。
StreamType
Integer
0
流的类型,值可以取01,默认值为00表示普通音视频流,1表示屏幕流。
Duration
Integer
每个音频切片的时长。单位为秒。范围为 [1, 600],默认值为 20秒
StorageConfig
Object
/
存储平台设置。当前切片功能仅支持存储到 Tos 平台和第三方存储平台,即 Type只可取值 02
Type
Integer
0

存储平台类型

TosConfig
Object
-
当 Type = 0 时,需正确设置 TosConfig 的值,否则请求会报错
AccountId
String
Your_AccountId

火山引擎平台账号 ID,例如:200000000

  • 火山引擎平台账号 ID 查看路径:控制台->账号管理->账号信息
    alt

  • 此账号 ID 为火山引擎主账号 ID。

  • 若你调用 OpenAPI 鉴权过程中使用的 AK、SK 为子用户 AK、SK,账号 ID 也必须为火山引擎主账号 ID,不能使用子用户账号 ID。

Region
Integer
0

不同存储平台支持的 Region 不同,具体参看 Region对照表

默认值为0
Bucket
String
Your_Bucket
存储桶的名称。
VodConfig
Object
-
当 Type = 1 时,需正确设置 VodConfig 的值,否则请求会报错
AccountId
String
Your_AccountId

火山引擎平台账号 ID,例如:200000000

  • 火山引擎平台账号 ID 查看路径:控制台->账号管理->账号信息
    alt

  • 此账号 ID 为火山引擎主账号 ID。

  • 若你调用 OpenAPI 鉴权过程中使用的 AK、SK 为子用户 AK、SK,账号 ID 也必须为火山引擎主账号 ID,不能使用子用户账号 ID。

Region
Integer
0

不同存储平台支持的 Region 不同,具体参看 Region对照表

默认值为0
Space
String
Your_Space
点播空间名称。
StorageClass
Integer
1

上传到视频点播平台时, 文件的存储类型。枚举值为:

  • 1:标准存储。
  • 2:归档存储。
  • 3:低频存储。
默认值为 1
关于存储类型的详细说明,参看媒资存储存储类型
AutoSetFileExtension
Boolean
false

上传到视频点播平台时, 是否需要根据文件后缀自动设置 FileExtension。关于 FileExtension 的详细说明,参看 FileExtension

  • true:需要;
  • false:不需要。
默认值为 false
CustomConfig
Object
-
当 Type = 2时,需正确设置 CustomConfig 的值,否则请求会报错
Vendor
Integer
0

第三方云存储平台。

  • 0: Amazon S3
  • 1: 阿里云 OSS
  • 2:华为云 OBS
  • 3:腾讯云 COS
  • 4:七牛云 Kodo。
    默认值为 0
Region
Integer
0

不同存储平台支持的 Region 不同,具体参看 Region对照表

默认值为0
Bucket
String
Your_Bucket
存储桶的名称。
AccessKey
String
Your_AccessKey
第三方存储平台账号的密钥。需确保此账号对存储桶有写权限。不建议开启读权限
SecretKey
String
Your_SecretKey
第三方存储平台账号的密钥
VeImageXConfig
Object
-
当 Type = 3时,需正确设置 VeImageXConfig 的值,否则请求会报错
AccountId
String
Your_AccountId

火山引擎平台账号 ID,例如:200000000

  • 火山引擎平台账号 ID 查看路径:控制台->账号管理->账号信息
    alt

  • 此账号 ID 为火山引擎主账号 ID。

  • 若你调用 OpenAPI 鉴权过程中使用的 AK、SK 为子用户 AK、SK,账号 ID 也必须为火山引擎主账号 ID,不能使用子用户账号 ID。

Region
Integer
/

不同存储平台支持的 Region 不同,具体参看 Region对照表

默认值为0
ServiceId
String
Your_ServiceId

服务 ID。

  • 你可以在 veImageX 控制台 服务管理页面,通过创建好的图片服务中获取服务 ID。
    你也可以通过 OpenAPI 的方式获取服务 ID,具体请参考获取所有服务信息
Control
Object
/
切片高级功能
Align
Boolean
false

是否开启切片对齐功能。默认为 False。你可以使用音频切片对齐功能,对齐各个用户音频切片的开始和结束时刻。

  • Align=False 时,关闭音频切片对齐。在某个切片周期中,如果用户有发送音频流的行为,即生成音频切片。如果用户在切片的周期中,有部分时间未发布音频,返回的音频切片时长会小于切片周期。各个用户音频切片开始时间不一定一致。
  • Align=True 时,开启音频切片对齐。在某个切片周期中,如果用户有发送音频流的行为,即生成音频切片。切片长度和切片周期相等,且各个用户音频切片开始的时间一致。如果用户在切片的周期中,有部分时间未发布音频,切片长度不变,这段时间呈现静音帧。如果用户在某个切片周期中始终没有发布音频,则不生成音频切片。
Mixed
Boolean
false

是否开启合流切片功能。默认为 False

  • Mixed=False 时,只会对 TargetStreams 中指定的音频流分别切片。
  • Mixed=True 时,除了会对 TargetStreams 中指定的音频流分别切片,还会对指定的音频流进行混音,生成合流切片,合流切片对应的用户名为 mixed。此时,任务创建后,不管是否有人上麦,会持续回调混音切片。

不同平台的回调参看:

操作 Android API iOS API Windows API
本地麦克风录制和远端所有用户混音后的音频数据回调 onMixedAudioFrame onMixedAudioFrame: onMixedAudioFrame
IgnoreSilence
Boolean
false
是否忽略静音切片。默认值为 false
RedundantDuration
Integer
2

冗余切片时长,单位为毫秒。

当前 RTC 按照传入的Duration值进行固定时长切片,可能存在敏感词被截断,未被识别的情况。此时你可以添加冗余切片,即上一段切片的末尾指定时长,来避免此情况,此时切片的时长变为RedundantDuration + Duration
例如:当 Duration = 20redundantDuration = 3 时,最终输出的前三个文件时长为:[0-20], [17-40], [37-60]。
Identifier
String
Your_Identifier
自定义文件前缀。
切片文件名由 Identifier + UserId + 时间戳 + 序号组成。默认情况下 Identifier 为 随机生成的 UUID。在自定义文件名时,Identifier 的命名规则符合正则表达式:[a-zA-Z0-9_@\-\.]{1,128}
在自定义文件名时,你需确保 Identifier 命名全局唯一,否则在 TOS 平台会因文件名重复被覆盖。
Handle
Boolean
false
是否在开启音视频切片时,立刻开始切片。 True 为在开启音视频切片时,立刻开启切片;False 时,在开启音视频切片时,不开始切片,热启动任务。 默认值为true

返回参数

本接口无特有的返回参数。公共返回参数请见返回结构
其中返回值 Result 仅在请求成功时返回 ok,失败时为空。

请求示例

POST https://rtc.volcengineapi.com?Action=StartSegment&Version=2023-11-01

{
    "AppId": "Your_AppId",
    "BusinessId": "Your_BusinessId",
    "RoomId": "Your_RoomId",
    "TaskId": "Your_TaskId",
    "MaxIdleTime": 200,
    "TargetStreams": {
        "StreamList": [
            {
                "UserId": "user1",
                "StreamType": 0
            },
            {
                "UserId": "user1",
                "StreamType": 1
            }
        ]
    },
    "Duration": 20,
    "StorageConfig": {
        "Type": 2,
        "CustomConfig": {
            "Vendor": 0,
            "Region": 0,
            "Bucket": "Your_Bucket",
            "AccessKey": "Your_AccessKey",   
            "SecretKey": "Your_SecretKey",                 
    },
    "Control" : { 
        "Align" : true, 
        "Mixed" : true, 
        "RedundantDuration" : 2, 
        "IgnoreSilence" : true 
     }
}

返回示例

{
    "Result": "ok",
    "ResponseMetadata": {
        "RequestId": "Your_RequestId",
        "Action": "StartSegment",
        "Version": "2023-11-01",
        "Service": "rtc",
        "Region": "cn-north-1"
        }
}

错误码

您可访问公共错误码,获取更多错误码信息。