美摄SDK For Android  3.10.0
模板使用技术文档

模板使用说明

美摄模板资源包的使用分三个步骤:安装、获取模板信息、创建timeline。本文档适用于Android,IOS参考相关文档。

1、安装

和其他资源包的使用一样,调用assetPackageManager上的install接口安装,只是模板的安装必须是**异步安装,有安装完成回调。**

StringBuilder fx = new StringBuilder();

mStreamingContext.getAssetPackageManager().installAssetPackage

(“assets:/FD76F889-8093-4757-B0FA-4FAE66273451.template”,

null,

NvsAssetPackageManager.ASSET_PACKAGE_TYPE_TEMPLATE,false,

fx);

2、设置所需的模板画幅比例(非必要步骤)

模板是可以支持多画幅的,如果想使用非默认的画幅,可以调用assetPackageManager上的changeTemplateAspectRatio接口设置所需的模板画幅:

public boolean changeTemplateAspectRatio(String uuidString, int aspectRatio)

模板所支持的画幅比例可以通过assetPackageManager上的getAssetPackageSupportedAspectRatio接口查询:

public int getAssetPackageSupportedAspectRatio(String assetPackageId, int type)

3、获取模板信息

调用assetPackageManager上的相关接口获取模板信息。目前提供获取模板的素材列表、模板的可替换字幕列表。按产品需求,可以增加相应的接口来获取模板信息。

3.1、获取模板的素材列表:

调用getTemplateFootages接口,传入安装后的模板资源包的UUID,返回模板的素材列表。

List<NvsAssetPackageManager.NvsTemplateFootageDesc> list =

m_streamingContext.getAssetPackageManager().getTemplateFootages(templateId);

素材信息类:

public static final int TEIMPLATE_FOOTAGE_TYPE_VIDEO_IMAGE = 0;

public static final int TEIMPLATE_FOOTAGE_TYPE_VIDEO = 1;

public static final int TEIMPLATE_FOOTAGE_TYPE_IMAGE = 2;

public static final int TEIMPLATE_FOOTAGE_TYPE_AUDIO = 3;

public static final int TEIMPLATE_FOOTAGE_TYPE_FAEEZE_FRAME = 4;

public static class NvsTemplateFootageCorrespondingClipInfo {

public int trackIndex;

public int clipIndex;

public long inpoint

public long outpoint

public boolean needReverse;

public boolean canReplace;

}

public static class NvsTemplateFootageDesc {

public String id;

public int type;

public boolean canReplace;

public String innerAssetFilePath;

public ArrayList<String> tags;

public ArrayList<NvsTemplateFootageCorrespondingClipInfo> correspondingClipInfos;

}

3.2、获取模板的可替换字幕列表:

调用getTemplateCaptions接口,传入安装后的模板资源包的UUID,返回可替换的字幕列表:

List<NvsAssetPackageManager.NvsTemplateCaptionDesc> arrayList =

m_streamingContext.getAssetPackageManager().getTemplateCaptions(templateId);

字幕信息类:

public static class NvsTemplateCaptionDesc {

public String replaceId; //字幕的id

public String text; //字幕的文字内容

}

如果需要替换文字内容,那么遍历timeline上的字幕对象,找到字幕对象的id和这个replaceId匹配的字幕对象,然后调用字幕类上的setText方法设置文字内容。

List<NvsAssetPackageManager.NvsTemplateCaptionDesc> captions = m_streamingContext.getAssetPackageManager().getTemplateCaptions(templateId);

NvsTimelineCaption caption = timeline.getFirstCaption();
while (caption != null) {
String id = caption.getTemplateAttachment(NvsObject.TEMPLATE_KEY_REPLACE_ID);

if(captions.get(0).replaceId.equals(id)) {

caption.setText(“test”);

break;

}

caption = m_timeline.getNextCaption(caption);
}

4、创建timeline

调用streamingContext上的createTimeline方法,传入安装后的模板资源包的UUID,以及需要替换的footage的列表,返回模板对应的timeline。

public NvsTimeline createTimeline(String templateId, List<templateFootageInfo> templateFootages);

public static class templateFootageInfo

{

public String footageId; // footage ID

public String filePath; // footage对应的文件路径

public String reverseFilePath; // footage对应的倒放文件路径

}

至此,应用层就可以播放这个timeline,或者进行二次编辑了。