后台服务
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

240 lines
8.5 KiB

  1. package com.iformall.sm;
  2. import com.alibaba.fastjson.JSON;
  3. import com.alibaba.fastjson.JSONArray;
  4. import com.alibaba.fastjson.JSONObject;
  5. import com.iformall.common.ErrorCode;
  6. import com.iformall.douyin.pay.orderQuery.OrderQueryResult;
  7. import com.iformall.douyin.pay.orderQuery.QueryMerchantResult;
  8. import com.iformall.douyin.pay.orderQuery.QueryRefundResult;
  9. import com.iformall.douyin.pay.orderQuery.QuerySettleResult;
  10. import com.iformall.douyin.pay.preOrder.*;
  11. import com.iformall.enums.EnumMouldPatchType;
  12. import com.iformall.enums.EnumPayStatus;
  13. import com.iformall.enums.EnumVideoType;
  14. import com.iformall.exception.MallinkException;
  15. import com.iformall.utils.Base64Util;
  16. import com.iformall.utils.HttpUtil;
  17. import com.iformall.utils.sign.SignUtils;
  18. import lombok.extern.slf4j.Slf4j;
  19. import org.apache.commons.lang3.StringUtils;
  20. import java.nio.charset.StandardCharsets;
  21. import java.security.MessageDigest;
  22. import java.security.NoSuchAlgorithmException;
  23. import java.util.*;
  24. @Slf4j
  25. public class AiVideoHelper {
  26. // public static String uri = "http://222.128.9.132:22266";
  27. // http://nas.pucao.cn:2001/gen_dh_video
  28. public static String uri = "http://nas.pucao.cn:2001";
  29. public static String url = "http://nas.pucao.cn:2002";
  30. public static String photo_speak_suffix = "/img_talking";
  31. public static String image_quality_suffix = "/image_qualit";
  32. public static String voice_preview = "/tts_wav";
  33. public static String doPost(String url, String params) {
  34. return HttpUtil.doAiVideoPost(url,params);
  35. }
  36. public static AiVideoResult createVideo(AiVideoParam videoParam) {
  37. log.info("生成视频start request:" + videoParam.neglectImgString());
  38. String response = doPost(uri+"/gen_dh_video", JSONObject.toJSONString(videoParam));
  39. log.info("生成视频end response:"+response);
  40. AiVideoResult result = new AiVideoResult();
  41. if(StringUtils.isBlank(response)){
  42. result.setSuccess(false);
  43. result.setMsg("请求生成视频异常,请稍后重试");
  44. return result;
  45. }
  46. JSONObject jsonObject = JSON.parseObject(response);
  47. JSONObject status = jsonObject.getJSONObject("status");
  48. Integer code = status.getInteger("code");
  49. if(code == null){
  50. result.setSuccess(false);
  51. result.setMsg("请求生成视频异常,请稍后重试");
  52. return result;
  53. }
  54. if(code.intValue() == 1000){
  55. JSONObject data = jsonObject.getJSONObject("data");
  56. JSONObject video = data.getJSONObject("video");
  57. result.setSuccess(true);
  58. result.setMsg("success");
  59. result.setDuration(video.getFloatValue("duration"));
  60. result.setUrl(video.getString("url"));
  61. }else{
  62. result.setSuccess(false);
  63. result.setMsg(status.getString("msg"));
  64. }
  65. return result;
  66. // Integer code = jsonObject.getInteger("err_no");
  67. // if (null != code && code.intValue() == 0 ) {
  68. // CreatePreOrderResult result = new CreatePreOrderResult();
  69. // result.setSuccess(true);
  70. // result.setOutOrderNo(preOrder.getOutOrderNo());
  71. // JSONObject data = jsonObject.getJSONObject("data");
  72. // if (null != data ) {
  73. // result.setOrderId(data.getString("order_id"));
  74. // result.setToken(data.getString("order_token"));
  75. // }else {
  76. // log.error("createPreOrder reponse empity. request: "+JSON.toJSONString(preOrder.toRequestMap())+" response:"+response);
  77. // result.setSuccess(false);
  78. // result.setMsg("createPreOrder reponse empity."+response);
  79. // }
  80. // return result;
  81. // }else {
  82. // log.error("createPreOrder reponse error. request: "+JSON.toJSONString(preOrder.toRequestMap())+" response:"+response);
  83. // CreatePreOrderResult result = new CreatePreOrderResult();
  84. // result.setSuccess(false);
  85. // result.setMsg("createPreOrder reponse error."+response);
  86. // return result;
  87. // }
  88. }
  89. public static AiPhotoSpeakResult createPhotoSpeakVideo(AiPhotoSpeakParam videoParam) {
  90. String response = doPost(url + photo_speak_suffix, JSONObject.toJSONString(videoParam));
  91. log.info("生成视频end response:" + response);
  92. AiPhotoSpeakResult result = new AiPhotoSpeakResult();
  93. if (StringUtils.isBlank(response)) {
  94. result.setSuccess(false);
  95. result.setMsg("请求生成视频异常,请稍后重试");
  96. return result;
  97. }
  98. JSONObject jsonObject = JSON.parseObject(response);
  99. JSONObject status = jsonObject.getJSONObject("status");
  100. Integer code = status.getInteger("code");
  101. String msg = status.getString("msg");
  102. if (code == null) {
  103. result.setSuccess(false);
  104. result.setMsg("请求生成视频异常,请稍后重试");
  105. return result;
  106. }
  107. if (code.intValue() == 4000) {
  108. JSONObject data = jsonObject.getJSONObject("data");
  109. String videoUrl = data.getString("url");
  110. result.setSuccess(true);
  111. result.setMsg(msg);
  112. result.setUrl(videoUrl);
  113. } else {
  114. result.setSuccess(false);
  115. result.setMsg(msg);
  116. }
  117. return result;
  118. }
  119. public static AiCheckPhotoResult checkPhoto(AiCheckPhotoParam param) {
  120. String response = doPost(url + image_quality_suffix, JSONObject.toJSONString(param));
  121. log.info("图片质量审核 end response:" + response);
  122. AiCheckPhotoResult result = new AiCheckPhotoResult();
  123. if (StringUtils.isBlank(response)) {
  124. result.setSuccess(false);
  125. result.setMsg("图片质量审核失败,请稍后重试");
  126. return result;
  127. }
  128. JSONObject jsonObject = JSON.parseObject(response);
  129. JSONObject status = jsonObject.getJSONObject("status");
  130. Integer code = status.getInteger("code");
  131. String msg = status.getString("msg");
  132. if (code == null) {
  133. result.setSuccess(false);
  134. result.setMsg("请求生成视频异常,请稍后重试");
  135. return result;
  136. }
  137. if (code.intValue() == 2000) {
  138. result.setCode(code);
  139. result.setSuccess(true);
  140. result.setMsg(msg);
  141. } else {
  142. result.setCode(code);
  143. result.setSuccess(false);
  144. result.setMsg(msg);
  145. }
  146. return result;
  147. }
  148. public static AiPreviewResult voicePreview(AiPreviewParam param) {
  149. String response = doPost(url + voice_preview, JSONObject.toJSONString(param));
  150. log.info("TTS音色预览 end response:" + response);
  151. AiPreviewResult result = new AiPreviewResult();
  152. if (StringUtils.isBlank(response)) {
  153. result.setSuccess(false);
  154. result.setMsg("TTS音色预览失败,请稍后重试");
  155. return result;
  156. }
  157. JSONObject jsonObject = JSON.parseObject(response);
  158. JSONObject status = jsonObject.getJSONObject("status");
  159. JSONObject data = jsonObject.getJSONObject("data");
  160. Integer code = status.getInteger("code");
  161. String msg = status.getString("msg");
  162. if (code == null) {
  163. result.setSuccess(false);
  164. result.setMsg("TTS音色预览异常,请稍后重试");
  165. return result;
  166. }
  167. if (code.intValue() == 3000) {
  168. result.setCode(200);
  169. result.setSuccess(true);
  170. result.setUrl(url + data.getString("url"));
  171. result.setMsg(msg);
  172. } else {
  173. result.setCode(code);
  174. result.setSuccess(false);
  175. result.setMsg(msg);
  176. }
  177. return result;
  178. }
  179. public static void main(String[] args) {
  180. // AiVideoParam videoParam = new AiVideoParam();
  181. // videoParam.setGen_txt("我写了一篇小说,你帮我看看。");
  182. // videoParam.setVideo_template_id("16776650495633934_PgNAW8Sm");
  183. // videoParam.setVoice_id("zh-CN-XiaohanNeural");
  184. // videoParam.setVoice_style("default");
  185. // AiVideoParam.VideoFiles videoFiles = new AiVideoParam.VideoFiles();
  186. // AiVideoParam.BackGround backGround = new AiVideoParam.BackGround();
  187. // backGround.setType("vertical");
  188. // backGround.setImage(Base64Util.imageUrlToBase64("https://suimang.oss-accelerate.aliyuncs.com/builtin/background/grace/1080.jpg"));
  189. // videoFiles.setBack_ground(backGround);
  190. // AiVideoParam.Material digitalHuman = new AiVideoParam.Material();
  191. // int[] digitalHumanCoord = new int[]{0,0};
  192. // digitalHuman.setCoord(digitalHumanCoord);
  193. // digitalHuman.setLevel(0);
  194. // digitalHuman.setRatio(1.0f);
  195. // videoFiles.setDigital_human(digitalHuman);
  196. // videoParam.setVideo_files(videoFiles);
  197. //
  198. // AiVideoResult video = AiVideoHelper.createVideo(videoParam);
  199. //
  200. // AiPhotoSpeakParam param = new AiPhotoSpeakParam();
  201. // param.setGen_txt("人多泰达股份冲冠怒发代发");
  202. // param.setImg(Base64Util.imageUrlToBase64("https://suimang.oss-accelerate.aliyuncs.com/builtin/digitalperson/16760216806604820_cSHoijDX_matting.png"));
  203. // param.setGender("male");
  204. // param.setVoice_id("zh-CN-YunxiNeural");
  205. // param.setVoice_style("sad");
  206. // param.setUrl("None");
  207. // AiPhotoSpeakResult video = AiVideoHelper.createPhotoSpeakVideo(param);
  208. AiCheckPhotoParam param = new AiCheckPhotoParam();
  209. String img = Base64Util.imageUrlToBase64("https://suimang.oss-accelerate.aliyuncs.com/builtin/personmould/16760216806604820_cSHoijDX_grace_1080.jpg");
  210. param.setImg(img);
  211. AiVideoHelper.checkPhoto(param);
  212. }
  213. }