按需录制,在自动录制的基础上,您可以动态决定具体某条流是否需要录制。
适用场景:
在自动录制的场景下,根据事先设定的配置,一条直播流要么录制,要么不录制,不可以动态修改录制行为。如果您想动态地控制录制的行为,可以使用按需录制的功能。
原理:
按需录制的原理是当直播流推流上来之后,直播录制服务会发送一条HTTP回调给您事先设定的后台服务,通过该回调的返回内容决定是否录制这条直播流,并且可以动态的修改录制格式和录制周期。
LIVE代表阿里云视频服务中心,APP业务服务代表你的应用服务
在这里,您需要开发上图中的APP业务服务,接收HTTP回调,并根据您自身的业务逻辑决定是否录制。
使用流程:
- 和自动录制一样,调用AddLiveAppRecordConfig接口。其中OnDemand字段填1,表示通过HTTP回调开启按需录制。
- 调用AddLiveRecordNotifyConfig接口,设置OnDemandUrl字段。
- 推流
- APP业务服务接收到该推流的按需录制回调,根据自身业务决定是否录制,返回内容。
- 直播录制服务根据按需录制回调返回的结果,启动录制或不启动录制。
注意事项:
如果没有设置OnDemandUrl,就不会有按需录制回调,默认行为是不录制。
涉及到的API包括:
API名称 | 说明 |
---|---|
AddLiveAppRecordConfig | 配置自动录制规则 |
DeleteLiveAppRecordConfig | 如果不再需要某项规则,可以通过该接口删除。 |
DescribeLiveRecordConfig | 查询所有配置的规则 |
AddLiveRecordNotifyConfig | 配置某个域名下的录制回调,包括事件回调和按需录制回调。 |
DeleteLiveRecordNotifyConfig | 如果不再需要某个域名的录制回调,可以通过该接口删除。 |
DescribeLiveRecordNotifyConfig | 查询某个域名的录制回调 |
UpdateLiveRecordNotifyConfig | 更新某个域名的录制回调 |
按需录制回调 | 按需录制回调给您的HTTP消息定义 |
接口详情:
1. 配置自动录制规则 (详情请参见:https://www.cnblogs.com/wmzll/p/14089927.html)
2. 删除自动录制配置(详情请参见:https://www.cnblogs.com/wmzll/p/14089927.html)
3. 查询所有配置规则 (详情请参见:https://www.cnblogs.com/wmzll/p/14089927.html)
4. 配置某个域名下的录制回调,包括事件回调和按需录制回调。调用AddLiveRecordNotifyConfig添加域名级别录制回调配置。
请求参数
名称 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Action | String | 是 | AddLiveRecordNotifyConfig |
系统规定参数。取值:AddLiveRecordNotifyConfig。 |
DomainName | String | 是 | www.yourdomain.com |
您的加速域名。 |
NotifyUrl | String | 是 | http://www.yourdomain.cn/examplecallback.action |
录制回调(包括录制事件和状态回调) url 地址。
|
OnDemandUrl | String | 否 | http://www.yourdomain.cn/ondemandcallback.action |
按需录制回调 url 地址。
|
NeedStatusNotify | Boolean | 否 | false |
是否需要录制任务状态回调,可取值:true | false。 默认值:false。 |
返回数据
名称 | 类型 | 示例值 | 描述 |
---|---|---|---|
RequestId | String | 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8 |
请求ID。 |
5. 删除录制回调,调用DeleteLiveRecordNotifyConfig删除域名级别录制回调配置。
请求参数
名称 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Action | String | 是 | DeleteLiveRecordNotifyConfig |
系统规定参数。取值:DeleteLiveRecordNotifyConfig。 |
DomainName | String | 是 | www.yourdomain.com |
您的加速域名。 |
返回数据
名称 | 类型 | 示例值 | 描述 |
---|---|---|---|
RequestId | String | 16A96B9A-F203-4EC5-8E43-CB92E68F4CD8 |
请求ID。 |
6. 查询某个域名的录制回调,调用DescribeLiveRecordNotifyConfig查询域名级别录制回调配置。
请求参数
名称 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Action | String | 是 | DescribeLiveRecordNotifyConfig |
系统规定参数。取值:DescribeLiveRecordNotifyConfig。 |
DomainName | String | 是 | www.yourdomain.com |
您的加速域名。 |
返回数据
名称 | 类型 | 示例值 | 描述 |
---|---|---|---|
RequestId | String | 5056369B-D337-499E-B8B7-B761BD37B08A |
请求ID。 |
LiveRecordNotifyConfig |
域名录制回调配置。 |
||
DomainName | String | test.com |
流所属加速域名。 |
NotifyUrl | String | http://www.yourdomain.cn/examplecallback.action |
录制回调地址。 |
NeedStatusNotify | Boolean | false |
是否需要录制任务状态回调。 |
OnDemandUrl | String | http://www.yourdomain.cn/ondemandcallback.action |
按需录制回调url地址。 |
7. 更新某个域名的录制回调, 调用UpdateLiveRecordNotifyConfig更新域名级别录制回调配置。
请求参数
名称 | 类型 | 是否必选 | 示例值 | 描述 |
---|---|---|---|---|
Action | String | 是 | UpdateLiveRecordNotifyConfig |
系统规定参数。取值:UpdateLiveRecordNotifyConfig。 |
DomainName | String | 是 | test.com |
加速域名。 |
NotifyUrl | String | 否 | http://www.yourdomain.cn/examplecallback.action |
录制回调(包括事件回调和状态回调)url地址。
|
OnDemandUrl | String | 否 | http://www.yourdomain.cn/ondemandcallback.action |
按需回调url地址。
|
NeedStatusNotify | Boolean | 否 | false |
是否需要录制任务状态回调,可取值:true | false。 默认值:false。 |
返回数据
名称 | 类型 | 示例值 | 描述 |
---|---|---|---|
RequestId | String | 16A96B9A-F203-4EC5-8E43-CB92E68F4CD |
请求ID |
添加域名级别录制回调配置时,您可以添加以下内容:
录制事件回调
指在你推流成功并且开始录制的时候,阿里云视频服务中心,回调你配置的回调接口,并且会携带一些参数。参数如下:
{ "domain": "qt01.alivecdn.com", "app": "mp4flvtest_flv", "stream": "callback_test", "uri": "mp4flvtest_flv/callback_test/0_2017-03-08-23:09:46_2017-03-08-23:10:40.flv", "duration": 69.403, "start_time": 1488985786, "stop_time": 1488985840 }
其中,domain、app、stream分别为录制域名、应用名和流名,uri 为目标录制文件在用户录制 OSS Bucket 下的路径,duration、start_time、stop_time 分别为目标录制文件录制内容时长和起止时间。
录制状态回调示例,当 NeedStatusNotify=true 时产生
1. 录制开始事件回调, 表示录制已经成功开始。
{ "domain": "gs_domain", "app": "gs_app", "stream": "gs_stream", "event": "record_started" }
其中,domain, app, stream分别为录制域名,应用名和流名,event为事件名,可以为record_started/record_paused/record_resumed。
2. 录制暂停事件回调, 表示录制已经成功暂停。
{ "domain": "gs_domain", "app": "gs_app", "stream": "gs_stream", "event": "record_paused" }
3. 录制继续事件回调, 表示录制已经成功恢复。
{ "domain": "gs_domain", "app": "gs_app", "stream": "gs_stream", "event": "record_resumed" }
按需录制回调
进行录制配置之后,您可以选择是否按需录制。
目前,按需录制包括两种方式:
-
-
-
-
通过推流参数(暂不支持)
-
通过HTTP回调
HTTP回调指用户指定一个回调地址,并设置一个domain、app或stream级别的录制为按需录制,当录制服务收到匹配domain、app或stream名称的流时向用户的回调地址发送请求(请求包含5个参数),来询问用户是否需要录制这路流。请您继续阅读以下内容了解 HTTP回调。
-
-
-
请求参数
参数 | 类型 | 描述 |
---|---|---|
domain | String | 域名。 |
app | String | 应用名称。 |
stream | String | 流名称。 |
codec | String | 编码方式。
|
vbitrate | String | 视频码率。
|
返回参数
参数 | 类型 | 是否必选 | 描述 |
---|---|---|---|
ApiVersion | String | 否 |
API版本。 默认:1.0版本。 |
NeedRecord | Bool | 是 | 是否需要录制。 |
Interval | Json Object | 否 | 具体格式的录制周期变化。
|
Format | Array | 否 | 录制格式,支持MP4、FLV、M3U8。 |