视频直播录制可对当前直播实时录制并可回放历史直播视频。本文将详细为您介绍视频直播录制功能。
功能介绍
视频直播是通过播放地址以实时流的形式播放推流端的数据,如果想要在直播结束后再次观看或修改直播内容,就必须要使用视频直播的录制功能。
视频直播录制功能,就是将直播中心接收到的推流数据进行录制,保存至您指定的存储位置。目前直播录制存储提供两种方式,录制存储至VOD和录制存储至OSS。
直播录制的原理
直播录制的过程,是通过拉取您推上来的直播流,将音视频封装成单独的一个个媒体切片(封装格式为TS),然后进行储存。直播录制在工作时遵循以下原则:
直播录制只修改音视频的封装格式(RTMP/FLV转成TS),绝不修改音视频内容(即编码层内容)。举个例子,如果您推上来的直播流是花屏的,那录制下来的也是花屏的。
直播录制有权限往用户储存地址写入录制文件,但是不会也没有权限修改/删除用户储存地址的任务文件(包括已写入的录制文件)。用户储存地址中的录制文件,完全由您自己管理。
功能对比
录制存储至VOD和录制存储至OSS都可以对直播内容进行录制存储。两者使用场景有所不同,您可以根据您自己的业务决定具体采用哪种方式进行存储。
存储方式 | 关联产品服务 | 封装格式 | 适用场景 |
存储方式 | 关联产品服务 | 封装格式 | 适用场景 |
录制存储至VOD | 开通视频点播服务 | TS/M3U8 | 倾向于对录制内容进行二次生产,注重录制内容后期处理,如剪辑,播放,设置录制视频封面等。 |
录制存储至OSS | 开通OSS服务 |
| 倾向于录制内容管理,注重存储。 |
同一个直播流不能同时配置两种存储方式。
限制条件
音视频编码格式
由于直播录制需要先将直播流切分成TS文件,因此您推上来的直播流的音视频编码格式必须满足TS封装格式的要求。根据FLV标准和ISO/IEC 13818-1标准,直播录制目前仅支持以下编码格式:
视频:H264、HEVC、MPEG4
音频:AAC、MP3
如果直播流包含了非以上格式编码的音视频,直播录制可能会出现:无法生成录制文件、录制黑屏、录制没有声音,以及其他一些无法预见的异常情况。
异常的直播流
对于正常的直播流(没有不支持的编码格式、帧率稳定、时间戳单调线性增长),直播录制均能正常生成录制文件。当然,对于偶尔帧率不稳定,时间戳跳变的流,直播录制也能做出一定的兼容,保证录制文件的正常生成。但是如果推上来的直播流存在严重异常(长时间没有视频帧,时间戳增长没有规律,音视频头缺失等等),直播录制可能无法保证正常生成录制文件。
录制存储至VOD
前置条件
若采用录制存储至VOD方式进行直播录制功能配置,需要开通视频点播服务并启用点播系统Bucket。
录制文件存储在视频点播VOD中,会产生存储费用,在VOD中计费请参见点播基础服务计费。
在启用点播系统Bucket时,需要注意点播系统Bucket需要与待配置域名的直播中心同地域。
使用金融云账号不支持视频直播录制到点播。
功能配置
完成前置条件相关内容之后,就可以进行录制存储至VOD配置。
视频直播目前提供两种方式添加录制存储至VOD配置。
录制内容转码
录制存储至VOD文件格式为m3u8,如果想存储其他格式可以通过转码配置实现。配置录制转码示例代码如下:
addLiveRecordVodConfigRequest.setVodTranscodeGroupId("<TranscodeGroupId>");
转码模板需要在点播系统进行配置,具体操作请参见点播转码模板。
<TranscodeGroupId>为点播系统配置的转码模板组ID。
配置转码后,会对录制文件进行转码(原文件仍然保留),生成转码地址。
录制内容合并
录制内容合并目前分为两种形式:
同一路流断流180秒以内再次推流,录制内容会自动合并成一个录制文件。
推流时长超过录制周期之后的文件合并。在推流时长超过录制周期之后,会生成一个新的录制文件(假设设置录制周期5分钟,推流时长8分钟,一次推流将会产生两个录制文件)。
如果需要将多个录制周期的文件进行合并,可以进行合并配置。
配置录制文件合并示例代码如下:
JavaaddLiveRecordVodConfigRequest.setAutoCompose("ON"); addLiveRecordVodConfigRequest.setComposeVodTranscodeGroupId("<TranscodeGroupId>");
合并之后会产生一个新的文件,原录制文件仍然保留。
转码模板需要在点播系统进行配置,具体操作请参见点播转码模板。
<TranscodeGroupId>为点播系统配置的转码模板组ID。
设置录制周期时长示例代码如下:
Java//单位秒,取值范围(300~21600),默认值900 addLiveRecordVodConfigRequest.setCycleDuration(<300>);
录制文件管理
目前可以通过视频直播控制台查看存储至VOD的录制文件,若要对录制文件进行管理请通过视频点播进行,详情请参见视频点播媒体管理。
录制存储至OSS
前置条件
若采用录制存储至OSS方式进行直播录制功能配置,需要开通OSS服务以及创建Bucket,具体操作请参见配置OSS。
录制文件存储在OSS中,会产生存储费用,在OSS中计费请参见存储费用。
OssBucket需要与待配置域名的直播中心同地域。
功能配置
完成前置条件相关内容之后,就可以进行录制存储至OSS配置。
视频直播目前提供两种方式添加录制存储至OSS配置。
录制转码流
如果希望在存储录制内容时减少录制文件体积,可通过录制转码流实现(在保证画质质量的前提下,调整视频码率、提高视频压缩率、减小文件体积)。录制存储至OSS功能支持同时存储转码流与原始流,也支持仅存储转码流或原始流。
使用直播转码功能会产生转码费用,按转码标准、分辨率规格及对应总转码时长计费。计费规则详见直播转码费用。
断流拼接
同一路流断流在断流拼接时长(默认180秒)以内再次推流,录制内容会自动合并成一个录制文件。
因需等待断流拼接,所以才会在断流拼接时长之后生成录制文件。
您可以根据您实际的业务调整断流拼接时长,设置断流拼接时长:
//单位秒,取值范围(15~21600)
addLiveAppRecordConfigRequest.setDelayTime(<180>);
不建议调整为过短或过长的时间。若生成录制文件的时间设置过短,由于网络波动,断流重推等原因,就会生成大量的录制文件。若设置过长则会导致录制文件在直播结束(断流)之后很长时间才能看到。
在一些特定的业务场景中,您可能完全不希望等待断流拼接,而希望在直播结束后立即生成录制文件,这种情况也是可以实现的。您可以给推流设置回调事件(设置推流回调事件请参见直播推流状态回调),在接收到推流结束通知时通过调用 RealTimeRecordCommand - 实时录制指令API做到取消断流拼接。
自定义录制策略
在功能配置中,我们进行了直播录制功能的配置,在直播推流时即会开始对直播内容进行录制,我们称其为自动录制。
但有些时候,我们希望能够通过业务决策自主决定是否需要对某一次直播内容进行录制。直播录制功能提供了解决这类问题的方法,自主决定录制分为两种情况:
一,由直播服务询问您的业务系统是否需要对该直播内容进行录制,得到响应需要录制后再进行录制,我们称其为按需录制。
二,由您的业务系统给直播服务发出通知对直播内容进行录制,我们称其为手动录制。
按需录制
实现按需录制,需要您业务系统提供直播服务调用的URL地址,具体说明可参见按需录制回调。
设置录制功能按需录制示例代码如下:
//OnDemand字段填1,表示通过HTTP回调开启按需录制。
addLiveAppRecordConfigRequest.setOnDemand(1);
同时调用 AddLiveRecordNotifyConfig - 添加域名级别录制回调配置API进行录制回调配置。
手动录制
实现手动录制,需要将自动录制功能关闭。示例代码如下:
//OnDemand字段填7,表示不进行自动录制。
addLiveAppRecordConfigRequest.setOnDemand(7);
然后在直播的过程中,您可以根据业务情况通过调用 RealTimeRecordCommand - 实时录制指令API开启录制。
停止录制
无论是自动录制,按需录制,手动录制,都可以调用RealTimeRecordCommand - 实时录制指令API主动停止录制。
相关API
录制周期配置
直播时长超过设定的录制周期后,将生成新文件(例如直播20分钟,录制周期设置为15分钟,将会生成两个录制文件),录制周期支持15-360分钟。
在直播未超过录制周期的情况下,录制文件一般在直播结束后生成。若是您的业务需要在直播未结束的情况下查看录制文件,可以通过调用 RealTimeRecordCommand - 实时录制指令API刷新录制内容,强制重新开始录制,如果restart之前在录制,会立即生成录制文件。
录制内容合并与提取
视频直播支持通过创建索引文件将录制内容按照时间段提取出文件,也可以将起止时间段内的多个录制文件内容合并为一个。
无论录制内容最终保存成哪种格式,直播录制都会先将直播流切片成一个个的TS切片,然后再合成对应封装格式的录制文件。通过此特性,可以自主创建M3U8索引文件,将TS切片文件进行组合,从而实现录制内容的合并与提取。
录制内容需要包含M3U8存储格式才能够进行合并或提取。
调用CreateLiveStreamRecordIndexFiles - 创建录制索引文件API创建录制内容索引文件。
相关API
录制文件管理
查看录制文件
视频直播支持三种方式进行录制文件查看。
删除录制文件
视频直播储存的是录制文件信息,如AppName,StreamName,OSS文件储存路径等,文件是储存在OSS中。如果在删除录制时需要同步删除储存在OSS中的文件,则需要创建服务角色AliyunMTSVideoLifecycleRole,并精确授权AliyunMTSVideoLifecycleRolePolicy系统策略。
目前有三种方式进行录制文件删除。
其他删除文件方法
删除超过6个月的文件:由于只能查询6个月以内的录制文件信息,若要删除超过6个月的文件请通过OSS进行,详情请参见OSS删除文件。
过期删除录制文件:由于媒体资源均存放在OSS的Bucket中,需要授权访问才能正常删除录制文件,您可以点击授权进行一键授权。授权后,再提交工单申请,我们会在后台为您配置您需要的过期时间。关于如何提交工单,请参见联系我们。配置过期时间后,录制文件过期删除功能授权操作即为完成。
云资源访问授权是对系统创建,供视频直播使用授予访问云资源权限的角色。授权后如果误删角色,可进行重新授权。
相关文档
使用Java SDK,可参见Java SDK使用说明。
- 本页导读 (1)
- 功能介绍
- 直播录制的原理
- 功能对比
- 限制条件
- 录制存储至VOD
- 前置条件
- 功能配置
- 录制内容转码
- 录制内容合并
- 录制文件管理
- 录制存储至OSS
- 前置条件
- 功能配置
- 录制转码流
- 断流拼接
- 自定义录制策略
- 录制周期配置
- 录制内容合并与提取
- 录制文件管理
- 相关文档