直播录制是将直播原始流经过转音视频封装(不修改音频、视频数据以及对应的时间戳等信息)得到的文件存储到对象存储(COS)平台的服务。
注意事项
创建录制任务 和 创建录制模板配置 为两种录制发起方式,实际使用中按需选择其中一种即可。若同一直播流,配置录制模板的同时创建了录制任务,会导致重复录制。 因为推流发起后启动录制任务会有短暂延迟,所以推流时间过短会导致无法生成录制文件。为保证录制文件质量,建议每次录制时的推流时间大于10s。
录制存储
直播录制将文件存放于对象存储,如需使用直播录制服务,需首先申请开通 对象存储。录制文件存储时长配置请在对象存储 设置生命周期 进行管理。 录制支持的格式
录制文件格式支持:FLV/ HLS/ MP4/ AAC,其中 AAC 为纯音频录制。
少部分音视频编码方式的直播流在录制并不支持,不同音视频编码方式在录制功能的支持情况如下:
编码方式 | 录制格式 |
|
|
| FLV | HLS | MP4 |
H.264 | 支持 | 支持 | 支持 |
H.265 | 扩展支持 | 支持 | 支持 |
H.266 | 扩展支持 | 支持 | 支持 |
AV1 | 扩展支持 | 不支持 | 支持 |
AAC | 支持 | 支持 | 支持 |
MP3 | 支持 | 支持 | 支持 |
OPUS | 扩展支持 | 支持 | 支持 |
说明:
“扩展支持”为直播私有扩展(播放器及ffmpeg工具均需要定制),不同于ffmpeg实现方式。
建议针对不支持或扩展支持的编码方式,调整为录制编码方式为 H.264、H.265 等的转码流。
录制使用场景
|
按推流域名、流名称多级别录制 | 您可以在推流域名、流名称级别配置是否需要录制。 |
按指定时间段录制 | 您可以通过调用 API 控制录制的开始与结束时间,在您指定的时间内进行录制。 |
精彩视频录制 | 在推流过程中碰到精彩画面,您可以通过调用 API 实时产生录制。 |
纯音频录制 | 若推流为纯音频,您可以配置 AAC 纯音频录制。 |
为指定推流域名下所有直播流开启录制
我们将录制参数以模板形式进行管理,您可以为不同业务场景创建录制配置模板。并通过配置模板与不同推流域名、流名称进行关联,实现录制配置灵活管理目的。
您在开通 COS 后,如果需要对特定推流域名下直播流进行录制,有以下实现方法:
直播控制台
2. 在 域名管理 添加推流域名,单击管理,将此域名与录制模板进行关联。具体操作请参见 录制配置。 API 调用
2. 调用 CreateLiveRecordRule,设置参数推流域名 DomainName 和 TemplateId(第1步返回),在 AppName 及 StreamName 填写空字符串,表示对此域名下所有推流进行录制。处理成功后约5分钟 - 10分钟生效。 类似,您还可以将录制模板与不同流名称进行关联,以此实现部分直播流开启录制的效果。
另外,同一录制模板可以关联到不同推流域名、AppName 、StreamName,但不允许相同的推流域名、AppName 、StreamName 与多个模板关联。如果出现同一直播流同时匹配到多个录制模板的情况,最终会按如下表格顺序匹配到优先级最高的一个录制模板。(仅复杂场景使用,大多数用户可忽略)
✓ 代表关联录制模板的对应参数有值,× 代表对应参数值为空。
同一推流域名下部分流不开启录制
您可能已经为某个推流域名配置了录制,但是此域名下存在个别推流因业务原因不需要录制。可以这样操作:
https://live.tencentcloudapi.com/?Action=CreateLiveRecordTemplate
&TemplateName=norecord
&Description=test
&<公共请求参数>
注意:
上述方案仅针对个别推流不需要录制的情况。如果您需要操作直播流数较多,我们还是建议您使用另外一个推流域名进行独立管理,主要考虑到:
无论录制模板还是录制规则,最大数目都存在限制(50个)。
按推流域名维度管理更灵活,即使业务变化也不需操作录制模板和规则。
指定时间段录制
对于一些推流,如果您希望在指定开始时间启动录制,并在指定结束时间结束录制,可以通过 API 方式指定录制。与配置录制模板方式不同,具体录制参数需要通过 API 指定。且这种方式一般用于未开通任何录制方式的情况下使用。
API 调用
录制示例
最简单的情况,只需填写指定的 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小时。
https://live.tencentcloudapi.com/?Action=CreateLiveRecordTemplate
&TemplateName=templat
&Description=test
&Mp4Param.Enable=1
&Mp4Param.RecordInterval=3600
&<公共请求参数>
输出示例:
{
"Response": {
"RequestId": "839d12da-95a9-43b2-a9a0-03366d01b532",
"TemplateId": 17016
}
}
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
&<公共请求参数>
关于精彩视频录制,有以下几点说明:
创建录制时需要确保正在推流。
支持海外推流。
混流录制
在使用混流录制功能时,请您先参考 云端混流 文档,了解混流业务的相关知识和操作步骤。 对于使用了直播云端混流业务的场景,录制侧按混流参数 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 续录功能后,中间断流不会回调,默认续流只回调最终生成文件。
录制文件获取
录制文件生成后自动存储到对象存储,有以下方式可以获取录制文件:
对象存储控制台
登录 对象存储控制,选择存储桶列表 > 输入存储桶名称 > 点击存储桶,即可浏览、以及搜索录制生成的所有文件。 COS API查询
录制事件通知
通过控制台或者 API 调用设置录制回调地址,录制文件生成后会以消息方式通知到该回调地址。在收到消息后可根据 录制事件通知 进行业务处理。 事件通知机制高效可靠且实时性好,我们推荐您使用回调方式获取录制文件。
更新配置注意事项
在更新完录制配置之后,我们建议您重新推流并对配置进行验证。配置的生效规则如下:
配置生效时间默认为10分钟。
配置作用时间是在直播推流开始时刻,录制过程中不更新配置。
对于推流持续时间较长的场景(如监控摄像),需要断流重推配置才生效。
本页内容是否解决了您的问题?