适用场景

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

按需录制的原理是当直播流推流上来之后,直播录制服务会发送一条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接口,配置指定域名为test.com,appname为test123下的所有直播流自动录制:
    /?AppName=test123
    &DomainName=test.com
    &OssBucket=test123
    &OssEndpoint=oss-cn-shanghai.aliyuncs.com
    &RecordFormat.1.Format=m3u8
    &<公共请求参数>
  2. 调用AddLiveRecordNotifyConfig接口,设置OnDemandUrl字段为http://cb.test.com:
    /?DomainName=test.com
    &OnDemandUrl=http://cb.test.com
    &<公共请求参数>
  3. 推流
  4. APP业务服务接收到的按需录制回调为:(详见 按需录制回调
    GET /?app=test123&domain=test.com&stream=teststream&vbitrate=2000&codec=h264 HTTP/1.1
    Host: live.abc.com
    User-Agent: Go-http-client/1.1
  5. 根据回调返回的结果:(详见 按需录制回调
    • 如果收到以下结果,则进行录制:
      {
          "ApiVersion" : "1.0",
          "NeedRecord" : true
      }
    • 如果收到以下结果,则不录制:
      {
          "ApiVersion" : "1.0",
          "NeedRecord" : false
      }

注意事项

如果没有设置OnDemandUrl,就不会有按需录制回调,默认行为是不录制。