本文介绍按需录制的适用场景、使用流程、实践示例和注意事项。
适用场景
在自动录制的场景下,根据事先设定的配置,一条直播流要么录制,要么不录制,不可以动态修改录制行为。如果您想动态地控制录制的行为,可以使用按需录制的功能。
按需录制的原理是当直播流推流上来之后,直播录制服务会发送一条HTTP回调给您事先设定的后台服务,通过该回调的返回内容决定是否录制这条直播流,并且可以动态的修改录制格式和录制周期。
系统交互如下图所示:
在这里,您需要开发上图中的App业务服务,接收HTTP回调,并根据您自身的业务逻辑决定是否录制。
使用流程
- 和自动录制一样,调用AddLiveAppRecordConfig接口。其中OnDemand字段填1,表示通过HTTP回调开启按需录制。
- 调用AddLiveRecordNotifyConfig接口,设置OnDemandUrl字段。
- 推流。
- App业务服务接收到该推流的按需录制回调,根据自身业务决定是否录制,返回内容。
- 直播录制服务根据按需录制回调返回的结果,启动录制或不启动录制。
涉及到的API包括:
API名称 | 说明 |
---|---|
AddLiveAppRecordConfig | 配置自动录制规则。 |
DeleteLiveAppRecordConfig | 如果不再需要某项规则,可以通过该接口删除。 |
DescribeLiveRecordConfig | 查询所有配置的规则。 |
AddLiveRecordNotifyConfig | 配置某个域名下的录制回调,包括事件回调和按需录制回调。 |
DeleteLiveRecordNotifyConfig | 如果不再需要某个域名的录制回调,可以通过该接口删除。 |
DescribeLiveRecordNotifyConfig | 查询某个域名的录制回调。 |
UpdateLiveRecordNotifyConfig | 更新某个域名的录制回调。 |
按需录制回调 | 按需录制回调给您的HTTP消息定义。 |
实践示例
- 调用AddLiveAppRecordConfig接口,配置指定域名为
example.com
,appname为liveBucket****下的所有直播流自动录制:/?AppName=liveApp**** &DomainName=
example.com
&OssBucket=liveBucket**** &OssEndpoint=oss-cn-shanghai.aliyuncs.com &RecordFormat.1.Format=m3u8 &<公共请求参数> - 调用AddLiveRecordNotifyConfig接口,设置OnDemandUrl字段为http://example.aliyundoc.com:
/?DomainName=
example.com
&OnDemandUrl=http://example.aliyundoc.com
&<公共请求参数> - 推流。
- App业务服务接收到的按需录制回调为:(详见按需录制回调)
GET /?app=liveApp****&domain=
example.com
&stream=liveStream****&vbitrate=2000&codec=h264 HTTP/1.1 Host:push.aliyundoc.com
User-Agent: Go-http-client/1.1 - 根据回调返回的结果:(详见按需录制回调)
- 如果收到以下结果,则进行录制:
{ "ApiVersion" : "1.0", "NeedRecord" : true }
- 如果收到以下结果,则不录制:
{ "ApiVersion" : "1.0", "NeedRecord" : false }
- 如果收到以下结果,则进行录制:
注意事项
- 如果没有设置OnDemandUrl,就不会有按需录制回调,默认行为是不录制。
- 视频直播支持触发拉流,当使用触发拉流域名对应的播放地址进行播放时,会自动触发阿里云视频直播服务进行拉流直播,无人播放时则不会回源站进行拉流。自动录制、按需录制、手动录制功能应用在触发拉流场景时,如果触发拉流无人播放,则不会回源站拉流,自动录制、按需录制、手动录制同样也不会进行录制。