直播即时剪辑

最近更新时间:2019-05-09 19:16:37

1. 接口描述

接口请求域名: vod.tencentcloudapi.com 。

直播即时剪辑,是指在直播过程中(即直播尚未结束时),客户可以在过往直播内容中选择一段,实时生成一个新的视频(HLS 格式),开发者可以将其立即分享出去,或者长久保存起来。

腾讯云点播支持两种即时剪辑模式:

  • 剪辑固化:将剪辑出来的视频保存成独立的视频,拥有独立 FileId;适用于将精彩片段长久保存的场景;
  • 剪辑不固化:剪辑得到的视频附属于直播录制文件,没有独立 FileId;适用于将精彩片段临时分享的场景。

注意:

  • 使用直播即时剪辑功能的前提是:目标直播流开启了时移回看功能。
  • 直播即时剪辑是基于直播录制生成的 m3u8 文件进行的,故而其最小剪辑精度为一个 ts 切片,无法实现秒级或者更为精确的剪辑精度。

剪辑固化

所谓剪辑固化,是指将剪辑出来的视频是保存成一个独立的视频(拥有独立的 FileId)。其生命周期不受原始直播录制视频影响(即使原始录制视频被删除,剪辑结果也不会受到任何影响);也可以对其进行转码、微信发布等二次处理。

举例如下:一场完整的足球比赛,直播录制出来的原始视频可能长达 2 个小时,客户出于节省成本的目的可以对这个视频存储 2 个月,但对于直播即时剪辑的「精彩时刻」视频却可以指定存储更长时间,同时可以单独对「精彩时刻」视频进行转码、微信发布等额外的点播操作,这时候可以选择直播即时剪辑并且固化的方案。

剪辑固化的优势在于其生命周期与原始录制视频相互独立,可以独立管理、长久保存。

剪辑不固化

所谓剪辑不固化,是指剪辑所得到的结果(m3u8 文件)与直播录制视频共享相同的 ts 分片,新生成的视频不是一个独立完整的视频(没有独立 FileId,只有播放 URL),其有效期与直播录制的完整视频有效期是一致的。一旦直播录制出来的视频被删除,也会导致该片段无法播放。

剪辑不固化,由于其剪辑结果不是一个独立的视频,因而也不会纳入点播媒资视频管理(比如控制台的视频总数不会统计这一片段)中,也无法单独针对这个片段做转码、微信发布等任何视频处理操作。

剪辑不固化的优势在于其剪辑操作十分“轻量化”,不会产生额外的存储开销。但其不足之处在于生命周期与原始录制视频相同,且无法进一步进行转码等视频处理。

默认接口请求频率限制:100次/秒。

2. 输入参数

以下请求参数列表仅列出了接口请求参数和部分公共参数,完整公共参数列表见 公共请求参数

参数名称 必选 类型 描述
Action String 公共参数,本接口取值:LiveRealTimeClip
Version String 公共参数,本接口取值:2018-07-17
Region String 公共参数,本接口不需要传递此参数。
StreamId String 推流直播码
StartTime String 流剪辑的开始时间,格式参照 ISO 日期格式说明
EndTime String 流剪辑的结束时间,格式参照 ISO 日期格式说明
IsPersistence Integer 是否固化。0 不固化,1 固化。默认不固化。
ExpireTime String 剪辑固化后的视频存储过期时间。格式参照 ISO 日期格式。填“9999-12-31T23:59:59Z”表示永不过期。过期后该媒体文件及其相关资源(转码结果、雪碧图等)将被永久删除。仅 IsPersistence 为 1 时有效,默认剪辑固化的视频永不过期。
Procedure String 剪辑固化后的视频点播任务流处理,详见上传指定任务流。仅 IsPersistence 为 1 时有效。
MetaDataRequired Integer 是否需要返回剪辑后的视频元信息。0 不需要,1 需要。默认不需要。
SubAppId Integer 点播子应用 ID。如果要访问子应用中的资源,则将该字段填写为子应用 ID;否则无需填写该字段。

3. 输出参数

参数名称 类型 描述
Url String 剪辑后的视频播放 URL。
FileId String 剪辑固化后的视频的媒体文件的唯一标识。
注意:此字段可能返回 null,表示取不到有效值。
VodTaskId String 剪辑固化后的视频任务流 ID。
注意:此字段可能返回 null,表示取不到有效值。
MetaData MediaMetaData 剪辑后的视频元信息。
注意:此字段可能返回 null,表示取不到有效值。
RequestId String 唯一请求 ID,每次请求都会返回。定位问题时需要提供该次请求的 RequestId。

4. 示例

示例1 即时剪辑不固化

输入示例

https://vod.tencentcloudapi.com/?Action=LiveRealTimeClip
&StreamId=record-stream
&StartTime=2018-09-20T10:00:00Z
&EndTime=2018-09-20T11:00:00Z
&<公共请求参数>

输出示例

{
  "Response": {
    "Url": "http://video.com/playlist.m3u8",
    "FileId": "",
    "VodTaskId": ""
  }
}

示例2 即时剪辑并且固化

输入示例

https://vod.tencentcloudapi.com/?Action=LiveRealTimeClip
&StreamId=record-stream
&StartTime=2018-09-20T10:00:00Z
&EndTime=2018-09-20T11:00:00Z
&IsPersistence=1
&Procedure=SomeProcedure
&<公共请求参数>

输出示例

{
  "Response": {
    "Url": "http://video.com/playlist.m3u8",
    "FileId": "232439849846",
    "VodTaskId": "21324-Procedure-343dafre45gfs"
  }
}

5. 开发者资源

API Explorer

该工具提供了在线调用、签名验证、SDK 代码生成和快速检索接口等能力,能显著降低使用云 API 的难度,推荐使用。

SDK

云 API 3.0 提供了配套的开发工具集(SDK),支持多种编程语言,能更方便的调用 API。

命令行工具

6. 错误码

以下仅列出了接口业务逻辑相关的错误码,其他错误码详见 公共错误码

错误码 描述
InternalError 内部错误。
InvalidParameterValue.ClipDuration 参数值错误:裁剪时间段太长。
InvalidParameterValue.EndTime 参数值错误:EndTime 无效。
InvalidParameterValue.ExpireTime 参数值错误:ExpireTime 格式错误。
InvalidParameterValue.StartTime 参数值错误:StartTime 无效。
InvalidParameterValue.StreamIdInvalid 参数值错误:StreamId无效。