扫一扫咨询方案
首页
登录/注册

{user.username}

ID: {user.id}

模板 SDK 文档

  • 云渲染

    • Demo下载
    • SDK
    • 开发指南
    • AI API 文档
    • 开发者 API 文档
    • 控制台指南
    • 快速入门
    • 产品简介
  • 模板SDK

    • 用户常见问题
    • Demo 下载
    • 开发指南
    • 服务端 SDK
    • iOS SDK
    • 安卓端 SDK
    • 产品简介
  • 剪辑SDK

    • Demo下载
    • SDK
    • 开发指南
    • 产品简介
  • 模板制作教程

    • 模板制作进阶教程
    • 测试模板素材案例下载
    • 常见模板制作案例
    • 模板制作教程
    • 模板制作工具下载
    • 入门指南
  • 剪辑制作教程

    • 剪辑特效导出教程
    • 剪辑特效测试素材
    • 剪辑特效制作工具下载
    • 入门指南
产品简介
安卓端 SDK
iOS SDK
服务端 SDK
开发指南
Demo 下载
用户常见问题
首页 > 安卓端 SDK > 动态模板接入 > 字幕替换

字幕替换

更新时间 : 2021-08-02 10:16:14

字幕替换


字幕替换流程

  1. 调用SXConfigUtils类的构造函数,并传入模板根目录下的config.json的字符串内容作为参数构建一个SXConfigUtils实例对象。
  2. 根据要传入的主素材数量遍历调用SXConfigUtils实例的getRelatedAssetForFile,获得List<SXTemplateAsset>, 遍历List调用SXTemplateAsset实例的getReplaceType方法获得素材类型,如果素材类型为SX_REPLACE_TYPE_TEXTSX_REPLACE_TYPE_POWER_TEXT, 即为带字幕的素材,调用SXTemplateAsset实例的getAsstJson方法即可得到默认素材字幕的json字符串,在json字符串中找到ui字段对应值,如在ui下面找到default字段的值即为该字幕默认的值,代表该字幕可以被替换。
  3. 重新构建json字符串,详见代码示例。
  4. 调用SXTemplate实例的setReplaceableJson方法,并传入上一步构建的json字符串作为参数替换素材中的字幕。

    代码示例

    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对象传入模板
首页 > 安卓端 SDK > 动态模板接入 > 字幕替换
字幕替换
更新时间 : 2021-08-02 10:16:14
  • 云渲染
    • Demo下载
    • SDK
    • 开发指南
    • AI API 文档
    • 开发者 API 文档
    • 控制台指南
    • 快速入门
    • 产品简介
  • 模板SDK
    • 用户常见问题
    • Demo 下载
    • 开发指南
    • 服务端 SDK
    • iOS SDK
    • 安卓端 SDK
    • 产品简介
  • 剪辑SDK
    • Demo下载
    • SDK
    • 开发指南
    • 产品简介
  • 模板制作教程
    • 模板制作进阶教程
    • 测试模板素材案例下载
    • 常见模板制作案例
    • 模板制作教程
    • 模板制作工具下载
    • 入门指南
  • 剪辑制作教程
    • 剪辑特效导出教程
    • 剪辑特效测试素材
    • 剪辑特效制作工具下载
    • 入门指南

字幕替换


字幕替换流程

  1. 调用SXConfigUtils类的构造函数,并传入模板根目录下的config.json的字符串内容作为参数构建一个SXConfigUtils实例对象。
  2. 根据要传入的主素材数量遍历调用SXConfigUtils实例的getRelatedAssetForFile,获得List<SXTemplateAsset>, 遍历List调用SXTemplateAsset实例的getReplaceType方法获得素材类型,如果素材类型为SX_REPLACE_TYPE_TEXTSX_REPLACE_TYPE_POWER_TEXT, 即为带字幕的素材,调用SXTemplateAsset实例的getAsstJson方法即可得到默认素材字幕的json字符串,在json字符串中找到ui字段对应值,如在ui下面找到default字段的值即为该字幕默认的值,代表该字幕可以被替换。
  3. 重新构建json字符串,详见代码示例。
  4. 调用SXTemplate实例的setReplaceableJson方法,并传入上一步构建的json字符串作为参数替换素材中的字幕。

    代码示例

    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对象传入模板