美摄SDK For Android
3.14.0
|
美摄模板资源包的使用分三个步骤:安装、获取模板信息、创建timeline。本文档适用于Android,IOS参考相关文档。
和其他资源包的使用一样,调用assetPackageManager上的install接口安装,只是模板的安装必须是**异步安装,有安装完成回调。**
StringBuilder fx = new StringBuilder();
mStreamingContext.getAssetPackageManager().installAssetPackage
(“assets:/FD76F889-8093-4757-B0FA-4FAE66273451.template”,
null,
NvsAssetPackageManager.ASSET_PACKAGE_TYPE_TEMPLATE,false,
fx);
模板是可以支持多画幅的,如果想使用非默认的画幅,可以调用assetPackageManager上的changeTemplateAspectRatio接口设置所需的模板画幅:
public boolean changeTemplateAspectRatio(String uuidString, int aspectRatio)
模板所支持的画幅比例可以通过assetPackageManager上的getAssetPackageSupportedAspectRatio接口查询:
public int getAssetPackageSupportedAspectRatio(String assetPackageId, int type)
调用assetPackageManager上的相关接口获取模板信息。目前提供获取模板的素材列表、模板的可替换字幕列表。按产品需求,可以增加相应的接口来获取模板信息。
调用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;
}
调用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);
}
调用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,或者进行二次编辑了。