package com.iformall.sm; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONArray; import com.alibaba.fastjson.JSONObject; import com.aliyun.openservices.shade.org.apache.commons.lang3.StringUtils; import lombok.Data; import java.util.List; import java.util.Map; /** * https://note.youdao.com/s/7OZ5UfES * @author Administrator * */ @Data public class AiVideoParam { /** * | 参数 | 必选 | 类型 | 说明 | * | ----------------- | ---- | ------- | ------------------------------------------------------------ | * | gen_txt | 是 | string | 需要生成的文字内容 | * | video_template_id | 是 | string | 使用的视频模板ID | * | voice_id | 是 | string | 音色ID,如:"zh-CN-YunxiNeural"。如果使用“default”,表示不指定具体的,由后端服务自动匹配 | * | voice_style | 是 | string | TTS语音风格,如:”angry“。如果使用“default”,表示默认风格 | * | video_files | 否 | array[] | 字典类型,包含背景、数字人、素材信息。缺省,使用默认模板。 | * | + back_ground | 否 | array[] | 字典类型,背景信息 | * | ++ image | 是 | string | 背景图片,base64编辑后的字符串类型数据 | * | ++ type | 是 | string | 背景图片类型,共两种。horizontal 表示横版,vertical 表示竖版 | * | + digital_human | 否 | array[] | 字典类型,数字人信息 | * | ++ coord | 是 | array[] | 集合类型,表示相对于左上角的位置,如[100, 200],表示相对于左边缘100像素,相对于上边缘200相素 | * | ++ level | 是 | uint32 | 数字人图片的层级,值越大表示越高层,0表示最底层 | * | ++ ratio | 是 | float32 | 相对于原数字人图片大小的缩放比例,如0.5表示宽高均变为原来的一半 | * | + material | 否 | array[] | 字典类型,素材信息。具体的值是集合类型,内部由每个素材信息(素材信息是字典类型)组成,如"material":[{素材1的信息},{素材2的信息},{素材3的信息}] | * | ++ | 否 | array[] | 集合类型,每个素材信息(素材信息是字典类型)组成 | * | +++ coord | 是 | array[] | 集合类型,表示相对于左上角的位置,如[100, 200],表示相对于左边缘100像素,相对于上边缘200相素 | * | +++ image | 是 | string | 素材图片,base64编辑后的字符串类型数据 | * | +++ level | 是 | uint32 | 素材图片的层级,值越大表示越高层,0表示最底层 | * | +++ ratio | 是 | float32 | 相对于原素材图片大小的缩放比例,如0.5表示宽高均变为原来的一半 | */ private Long task_id; private String callback_url; private String gen_txt; private String video_template_id; private String voice_id; private String voice_style; private String url = "None";//预留音频url private VideoFiles video_files; private String token; private String tenancy_logo; private Integer user_level; private Map subtitle; public String toSimpelJson() { String json = JSON.toJSONString(this); JSONObject obj = JSON.parseObject(json); JSONObject vf = obj.getJSONObject("video_files"); if (null != vf ) { JSONObject bg = vf.getJSONObject("back_ground"); if ( null != bg) { bg.remove("image"); } JSONObject dh = vf.getJSONObject("digital_human"); if ( null != dh) { dh.remove("image"); } JSONArray ms = vf.getJSONArray("material"); if (null != ms && ms.size() > 0 ) { for (int i = 0 ; i < ms.size(); i++) { JSONObject jo = ms.getJSONObject(i); jo.remove("image"); } } } return JSON.toJSONString(obj); } @Data public static class VideoFiles { private BackGround back_ground; private Material digital_human; private List material; } @Data public static class BackGround { private String image; private String type; } @Data public static class Material { private int[] coord; private String image; private int level; private float ratio; } }