短视频SDK支持基于AE模板剪同款的功能,即通过导入AE制作的模板,通过替换模板中的视频、图片、文字等元素,实时编辑与预览,最后导出生成新的同款视频。
版本支持
版本 | 是否支持 |
---|---|
专业版 | 支持
说明 短视频SDK 3.35.0及以上版本才支持基于AE模板剪同款功能。
|
标准版 | 不支持 |
基础版 | 不支持 |
相关类功能
类名 | 功能 |
---|---|
AliyunAETemplate | 模板。 |
AliyunAETemplateAssetMedia | 模板媒体类素材。 |
AliyunAETemplateAssetText | 模板文字类素材。 |
AliyunAETemplateEditor | 模板编辑器。 |
AliyunAETemplatePlayer | 模板预览播放器。 |
AliyunAETemplateRender | 模板渲染导出器。 |
使用限制
- 仅3.35.0及以上版本的短视频SDK专业版支持基于AE模板剪同款功能。
- 已购买并申请开通了剪同款模块,购买方式,请参见获取License。
- 使用基于AE模板剪同款功能,需要按全量集成的方式引入剪同款引擎库,详细方法,请参见pod方式集成(推荐)。
- 基于AE模板剪同款不支持armv7架构的真机和模拟器,请在arm64架构的真机下运行,可以通过以下API进行功能入口的控制。
BOOL support = [AliyunAETemplateManager canSupport]; if (support) { // 打开功能入口 }
制作AE模板
创作剪同款的AE模板,请参见高级模板设计师手册。
编辑模板
代码中需要使用的参数详情,请参考接口文档。接口链接请参见相关类功能。
#import <AliyunVideoSDKPro/AliyunVideoSDKPro.h>
// 通过模板路径创建编辑器
self.editor = [[AliyunAETemplateEditor alloc] initWithTemplatePath:self.templatePath];
// 获取可替换素材列表
NSArray *array = self.editor.currentTemplate.replaceableAssets;
// 替换素材
AliyunAETemplateAsset *item = [array objectAtIndex:0];
if ([item isKindOfClass:AliyunAETemplateAssetMedia.class]) {
AliyunAETemplateAssetMedia *mediaAsset = (AliyunAETemplateAssetMedia *)item;
mediaAsset.replacedPath = @"filePath";
[self.editor commit];
}
else if ([item isKindOfClass:AliyunAETemplateAssetText.class]) {
AliyunAETemplateAssetText *textAsset = (AliyunAETemplateAssetText *)item;
textAsset.replacedText = titleTextField.text;
[self.editor commit];
}
// 替换背景音乐
[self.editor replaceAudio:@"musicPath"];
实时预览
代码中需要使用的参数详情,请参考接口文档。接口链接请参见相关类功能。
// 监听播放回调
self.editor.player.delegate = self
// 开始播放
[self.editor.player start];
#pragma mark - AliyunAETemplatePlayerDelegate
- (void)playerDidLoaded {
}
- (void)playerDidEnd {
}
- (void)playProgress:(double)progress {
}
- (void)playError:(NSInteger)errorCode {
}
渲染导出
代码中需要使用的参数详情,请参考接口文档。接口链接请参见相关类功能。
// 监听渲染回调
self.editor.render.delegate = self
// 开始渲染
[self.editor.render start];
#pragma mark - AliyunAETemplateRenderDelegate
- (void)templateRenderStarted {
NSLog(@"templage render started");
}
- (void)templateRenderFinished:(NSURL *)outputUrl {
NSLog(@"templage render completed");
}
- (void)templateRenderCancelled {
NSLog(@"templage render cancel");
}
- (void)templateRenderFailed:(NSError *)error {
NSLog(@"templage render error:%@", error);
}
- (void)templateRenderProgress:(CGFloat)progress {
NSLog(@"templage render progress:%f", progress);
}