文档中心>智能创作>开发文档>最佳实践>使用视频编辑模板导出视频

使用视频编辑模板导出视频

最近更新时间:2022-09-08 18:17:41

我的收藏

功能概述

智能创作视频剪辑支持通过视频编辑模板导出视频,只需要替换视频编辑模板中的部分媒体即可生产出效果与视频编辑模板类似的视频,可用于直接套用模板进行批量视频生产的场景。

实现步骤概要

使用视频编辑模板导出视频,只需要按如下几步操作即可完成:




步骤1:准备工作

创建智能创作平台

注意
使用视频编辑模板功能,需要创建标准型平台

获取 API 密钥

请求云 API 需要使用到开发者的 API 密钥(即 SecretId 和 SecretKey)。如果还未创建过密钥,请参见 创建密钥文档 生成新的 API 密钥;如果已创建过密钥,请参见 查看密钥文档 获取 API 密钥。

步骤2:制作视频编辑模板

参考 用户端使用指南-视频剪辑-模板制作 制件视频编辑模板。制作完成后,可以拿到视频编辑模板 ID,将在接口调用中使用。
注意
后续步骤以视频编辑模板 ID:5fc07c745d6cbe00018f1830@Public@CME为例,此模板为智能创作提供的公共模板,可直接使用。

步骤3:导入素材

使用视频编辑模板导出视频,需要替换模板中的部分媒体,这里需要先将媒体导入到智能创作媒资库。导入媒体的接口为 导入媒体 。为了简化操作,建议您使用 API Export 导入媒体。这里通过一个接口调用示例说明关键参数设置:
https://cme.tencentcloudapi.com/?Action=ImportMaterial
&Platform=test
&VodFileId=5285890796182734267
&Owner.Id=user_100920093
&Owner.Type=PERSON
&Name=测试媒体1
&<公共请求参数>
下面基于智能创作的 Java SDK 提供一个简单的示例:
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.cme.v20191029.CmeClient;
import com.tencentcloudapi.cme.v20191029.models.*;

public class ImportMaterial
{
public static void main(String [] args) {
try{
// 需要传入准备工作中获取的 SecretId,SecretKey,此处还需注意密钥对的保密
Credential cred = new Credential("SecretId", "SecretKey");
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint("cme.tencentcloudapi.com");
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
CmeClient client = new CmeClient(cred, "", clientProfile);
// 以下为关键参数部分
ImportMaterialRequest req = new ImportMaterialRequest();
// 平台,填准备工作中创建的平台 ID
req.setPlatform("test");
// 视频来源,推荐使用 VOD,先将视频上传到腾讯云点播
req.setSourceType("VOD");
Entity entity1 = new Entity();
entity1.setType("PERSON");
entity1.setId("user_100920093");
req.setOwner(entity1);
// 媒体名称
req.setName("测试媒体1");
// 腾讯云点播 FileId,使用上传到点播的视频 FileId
req.setVodFileId("5285890796182734267");
// 媒体文件路径,使用已经存在的媒体文件路径
req.setClassPath("/媒体");
// 媒体预处理参数,如果不需要做编辑预览,截取封面和雪碧图,此参数可不填
req.setPreProcessDefinition(10L);
// 返回的 resp 是一个 ImportMaterialResponse 的实例,与请求对象对应
ImportMaterialResponse resp = client.ImportMaterial(req);
// 输出 json 格式的字符串回包,任务 Id 可从此处得到
System.out.println(ImportMaterialResponse.toJsonString(resp));
} catch (TencentCloudSDKException e) {
System.out.println(e.toString());
}
}
}
注意
关于归属 Owner 参数,请参考文档 账号 部分。
如果替换的媒体为图片,目前可支持图片 URL 替换模板中的图片媒体,可忽略本步骤。
导入媒体,需要将媒体(无论是视频、音频或是图片)上传到云点播,获取到云点播 FileId。腾讯云点播提供了多种方式将视频上传到云点播,请参见 云点播-最佳实践-媒体上传
媒体上传,使用的点播子应用必须与创建智能创作平台使用的点播子应用一致,否则会返回点播文件不存在的错误。
发起导入媒体后,系统会返回媒体 ID,可用于替换模板中使用的媒体,后续步骤以媒体 ID:84a9b60cd409c2203c1be93 为例。

步骤4:导出视频

使用视频编辑模板导出视频接口为 使用视频编辑模板导出视频 。为了简化操作,建议您使用 API Export 发起导出视频。这里通过一个接口调用示例说明关键参数设置:
https://cme.tencentcloudapi.com/?Action=ExportVideoByTemplate
&Platform=test
&TemplateId=5fc07c745d6cbe00018f1830@Public@CME
&SlotReplacements.0.Id=1
&SlotReplacements.0.ReplacementType=VIDEO
&SlotReplacements.0.MediaReplacementInfo.MaterialId=5fc4ad7f69ec74000179072345
&SlotReplacements.0.MediaReplacementInfo.StartTimeOffset=0
&Definition=10
&ExportDestination=VOD
&VODExportInfo.Name=测试视频
&VODExportInfo.ClassId=10000
&<公共请求参数>
下面基于智能创作的 Java SDK 提供一个简单的示例:
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.cme.v20191029.CmeClient;
import com.tencentcloudapi.cme.v20191029.models.*;

public class ExportVideoByTemplate
{
public static void main(String [] args) {
try{
// 需要传入准备工作中获取的 SecretId,SecretKey,此处还需注意密钥对的保密
Credential cred = new Credential("SecretId", "SecretKey");
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint("cme.tencentcloudapi.com");
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
CmeClient client = new CmeClient(cred, "", clientProfile);
// 以下为关键参数部分
ExportVideoByTemplateRequest req = new ExportVideoByTemplateRequest();
// 平台,填准备工作中创建的平台 ID
req.setPlatform("test");
// 视频编辑模板 ID,填第二步制作视频编辑模板获取到的视频编辑模板 ID
req.setTemplateId("5fc07c745d6cbe00018f1830@Public@CME");

// 模板媒体替换信息
SlotReplacementInfo[] slotReplacementInfos1 = new SlotReplacementInfo[1];
SlotReplacementInfo slotReplacementInfo1 = new SlotReplacementInfo();
// 卡槽 Id,此处为制作视频编辑模板设置的替换卡槽 ID,唯一确认需要替换的媒体
slotReplacementInfo1.setId(0L);
// 替换类型,此处必须与视频编辑模板中原有的媒体类型一致
slotReplacementInfo1.setReplacementType("VIDEO");
// 替换的媒体信息
MediaReplacementInfo mediaReplacementInfo1 = new MediaReplacementInfo();
// 媒体的媒体类型,目前支持云剪素材(CMEMaterialId),如果替换的媒体为图片,可填 'ImageUrl'
mediaReplacementInfo1.setMediaType("CMEMaterialId");
mediaReplacementInfo1.setMaterialId("84a9b60cd409c2203c1be93");
// 替换的媒体开始时间,对于视频和音频有效,即替换的媒体以此开始时间使用,单位为秒
mediaReplacementInfo1.setStartTimeOffset(0F);
slotReplacementInfo1.setMediaReplacementInfo(mediaReplacementInfo1);

slotReplacementInfos1[0] = slotReplacementInfo1;

req.setSlotReplacements(slotReplacementInfos1);
// 导出模板 ID,用于指定导出的视频的参数,例如分辨率等。
req.setDefinition(10L);
// 视频导出目标,可是直接导出到腾讯云点播,也可以导出到云剪媒资。
req.setExportDestination("VOD");
VODExportInfo vODExportInfo1 = new VODExportInfo();
vODExportInfo1.setName("模板导出视频1");
vODExportInfo1.setClassId(5L);
req.setVODExportInfo(vODExportInfo1);

// 操作者 UID,必须保证该 UID 对模板及替换的素材有使用权限。
req.setOperator("user_100920093");

// 返回的 resp 是一个 ExportVideoByTemplateResponse 的实例,与请求对象对应
ExportVideoByTemplateResponse resp = client.ExportVideoByTemplate(req);
// 输出 json 格式的字符串回包
System.out.println(ExportVideoByTemplateResponse.toJsonString(resp));
} catch (TencentCloudSDKException e) {
System.out.println(e.toString());
}
}
}
注意
发起导出视频任务后,系统会生成一个任务 ID,后续操作步骤以 1250000000-CME-32f87637061242508eb10d6e4ecd0cd68 为例。
本例中是将视频直接导出到云点播,在云剪的媒资中无法查询到该导出的视频。如需要导出视频到云剪媒资库,请导出目标参数 ExportDestination 必须设置为 CME 并填写 CMEExportInfo 参数即可。
替换模板中的媒体,需要类型一致,即如果视频编辑模板中原有的媒体是视频,则一定要用视频替换。

步骤5:查看导出结果

发起导出任务后,需要调用接口查看任务处理结果。查看任务结果的接口为 获取任务详情 。为了简化操作,建议您使用 API Export 查看处理结果。这里通过一个接口调用示例说明关键参数设置:
https://cme.tencentcloudapi.com/?Action=DescribeTaskDetail
&Platform=test
&TaskId=1250000000-CME-32f87637061242508eb10d6e4ecd0cd68
&<公共请求参数>
下面基于智能创作的 Java SDK 提供一个简单的示例:
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.cme.v20191029.CmeClient;
import com.tencentcloudapi.cme.v20191029.models.*;

public class DescribeTaskDetail
{
public static void main(String [] args) {
try{
// 需要传入准备工作中获取的 SecretId,SecretKey,此处还需注意密钥对的保密
Credential cred = new Credential("SecretId", "SecretKey");
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint("cme.tencentcloudapi.com");
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
CmeClient client = new CmeClient(cred, "", clientProfile);
// 以下为关键参数部分
DescribeTaskDetailRequest req = new DescribeTaskDetailRequest();
// 平台,填准备工作中创建的平台 ID
req.setPlatform("test");
// 任务 ID,填第四步导出视频生成的任务 ID
req.setTaskId("1250000000-CME-32f87637061242508eb10d6e4ecd0cd68");
// 返回的resp是一个DescribeTaskDetailResponse的实例,与请求对象对应
DescribeTaskDetailResponse resp = client.DescribeTaskDetail(req);
// 输出json格式的字符串回包,可获取到任务结果
System.out.println(DescribeTaskDetailResponse.toJsonString(resp));
} catch (TencentCloudSDKException e) {
System.out.println(e.toString());
}
}
}
注意
发起导出视频任务后,因系统合成任务需要异步处理,所以不能立马返回处理结果。需要轮询直至任务完成(也就是任务的状态为 SUCCESS)时才能获取到导出结果。
导出任务成功后,通过查询任务详情可获取到导出视频的播放 URL,腾讯云点播 FileId 等信息。