文档

自动录制

本文介绍自动录制的使用流程、注意事项和实践示例。

使用场景

  • 只要有推流就会进行自动录制。同一条直播流推流,要么录制,要么不录制。

  • 指定录制的时间段,如果该时间段内有推流,就启动自动录制。

使用流程

  1. 配置自动录制规则,调用接口请参见AddLiveAppRecordConfig

  2. 进行推流,详细内容请参见直播推流

相关API参见:

API名称

说明

DeleteLiveAppRecordConfig

如果不再需要某项规则,可以通过该接口删除。

DescribeLiveRecordConfig

查询所有配置的规则。

RealTimeRecordCommand

调用此接口可进行停止正在录制的直播流。

注意事项

  • 修改配置后,新配置对修改之前的直播流不生效,必须重新推流才能生效。

  • AddLiveAppRecordConfig接口中的AppName和StreamName可以填为*,表示所有AppName和所有StreamName(即不限制AppName或StreamName)。

  • 可以通过AddLiveAppRecordConfig配置多条规则,规则匹配时存在优先级:

    • 同时指定DomainName、AppName(不为*)、StreamName(不为*)的优先级最高。

    • 同时指定DomainName、AppName(不为*)的优先级次之。

    • 单独指定DomainName,AppName为*(即只限定域名)的优先级最低。

实践示例

指定某个appname下所有流自动录制

下例是最简单的用法,指定域名为example.com,appname为liveApp****下的所有直播流自动录制,录制格式为M3U8,录制周期为1小时,单个切片时长为30秒,切片名称为****{UnixTimestamp}_{Sequence}。录制到oss-cn-shanghai.aliyuncs.com名为liveBucket****的bucket中:

  1. 调用AddLiveAppRecordConfig接口,参数如下:

    /?AppName=liveApp****
    &DomainName=example.com
    &OssBucket=liveBucket****
    &OssEndpoint=oss-cn-shanghai.aliyuncs.com
    &RecordFormat.1.Format=m3u8
    &RecordFormat.1.OssObjectPrefix=****{StartTime}_{EndTime}
    &RecordFormat.1.CycleDuration=3600
    &RecordFormat.1.SliceOssObjectPrefix=****{UnixTimestamp}_{Sequence}
    &RecordFormat.1.SliceDuration=30
    &<公共请求参数>
    说明
    • 自动录制每隔一定周期(周期时间通过RecordFormat.N.CycleDuration字段配置)会产生一个录制文件。如果在一个录制周期内,直播流发生了断流,但是在3分钟内,该直播流又推上来了,那么仍会在同一个录制文件中继续录制。这就意味着,一条直播流必须断流超过3分钟,才会生成最后一个录制文件。

    • 如果不指定录制周期,录制文件会在每6小时自动生成一个录制文件。

    • OssBucket地域与直播域名所在地域必须一致。

    • 必须设置参数OssObjectPrefix。文件名小于256字节,支持变量匹配,包含 {AppName}、{StreamName}、{Sequence}、{StartTime}、{EndTime}、{EscapedStartTime}、{EscapedEndTime}。参数值必须要有{StartTime}或{EscapedStartTime}和{EndTime}或{EscapedEndTime}

    • 如果选择m3u8或cmaf格式,必须同时设置请求参数RecordFormat.N.SliceOssObjectPrefix和RecordFormat.N.SliceDuration。

    • SliceOssObjectPrefix支持变量匹配,包含{AppName}、{StreamName}、{UnixTimestamp}、{Sequence},参数值必须包含{UnixTimestamp}和{Sequence}变量。

  2. 推流。

同时录制M3U8和MP4

在上例的基础上,下例设置同时录制M3U8和MP4两种格式,同时设置MP4的录制周期为半小时:

  1. 调用AddLiveAppRecordConfig接口,参数如下:

    /?AppName=liveApp****
    &DomainName=example.com
    &OssBucket=liveBucket****
    &OssEndpoint=oss-cn-shanghai.aliyuncs.com
    &RecordFormat.1.Format=m3u8
    &RecordFormat.1.OssObjectPrefix=****{StartTime}_{EndTime}
    &RecordFormat.1.CycleDuration=3600
    &RecordFormat.1.SliceOssObjectPrefix=****{UnixTimestamp}_{Sequence}
    &RecordFormat.1.SliceDuration=30
    &RecordFormat.2.Format=mp4
    &RecordFormat.2.OssObjectPrefix=****{StartTime}_{EndTime}
    &RecordFormat.2.CycleDuration=1800
    &<公共请求参数>
  2. 推流。

限定自动录制的时间段

说明

限制条件:该功能仅针对流级别的配置生效(即配置中StreamName字段不为空才生效)。

在上例的基础上,下例限定自动录制的时间段为UTC时间(北京时间-8)2019-02-15 09:00:002019-02-15 21:00:00

  1. 调用AddLiveAppRecordConfig接口,参数如下:

    /?AppName=liveApp****
    &DomainName=example.com
    &StreamName=liveStream****
    &OssBucket=liveBucket****
    &OssEndpoint=oss-cn-shanghai.aliyuncs.com
    &RecordFormat.1.Format=m3u8
    &RecordFormat.1.OssObjectPrefix=****{StartTime}_{EndTime}
    &RecordFormat.1.CycleDuration=3600
    &RecordFormat.1.SliceOssObjectPrefix=****{UnixTimestamp}_{Sequence}
    &RecordFormat.1.SliceDuration=30
    &RecordFormat.2.Format=mp4
    &RecordFormat.2.OssObjectPrefix=****{StartTime}_{EndTime}
    &RecordFormat.2.CycleDuration=1800
    &StartTime=2019-02-15T01:00:00Z
    &EndTime=2019-02-15T13:00:00Z
    &<公共请求参数>
    说明

    如果指定了时间段,在该时间段内如果没有推流,自然不会录制。限定时间段的配置规则是一次性的,即当指定的时间段过去之后,该规则不会再触发。需要注意的是,StartTime和EndTime字段填的是UTC时间,请注意和本地时区的对应。

  2. 推流。

停止录制

如果某条直播流正在录制,您也可以手动停止该直播流的录制。如直播流example.com/liveApp****/liveStream****正在录制,可以按以下方式调用RealTimeRecordCommand接口停止录制:

/?AppName=liveApp****
&DomainName=example.com
&StreamName=liveStream****
&Command=stop
&<公共请求参数>

相关文档

如果想知道自动录制是否生效,或者希望针对每个录制文件做实时处理,可以设置录制回调,详见:录制内容检索与管理