本文介绍按需录制的适用场景、使用流程、实践示例和注意事项。

适用场景

在自动录制的场景下,根据事先设定的配置,一条直播流要么录制,要么不录制,不可以动态修改录制行为。如果您想动态地控制录制的行为,可以使用按需录制的功能。

按需录制的原理是当直播流推流上来之后,直播录制服务会发送一条HTTP回调给您事先设定的后台服务,通过该回调的返回内容决定是否录制这条直播流,并且可以动态的修改录制格式和录制周期。

系统交互如下图所示:

在这里,您需要开发上图中的App业务服务,接收HTTP回调,并根据您自身的业务逻辑决定是否录制。

使用流程

  1. 和自动录制一样,调用AddLiveAppRecordConfig接口。其中OnDemand字段填1,表示通过HTTP回调开启按需录制。
  2. 调用AddLiveRecordNotifyConfig接口,设置OnDemandUrl字段。
  3. 推流。
  4. App业务服务接收到该推流的按需录制回调,根据自身业务决定是否录制,返回内容。
  5. 直播录制服务根据按需录制回调返回的结果,启动录制或不启动录制。
涉及到的API包括:
API名称说明
AddLiveAppRecordConfig配置自动录制规则。
DeleteLiveAppRecordConfig如果不再需要某项规则,可以通过该接口删除。
DescribeLiveRecordConfig查询所有配置的规则。
AddLiveRecordNotifyConfig配置某个域名下的录制回调,包括事件回调和按需录制回调。
DeleteLiveRecordNotifyConfig如果不再需要某个域名的录制回调,可以通过该接口删除。
DescribeLiveRecordNotifyConfig查询某个域名的录制回调。
UpdateLiveRecordNotifyConfig更新某个域名的录制回调。
按需录制回调按需录制回调给您的HTTP消息定义。

实践示例

  1. 调用AddLiveAppRecordConfig接口,配置指定域名为example.com,appname为liveBucket****下的所有直播流自动录制:
    /?AppName=liveApp****
    &DomainName=example.com
    &OssBucket=liveBucket****
    &OssEndpoint=oss-cn-shanghai.aliyuncs.com
    &RecordFormat.1.Format=m3u8
    &<公共请求参数>
  2. 调用AddLiveRecordNotifyConfig接口,设置OnDemandUrl字段为http://example.aliyundoc.com:
    /?DomainName=example.com
    &OnDemandUrl=http://example.aliyundoc.com
    &<公共请求参数>
  3. 推流。
  4. 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
  5. 根据回调返回的结果:(详见按需录制回调
    • 如果收到以下结果,则进行录制:
      {
          "ApiVersion" : "1.0",
          "NeedRecord" : true
      }
    • 如果收到以下结果,则不录制:
      {
          "ApiVersion" : "1.0",
          "NeedRecord" : false
      }

注意事项

  • 如果没有设置OnDemandUrl,就不会有按需录制回调,默认行为是不录制。
  • 视频直播支持触发拉流,当使用触发拉流域名对应的播放地址进行播放时,会自动触发阿里云视频直播服务进行拉流直播,无人播放时则不会回源站进行拉流。自动录制、按需录制、手动录制功能应用在触发拉流场景时,如果触发拉流无人播放,则不会回源站拉流,自动录制、按需录制、手动录制同样也不会进行录制。