本文档主要介绍直播录制的工作原理及其API提供的功能。

1 什么是直播录制

1.1 直播录制的原理

直播录制的过程,是通过拉取您推上来的直播流,将音视频封装成单独的一个个媒体切片(封装格式为TS),然后存入您指定的OSS bucket。直播录制在工作时遵循以下原则:
  • 直播录制只修改音视频的封装格式(RTMP/FLV转成TS),绝不修改音视频内容(即编码层内容)。举个例子,如果您推上来的直播流是花屏的,那录制下来的也是花屏的。
  • 直播录制有权限往用户bucket写入录制文件,但是不会也没有权限修改/删除用户bucket的任务文件(包括已写入的录制文件)。用户bucket中的录制文件,完全由您自己管理。

1.2 录制文件的封装格式

直播录制支持将直播流录制成以下封装格式的视频文件:
  • TS/M3U8
  • MP4
  • FLV

但是不管是哪种封装格式,直播录制都会先将直播流切片成一个个的TS切片,然后再合成对应封装格式的录制文件。稍有区别的是,对于M3U8来说,直播录制会将TS和M3U8都写入用户的bucket(因为M3U8只是HLS协议中的索引文件,音视频数据仍然在TS中);而对于MP4和FLV,用户bucket中只会有合成后的MP4和FLV切片。

1.3 限制条件

1.3.1 OSS写入权限

正常情况下,开通直播服务时,您已自动授权“允许直播服务写入用户OSS”,因此直播录制写入您指定的bucket时不存在权限问题。如果该权限意外被删除,您可以重新配置:
  • 通过控制台配置:您需要授权视频直播可将视频内容写入OSS产品的权限,授权后才能将视频存储至指定的OSS bucket中。详情参见 配置OSS
  • 通过RAM进行权限配置:详情参见 使用RAM配置子账号访问直播控制台

1.3.2 音视频编码格式

由于直播录制需要先将直播流切分成TS文件,因此您推上来的直播流的音视频编码格式必须满足TS封装格式的要求。根据FLV标准和ISO/IEC 13818-1标准,直播录制目前仅支持以下编码格式:
  • 视频:H264、HEVC、MPEG4
  • 音频:AAC、MP3
说明 如果直播流包含了非以上格式编码的音视频,直播录制可能会出现:无法生成录制文件、录制黑屏、录制没有声音,以及其他一些无法预见的异常情况。

1.3.3 异常的直播流

对于正常的直播流(没有不支持的编码格式、帧率稳定、时间戳单调线性增长),直播录制均能正常生成录制文件。当然,对于偶尔帧率不稳定,时间戳跳变的流,直播录制也能做出一定的兼容,保证录制文件的正常生成。但是如果推上来的直播流存在严重异常(长时间没有视频帧,时间戳增长没有规律,音视频头缺失等等),直播录制可能无法保证正常生成录制文件。您如果对此存在疑问,可通过工单咨询。

直播录制API提供哪些功能

  • 自动录制

    一旦推流就启动录制,一旦断流就停止录制。您可选择对某个域名下所有流、某个appname下所有流、或者单独某条流开启自动录制。详细用法参见:自动录制

  • 按需录制

    在自动录制的基础上,您可以动态决定具体某条流是否需要录制。详细用法参见:按需录制

  • 手动录制

    如果不希望自动录制,您也可以选择通过调用接口触发直播录制的启动与停止。详细用法参见:手动录制

  • 录制内容检索与管理

    直播录制每生成一个录制文件,都可以提供回调,方便您实现一些自定义的逻辑。另外,已经录制下来的内容,我们也提供检索与管理的功能。详细用法参见:录制内容检索与管理