更新时间 : 2021-08-02 10:21:52
//如果无需替换素材,可以用渲染引擎直接渲染
String path = "";//模板根目录
String json = "";//替换资源json
SXTemplate mTemplate = new SXTemplate(path, SXTemplate.TemplateUsage.kForRender);
mTemplate.setReplaceableJson(json);
SXTemplateRender render = new SXTemplateRender(mTemplate, null, outputPath);
render.setRenderListener(new SXRenderListener() {
@Override
public void onStart() {
//开始渲染
}
@Override
public void onUpdate(int progress) {
//进度回调,progress为第几帧
}
@Override
public void onFinish(boolean success, String msg) {
//success为true渲染成功,为false时渲染失败,msg是失败原因
}
@Override
public void onCancel() {
//渲染取消
}
});
render.start();
String path = "";//模板根目录
String json = "";//替换资源json
SXTemplate mTemplate = new SXTemplate(path, SXTemplate.TemplateUsage.kForRender);
String jsonContent = "";//模板根目录下的config.json的字符串内容
String[] paths = ;//待替换的素材路径
SXConfigUtils utils = new SXConfigUtils(jsonContent);
JSONArray replaceJsonArray = new JSONArray(); //setReplaceableJson需要传入的是一个JsonArray对象
for(int i = 0; i < paths.length; i++) {
JSONObject replaceJson = new JSONObject();
replaceJson.put("main_file", paths[i]); //将每一个待替换素材路径装入main_file字段下
JsonArray replaceArray = new JSONArray(); //创建可替换素材的JsonArray
List<SXTemplateAsset> list = utils.getRelatedAssetForFile(i);//根据待替换的素材index构建需要替换的素材对象列表
for (SXTemplateAsset sxTemplateAsset : list) {
if (sxTemplateAsset.getReplaceType() == SX_REPLACE_TYPE_TEXT || sxTemplateAsset.getReplaceType() == SX_REPLACE_TYPE_POWER_TEXT) {
JSONObject assetJson = new JSONObject(sxTemplateAsset.getAsstJson());
if (assetJson.has("ui")) {
JSONObject uiJson = new JSONObject(assetJson.getString("ui"));
if (uiJson.has("default")) {
JSONObject subtitleJson = new JSONObject(); //创建可替换字幕的Json
subtitleJson.put("type", sxTemplateAsset.getReplaceType()); //设置类型
JSONObject attrJson = new JSONObject();
attrJson.put("text", "需要修改的字幕"); //往attr json中装入需要修改的字幕字符串
subtitleJson.put("attr", attrJson);
replaceArray.put(subtitleJson); //往可替换素材JsonArray中添加字幕json
}
}
}
}
replaceJson.put("replaces", replaceArray);
replaceJsonArray.put(replaceJson);
}
sxTemplate.setReplaceableJson(jsonArray.toString());//把新构建的JsonArray对象传入模板
SXTemplateRender render = new SXTemplateRender(mTemplate, null, outputPath);
render.setRenderListener(new SXRenderListener() {
@Override
public void onStart() {
//开始渲染
}
@Override
public void onUpdate(int progress) {
//进度回调,progress为第几帧
}
@Override
public void onFinish(boolean success, String msg) {
//success为true渲染成功,为false时渲染失败,msg是失败原因
}
@Override
public void onCancel() {
//渲染取消
}
});
render.start(); //开始渲染
//如果无需替换素材,可以用渲染引擎直接渲染
String path = "";//模板根目录
String json = "";//替换资源json
SXTemplate mTemplate = new SXTemplate(path, SXTemplate.TemplateUsage.kForRender);
mTemplate.setReplaceableJson(json);
SXTemplateRender render = new SXTemplateRender(mTemplate, null, outputPath);
render.setRenderListener(new SXRenderListener() {
@Override
public void onStart() {
//开始渲染
}
@Override
public void onUpdate(int progress) {
//进度回调,progress为第几帧
}
@Override
public void onFinish(boolean success, String msg) {
//success为true渲染成功,为false时渲染失败,msg是失败原因
}
@Override
public void onCancel() {
//渲染取消
}
});
render.start();
String path = "";//模板根目录
String json = "";//替换资源json
SXTemplate mTemplate = new SXTemplate(path, SXTemplate.TemplateUsage.kForRender);
String jsonContent = "";//模板根目录下的config.json的字符串内容
String[] paths = ;//待替换的素材路径
SXConfigUtils utils = new SXConfigUtils(jsonContent);
JSONArray replaceJsonArray = new JSONArray(); //setReplaceableJson需要传入的是一个JsonArray对象
for(int i = 0; i < paths.length; i++) {
JSONObject replaceJson = new JSONObject();
replaceJson.put("main_file", paths[i]); //将每一个待替换素材路径装入main_file字段下
JsonArray replaceArray = new JSONArray(); //创建可替换素材的JsonArray
List<SXTemplateAsset> list = utils.getRelatedAssetForFile(i);//根据待替换的素材index构建需要替换的素材对象列表
for (SXTemplateAsset sxTemplateAsset : list) {
if (sxTemplateAsset.getReplaceType() == SX_REPLACE_TYPE_TEXT || sxTemplateAsset.getReplaceType() == SX_REPLACE_TYPE_POWER_TEXT) {
JSONObject assetJson = new JSONObject(sxTemplateAsset.getAsstJson());
if (assetJson.has("ui")) {
JSONObject uiJson = new JSONObject(assetJson.getString("ui"));
if (uiJson.has("default")) {
JSONObject subtitleJson = new JSONObject(); //创建可替换字幕的Json
subtitleJson.put("type", sxTemplateAsset.getReplaceType()); //设置类型
JSONObject attrJson = new JSONObject();
attrJson.put("text", "需要修改的字幕"); //往attr json中装入需要修改的字幕字符串
subtitleJson.put("attr", attrJson);
replaceArray.put(subtitleJson); //往可替换素材JsonArray中添加字幕json
}
}
}
}
replaceJson.put("replaces", replaceArray);
replaceJsonArray.put(replaceJson);
}
sxTemplate.setReplaceableJson(jsonArray.toString());//把新构建的JsonArray对象传入模板
SXTemplateRender render = new SXTemplateRender(mTemplate, null, outputPath);
render.setRenderListener(new SXRenderListener() {
@Override
public void onStart() {
//开始渲染
}
@Override
public void onUpdate(int progress) {
//进度回调,progress为第几帧
}
@Override
public void onFinish(boolean success, String msg) {
//success为true渲染成功,为false时渲染失败,msg是失败原因
}
@Override
public void onCancel() {
//渲染取消
}
});
render.start(); //开始渲染