阿里云视频直播录制--自动录制
一旦推流就启动录制,一旦断流就停止录制。您可以对某个域名下,所有流、某个appname下所有流、或者单独某条流开启自动录制。
适用场景:
1. 只要有推流就录制。同一条直播推流上来后,要么录制,要么不录制。
2. 事先指定录制的时间段,如果该时间段内有推流,就启动录制。
限制:
如果不指定录制周期,录制文件会在每6个小时自动生成一个录制文件。
使用流程:
1. 配置自动录制规则
2. 推流
API:
1. 配置录制规则,调用AddLiveAppRecordConfig配置APP录制,输出内容保存到OSS中。
前提要求:允许直播服务写入用户OSS
说明
- 修改配置后,新配置对修改之前的直播流不生效,必须重新推流才能生效!
- 如果指定了时间段,在该时间段内如果没有推流,自然不会录制。限定时间段的配置规则是一次性的,即当指定的时间段过去之后,该规则不会再触发。需要注意的是,StartTime和EndTime字段填的是UTC时间,请注意和本地时区的对应。
- AddLiveAppRecordConfig接口中的AppName和StreamName可以填为
*
,表示所有AppName和所有StreamName(即不限制AppName或StreamName)。 - 可以通过AddLiveAppRecordConfig配置多条规则,规则匹配时存在优先级:如果想知道自动录制是否生效,或者希望针对每个录制文件做实时处理,可以设置录制回调,详见:录制内容检索与管理。
- 同时指定DomainName、AppName(不为
*
)、StreamName(不为*
)的优先级最高。 - 同时指定DomainName、AppName(不为
*
)的优先级次之。 - 单独指定DomainName,AppName为
*
(即只限定域名)的优先级最低。
- 同时指定DomainName、AppName(不为
- 自动录制每隔一定周期(周期时间通过RecordFormat.N.CycleDuration字段配置)会产生一个录制文件。如果在一个录制周期内,直播流发生了断流,但是在3分钟内,该直播流又推上来了,那么仍会在同一个录制文件中继续录制。这就意味着,一条直播流必须断流超过3分钟,才会生成最后一个录制文件。如果您希望修改这个默认的3分钟断流时间,可以提交工单在后台修改。
请求参数
名称 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Action | String | 是 | AddLiveAppRecordConfig |
系统规定参数,取值:AddLiveAppRecordConfig。 |
AppName | String | 是 | testApp |
直播流所属应用名称。 支持通配符(*),代表该域名下所有的AppName。 |
DomainName | String | 是 | test.com |
加速域名,指播放域名。 |
OssBucket | String | 是 | testBucket |
OssBucket名称。 |
OssEndpoint | String | 是 | oss-cn-shanghai.aliyuncs.com |
OssEndpoint域名。 |
RecordFormat.N.Format | String | 否 | m3u8 |
格式。目前支持m3u8、flv或mp4。 |
RecordFormat.N.OssObjectPrefix | String | 否 | record/{AppName}/{StreamName}/{Sequence}{EscapedStartTime}{EscapedEndTime} |
OSS存储的录制文件名,小于256 byte,支持变量匹配,包含 {AppName}、{StreamName}、{Sequence}、{StartTime}、{EndTime}、{EscapedStartTime}、{EscapedEndTime}。参数值必须要有{StartTime}或{EscapedStartTime}和{EndTime}或{EscapedEndTime}变量。默认支持1小时周期录制,最小周期时间15分钟,最多6小时。 例如:record/{AppName}/{StreamName}/{Sequence}_{EscapedStartTime}_{EscapedEndTime}。 <note>{StartTime}/{EndTime}格式为:2006-01-02-15:04:05,{EscapedStartTime}/{EscapedEndTime}格式为:2006-01-02-15-04-05,推荐使用 Escaped 格式,避免特殊字符在URL中带来的一些问题。</note> |
RecordFormat.N.SliceOssObjectPrefix | String | 否 | record/{AppName}/{StreamName}/{UnixTimestamp}_{Sequence} |
当format格式是m3u8录制,则需要配置,表示ts切片名称。默认30秒一片,小于256byte,支持变量匹配,包含{AppName}、{StreamName}、{UnixTimestamp}、{Sequence}。 例如:record/{AppName}/{StreamName}/{UnixTimestamp}_{Sequence},参数值必须包含{UnixTimestamp}和{Sequence}变量。 |
RecordFormat.N.CycleDuration | Integer | 否 | 1 |
周期录制时长。单位:秒。不填则默认为6小时。 |
StreamName | String | 否 | teststream |
流名称。 |
StartTime | String | 否 | 2018-04-10T09:57:21Z |
录制开始时间。格式:UTC时间。 设置的时间必须是实际推流时间(这条流计划推流录制的时间)开始7天之内的时间,只在流级别录制(StreamName不为空)有效。 |
EndTime | String | 否 | 2018-04-16T09:57:21Z |
录制结束时间。格式:UTC时间。 设置的时间必须大于StartTime,且与StartTime相差不应超过7天,超过7天将按照7天计算,只在流级别录制(StreamName不为空)有效。 |
OnDemand | Integer | 否 | 1 |
按需录制。
说明 使用1方式时候需要先通过AddLiveRecordNotifyConfig接口设置OnDemandUrl,否则默认不录制。
|
返回数据
名称 | 类型 | 示例值 | 描述 |
---|---|---|---|
RequestId | String | 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8 |
请求ID |
2. 删除自动录制配置,调用DeleteLiveAppRecordConfig解除录制配置。
通过AddLiveAppRecordConfig添加的配置,可以使用该接口删除。会删除DomainName、AppName、StreamName对应的配置。
请求参数
名称 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Action | String | 是 | DeleteLiveAppRecordConfig |
系统规定参数。取值:DeleteLiveAppRecordConfig。 |
AppName | String | 是 | testApp |
直播流所属应用名称。 |
DomainName | String | 是 | www.yourdomain.com |
您的加速域名。 |
StreamName | String | 否 | teststream |
流名称。 |
返回数据
名称 | 类型 | 示例值 | 描述 |
---|---|---|---|
RequestId | String | 6EBD1AC4-C34D-4AE1-963E-B688A228BE31 |
请求ID |
3. 查询所有配置,调用DescribeLiveRecordConfig查询域名下所有App录制配置。
根据DomainName、AppName、StreamName匹配查询,以列表形式返回(可能有多条配置)。支持分页和排序。
请求参数
名称 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Action | String | 是 | DescribeLiveRecordConfig |
系统规定参数。取值:DescribeLiveRecordConfig。 |
DomainName | String | 是 | www.yourdomain.com |
您的加速域名。 |
AppName | String | 否 | testApp |
直播流所属应用名称。 |
Order | String | 否 | asc |
排序。取值:
|
PageNum | Integer | 否 | 1 |
当前页码。默认值:1。 |
PageSize | Integer | 否 | 5 |
每页大小。默认值:10,取值范围:5~30。 |
StreamName | String | 否 | myStreamName |
直播流名称。 |
返回数据
名称 | 类型 | 示例值 | 描述 |
---|---|---|---|
RequestId | String | 5056369B-D337-499E-B8B7-B761BD37B08A |
请求ID。 |
LiveAppRecordList |
录制配置。 |
||
DomainName | String | test.com |
流所属加速域名。 |
AppName | String | testApp |
流所属应用名称。 |
OssEndpoint | String | oss-cn-shanghai.aliyuncs.com |
OSS endpoint。 |
OssBucket | String | test123 |
OSS存储bucket名称。 |
CreateTime | String | 2016-05-20T09:33:38Z |
创建时间。 |
RecordFormatList |
格式列表。 |
||
Format | String | xxx |
格式名称。 |
OssObjectPrefix | String | xxx |
OSS存储文件名。 |
SliceOssObjectPrefix | String | xxx |
存储分片的OSS文件名。 |
CycleDuration | Integer | 3600 |
周期录制时间,单位:秒。 |
EndTime | String | 2018-11-08T03:49:18Z |
计划录制结束时间,UTC时间。 |
OnDemond | Integer | 0 |
按需录制。可取值:0 | 1 | 2。0表示关闭,1表示通过HTTP回调方式,2表示通过推流参数方式。 使用1方式时候需要设置OnDemandCallback, 否则默认不录制。 |
StartTime | String | 2018-11-08T02:49:18Z |
计划录制开始时间,UTC时间。 |
StreamName | String | myStreamName |
流名称。 |
PageNum | Integer | 5 |
分页的页码。 |
PageSize | Integer | 10 |
每页大小。 |
Order | String | desc |
排序。 |
TotalPage | Integer | 20 |
总页数。 |
TotalNum | Integer | 12 |
符合条件的总个数。 |