直播录制

最后更新时间:2021-08-13 11:22:08
    • 直播录制是将直播原始流经过转音视频封装(不修改音频、视频数据以及对应的时间戳等信息)得到的文件存储到点播平台的服务。

      注意事项

      • 创建录制任务创建录制模板配置 为两种录制发起方式,实际使用中按需选择其中一种即可。若同一直播流,配置录制模板的同时创建了录制任务,会导致重复录制。
      • 因为推流发起后启动录制任务会有短暂延迟,所以推流时间过短会导致无法生成录制文件。为保证录制文件质量,建议每次录制时的推流时间大于10s。

      录制存储

      直播录制将文件存放于点播平台,您如需使用直播录制服务,需首先申请开通 云点播服务

      说明:

      若需了解生成的录制文件命名规则,请参见 录制模板参数-VodFileName

      录制格式

      录制文件格式支持:FLV/HLS/MP4/AAC,其中 AAC 为纯音频录制。

      录制使用场景

      使用场景 说明
      按推流域名、流名称多级别录制 您可以在推流域名、流名称级别配置是否需要录制。
      按指定时间段录制 您可以通过调用 API 控制录制的开始与结束时间,在您指定的时间内进行录制。
      精彩视频录制 在推流过程中碰到精彩画面,您可以通过调用 API 实时产生录制。
      纯音频录制 若推流为纯音频,您可以配置 AAC 纯音频录制。

      为指定推流域名下所有直播流开启录制

      我们将录制参数以模板形式进行管理,您可以为不同业务场景创建录制配置模板。并通过配置模板与不同推流域名、流名称进行关联,实现录制配置灵活管理目的。
      您在开通点播服务后,如果需要对特定推流域名下直播流进行录制,有两种实现方法:

      直播控制台

      1. 进入【功能配置】>【直播录制】添加录制配置模板。
      2. 【域名管理】添加推流域名,单击【管理】,将此域名与录制模板进行关联。具体操作请参见 录制配置

      API 调用

      1. 调用 CreateLiveRecordTemplate,设置至少一种录制格式,如 FlvParam。
      2. 调用 CreateLiveRecordRule,设置参数推流域名 DomainName 和 TemplateId(第1步返回)。在 AppName 及 StreamName 填写空字符串,表示通配此域名下所有推流。

      类似,您还可以将录制模板与不同流名称进行关联,以此实现部分直播流开启录制的效果。
      另外,由于同一录制模板可以关联到不同推流域名、流名称。存在同一条直播流可能会同时匹配到多个录制模板的情况,但最终只会匹配到一个最高优先级的模板。模板匹配规则存在下表所述优先级(仅复杂场景使用,大多数用户可忽略)。

      DomainName StreamName 优先级
      0
      1
      2
      3

      其中:【空】为通配,【✓】为精确匹配,【0】为最高优先级。一旦匹配到高优先级模板则停止匹配且返回此优化级模板。

    同一推流域名下部分流不开启录制

    您可能已经为某个推流域名配置了录制,但是此域名下存在个别推流因业务原因不需要录制。可以这样操作:

    1. 调用 CreateLiveRecordTemplate,且不指定任何录制格式。

        https://live.tencentcloudapi.com/?Action=CreateLiveRecordTemplate
      &TemplateName=norecord
      &Description=test
      &<公共请求参数>
      
    2. 通过 云直播控制台 或云 API CreateLiveRecordRule 设置 DomainName 和 StreamName 参数,将上述录制模板与指定推流域名、流名称进行关联。

      注意:

      上述方案仅针对个别推流不需要录制的情况。如果您需要操作直播流数较多,我们还是建议您使用另外一个推流域名进行独立管理,主要考虑到:

      • 无论录制模板还是录制规则,最大数目都存在限制(50个)。
      • 按推流域名维度管理更灵活,即使业务变化也不需操作录制模板和规则。

      指定时间段录制

      对于一些推流,如果您希望在指定开始时间启动录制,并在指定结束时间结束录制,可以通过 API 方式指定录制。与配置录制模板方式不同,具体录制参数需要通过 API 指定。且这种方式一般用于未开通任何录制方式的情况下使用。

      API 调用

      创建录制任务 API 说明,具体请参见 CreateRecordTask

    录制示例

    • 最简单的情况,只需填写指定的 StreamName、DomainName、AppName 和 EndTime 参数。
      例如:创建了2020年08月10日早上08点到10点的录制任务,格式为 FLV,视频录制,分片间隔30分钟,永久存储。
    • 输入示例:*
      https://live.tencentcloudapi.com/?Action=CreateRecordTask
      &AppName=live
      &DomainName=mytest.live.push.com
      &StreamName=livetest
      &StartTime=1597017600
      &EndTime=1597024800
      &TemplateId=0
      &<公共请求参数>
      
    • 您还可以指定具体录制格式、录制类型以及存储参数等。
      例如:创建了2020年08月10日早上08点到10点的录制任务,格式为 MP4,分片间隔1小时,永久存储。
      1. 调用 CreateLiveRecordTemplate ,先创建录制模板。
    • 输入示例:*
      https://live.tencentcloudapi.com/?Action=CreateLiveRecordTemplate
      &TemplateName=templat
      &Description=test
      &Mp4Param.Enable=1
      &Mp4Param.RecordInterval=3600
      &Mp4Param.StorageTime=0
      &<公共请求参数>
      
    • 输出示例:*
      {
      "Response": {
      "RequestId": "839d12da-95a9-43b2-a9a0-03366d01b532",
      "TemplateId": 17016
      }
      }
      
      1. 调用 CreateRecordTask,创建录制任务。
    • 输入示例:*
      https://live.tencentcloudapi.com/?Action=CreateRecordTask
      &StreamName=livetest
      &AppName=live
      &DomainName=mytest.live.push.com
      &StartTime=1597017600
      &EndTime=1597024800
      &TemplateId=17016
      &<公共请求参数>
      
    说明:

    • 对于同一条直播流,定时任务之间以及定时任务与其它形式的录制任务不冲突。也就是说,您创建的多个定时任务所指定的时间范围可以重叠。而且可以在启用配置录制的基础上再调用 API 创建录制任务。
    • 另外,建议提前创建录制任务(如:提前一个小时,或者凌晨创建当天的任务),且指定的任务开始时间稍早于事件时间。

    精彩视频录制

    在推流过程中,若碰到精彩视频画面,您希望立即开始录制并生成精彩视频剪辑做后续使用。可以通过 API 调用并指定精彩视频录制来实现。

    https://live.tencentcloudapi.com/?Action=CreateRecordTask
    &StreamName=test
    &AppName=live
    &DomainName=mytest.live.push.com
    &EndTime=1597024800
    &<公共请求参数>
    

    关于精彩视频录制,有以下几点说明:

    • 创建录制时需要确保正在推流。

    • 可以调用 API StopRecordTask 提前终止任务。

    • 支持海外推流。

      混流录制

      首先请先参见 云端混流 了解混流业务。

      对于使用了直播云端混流业务的场景,录制侧按混流参数 OutputStreamType(输出流类型)将混流分为两类:

    • OutputStreamType 为0,表示输出流在输入流列表中,即没有生成新的流。

    • OutputStreamType 为1,表示输出流不在输入流列表中,即生成了新的流。

      假设有推流 A、B,经过混流后输出流为 C。

    • 对于 OutputStreamType 为0的情况,且假设 C 流是 A 流(流名称相同,但是混流后画面)。启用配置录制后,默认会生成 A 流(混流画面),B 流录制文件。注意,因复用了同一流 ID,A 流原始推流将不会产生录制。

    • 对于 OutputStreamType 为1的情况,开启配置录制后,默认会生成 A 流、B 流以及 C 流(混流画面)录制文件。

      如果只想录制混流画面,您可以通过 API CreateRecordTask 实现。需要说明的是,对于 OutputStreamType 为1这种混流类型,调用上述 API 需要设置 StreamType 参数为1

      注意:

      混流录制不支持中国内地(大陆)和国际/港澳台的直播混流,会导致录制文件错误,影响正常观看回放。

    自动拼接录制(多次推流续流录制)

    为了针对推流端网络抖动等原因出现的闪断推流导致的生成多个录制文件不便于一场直播的回放观看问题,录制服务提供了以自动拼接录制的方式将短时间中断的多次推流录制成一个文件的能力。

    其原理是针对 HLS 录制格式使用 HLS 的 #EXT-X-DISCONTINUITY 标签来分割多次推流的音视频数据,此标签的作用是:标识前后的音视频数据的时间戳、视频编码、音频编码采样等信息可能不同,需要播放器刷新解码器以实现无缝的正常播放,因此使用此功能时,需要播放器支持 #EXT-X-DISCONTINUITY 标签,iOS 自带播放器(或者 Safari 直接播放)、Android 的 ExoPlayer、Web 端的 hls.js 播放器都支持此标签,VLC 等播放器不支持此标签。

    使用此功能后,设置好推流中断自动拼接时间(最长可设置30分钟,即最长支持将中断30分钟的推流拼接成一个文件),在最后一次正常推流结束后,会自动拼接断流时间内的内容并生成 HLS 录制文件。

    自动拼接录制目前支持 HLS 格式,您可以在 直播录制 中设置续录超时时长。

    注意:

    • 自动拼接不支持无音频数据的直播流。
    • 视频合并功能需要通过调用点播中的视频合成接口实现,相关文档说明请参见 视频合成
    • 配置了 HLS 续录功能后,中间断流不会回调,默认续流只回调最终生成文件。

    录制文件获取

    录制文件生成后自动存储到云点播系统,有以下方式可以获取录制文件:

    云点播控制台

    登录 云点播控制台,在非管理员页面上选择【媒资管理】>【视频管理】,即可浏览录制生成的所有文件。

    录制事件通知

    通过控制台或者 API 调用设置录制回调地址,录制文件生成后会以消息方式通知到该回调地址。在收到消息后可根据录制 回调事件消息通知 进行业务处理。

    事件通知机制高效可靠且实时性好,我们推荐您使用回调方式获取录制文件。

    云点播 API 查询

    具体使用请参见云点播 API SearchMedia 接口筛选查询录制文件。

    注意:

    当通过云直播 API 创建录制任务 时,录制回调不会返回用户推流 URL 所带 stream_param 参数,其它录制方式会返回。

    更新配置注意事项

    在更新完录制配置之后,我们建议您重新推流并对配置进行验证。配置的生效规则如下:

    • 配置生效时间默认为10分钟。
    • 配置作用时间是在直播推流开始时刻,录制过程中不更新配置。
    • 对于推流持续时间较长的场景(如监控摄像),需要断流重推配置才生效。