| @@ -5,6 +5,7 @@ import com.iformall.controller.BaseController; | |||||
| import com.iformall.dto.GenerateVideoDTO; | import com.iformall.dto.GenerateVideoDTO; | ||||
| import com.iformall.dto.PreviewVideoDTO; | import com.iformall.dto.PreviewVideoDTO; | ||||
| import com.iformall.service.AiVideoService; | import com.iformall.service.AiVideoService; | ||||
| import com.iformall.sm.AiVideoParam; | |||||
| import io.swagger.annotations.Api; | import io.swagger.annotations.Api; | ||||
| import io.swagger.annotations.ApiOperation; | import io.swagger.annotations.ApiOperation; | ||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| @@ -30,6 +31,6 @@ public class AiVideoController extends BaseController { | |||||
| @ApiOperation("生成视频") | @ApiOperation("生成视频") | ||||
| @PostMapping("generateVideo") | @PostMapping("generateVideo") | ||||
| public ResultData generateVideo(@RequestBody GenerateVideoDTO dto) { | public ResultData generateVideo(@RequestBody GenerateVideoDTO dto) { | ||||
| return new ResultData(aiVideoService.generateVideo(dto.getAiVideoParam(), dto.getId(), getServiceId())); | |||||
| return new ResultData(aiVideoService.generateVideo(dto, getServiceId())); | |||||
| } | } | ||||
| } | } | ||||
| @@ -1,5 +1,6 @@ | |||||
| package com.iformall.dto; | package com.iformall.dto; | ||||
| import com.iformall.enums.sm.EnumThirdPartyType; | |||||
| import com.iformall.sm.AiVideoParam; | import com.iformall.sm.AiVideoParam; | ||||
| import io.swagger.annotations.ApiModel; | import io.swagger.annotations.ApiModel; | ||||
| import io.swagger.annotations.ApiModelProperty; | import io.swagger.annotations.ApiModelProperty; | ||||
| @@ -38,15 +39,17 @@ public class GenerateVideoDTO { | |||||
| * } | * } | ||||
| * } | * } | ||||
| */ | */ | ||||
| @ApiModelProperty(value = "视频唯一标识") | |||||
| private Long id; | |||||
| // @ApiModelProperty(value = "视频唯一标识") | |||||
| // private Long id; | |||||
| @ApiModelProperty(value = "接入方式") | |||||
| private Integer type = EnumThirdPartyType.API_JOIN.getCode(); | |||||
| @ApiModelProperty(value = "生成视频参数") | @ApiModelProperty(value = "生成视频参数") | ||||
| private AiVideoParam aiVideoParam; | private AiVideoParam aiVideoParam; | ||||
| public static GenerateVideoDTO build(AiVideoParam aiVideoParam, Long id) { | |||||
| public static GenerateVideoDTO build(AiVideoParam aiVideoParam, Integer type) { | |||||
| GenerateVideoDTO dto = new GenerateVideoDTO(); | GenerateVideoDTO dto = new GenerateVideoDTO(); | ||||
| dto.setId(id); | |||||
| dto.setType(type); | |||||
| dto.setAiVideoParam(aiVideoParam); | dto.setAiVideoParam(aiVideoParam); | ||||
| return dto; | return dto; | ||||
| } | } | ||||
| @@ -23,5 +23,5 @@ public interface AiVideoService { | |||||
| * @param aiVideoParam | * @param aiVideoParam | ||||
| * @return {@link AiVideoResult} | * @return {@link AiVideoResult} | ||||
| */ | */ | ||||
| AiVideoResult generateVideo(AiVideoParam aiVideoParam, Long taskId, Long serviceId); | |||||
| AiVideoResult generateVideo(GenerateVideoDTO dto, Long serviceId); | |||||
| } | } | ||||
| @@ -1,9 +1,13 @@ | |||||
| package com.iformall.service.impl; | package com.iformall.service.impl; | ||||
| import com.iformall.common.CommonConstants; | |||||
| import com.iformall.domain.dto.sm.SaveServiceVideoRecordDTO; | import com.iformall.domain.dto.sm.SaveServiceVideoRecordDTO; | ||||
| import com.iformall.dto.GenerateVideoDTO; | |||||
| import com.iformall.enums.sm.EnumThirdPartyType; | |||||
| import com.iformall.service.AiVideoService; | import com.iformall.service.AiVideoService; | ||||
| import com.iformall.service.sm.ServiceVideoRecordService; | import com.iformall.service.sm.ServiceVideoRecordService; | ||||
| import com.iformall.sm.*; | import com.iformall.sm.*; | ||||
| import com.iformall.utils.Base64Util; | |||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||
| @@ -25,15 +29,25 @@ public class AiVideoServiceImpl implements AiVideoService { | |||||
| } | } | ||||
| @Override | @Override | ||||
| public AiVideoResult generateVideo(AiVideoParam aiVideoParam, Long taskId, Long serviceId) { | |||||
| AiVideoResult video = AiVideoHelper.createVideo(aiVideoParam, taskId); | |||||
| public AiVideoResult generateVideo(GenerateVideoDTO dto, Long serviceId) { | |||||
| AiVideoParam aiVideoParam = dto.getAiVideoParam(); | |||||
| // 如果是api接入,则将图片地址转为base64 | |||||
| if (EnumThirdPartyType.API_JOIN.getCode().equals(dto.getType())) { | |||||
| AiVideoParam.VideoFiles videoFiles = aiVideoParam.getVideo_files(); | |||||
| videoFiles.getBack_ground().setImage(Base64Util.imageUrlToBase64(videoFiles.getBack_ground().getImage())); | |||||
| for (AiVideoParam.Material material : videoFiles.getMaterial()) { | |||||
| material.setImage(Base64Util.imageUrlToBase64(material.getImage())); | |||||
| } | |||||
| } | |||||
| AiVideoResult video = AiVideoHelper.createVideo(aiVideoParam); | |||||
| if (video.isSuccess()) { | if (video.isSuccess()) { | ||||
| // 记录时长 | // 记录时长 | ||||
| SaveServiceVideoRecordDTO dto = SaveServiceVideoRecordDTO.builder() | |||||
| SaveServiceVideoRecordDTO saveServiceVideoRecordDTO = SaveServiceVideoRecordDTO.builder() | |||||
| .serviceId(serviceId) | .serviceId(serviceId) | ||||
| .videoTime(String.valueOf(video.getDuration())) | .videoTime(String.valueOf(video.getDuration())) | ||||
| .build(); | .build(); | ||||
| serviceVideoRecordService.saveServiceVideoRecord(dto); | |||||
| serviceVideoRecordService.saveServiceVideoRecord(saveServiceVideoRecordDTO); | |||||
| } | } | ||||
| return video; | return video; | ||||
| } | } | ||||
| @@ -150,8 +150,8 @@ public class ShiroConfig { | |||||
| //配置退出 过滤器,其中的具体的退出代码Shiro已经替我们实现了 | //配置退出 过滤器,其中的具体的退出代码Shiro已经替我们实现了 | ||||
| filterChainDefinitionMap.put("/logout", "authc"); | filterChainDefinitionMap.put("/logout", "authc"); | ||||
| // filterChainDefinitionMap.put("/**", "corsFilter,token,authc"); | |||||
| filterChainDefinitionMap.put("/**", "anon"); | |||||
| filterChainDefinitionMap.put("/**", "corsFilter,token,authc"); | |||||
| // filterChainDefinitionMap.put("/**", "anon"); | |||||
| shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); | shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap); | ||||
| @@ -349,6 +349,7 @@ public class UserMouldVideoServiceImpl implements UserMouldVideoService { | |||||
| try{ | try{ | ||||
| AiVideoParam videoParam = new AiVideoParam(); | AiVideoParam videoParam = new AiVideoParam(); | ||||
| videoParam.setTask_id(mouldVideo.getId()); | |||||
| videoParam.setGen_txt(paperwork.replaceAll(Constant.text_pause, "[*]")); | videoParam.setGen_txt(paperwork.replaceAll(Constant.text_pause, "[*]")); | ||||
| videoParam.setVideo_template_id(personMouldSmId); | videoParam.setVideo_template_id(personMouldSmId); | ||||
| videoParam.setSubtitle(subtitleMap); | videoParam.setSubtitle(subtitleMap); | ||||
| @@ -391,7 +392,7 @@ public class UserMouldVideoServiceImpl implements UserMouldVideoService { | |||||
| } | } | ||||
| videoParam.setVideo_files(videoFiles); | videoParam.setVideo_files(videoFiles); | ||||
| AiVideoResult video = AiVideoHelper.createVideo(videoParam,mouldVideo.getId()); | |||||
| AiVideoResult video = AiVideoHelper.createVideo(videoParam); | |||||
| if(video.isSuccess()){ | if(video.isSuccess()){ | ||||
| videoUpd.setVideoPath(video.getUrl()); | videoUpd.setVideoPath(video.getUrl()); | ||||
| // videoUpd.setVideoTime(video.getDuration()+""); | // videoUpd.setVideoTime(video.getDuration()+""); | ||||
| @@ -61,13 +61,16 @@ public class AiVideoHelper { | |||||
| } | } | ||||
| public static AiVideoResult createVideo(AiVideoParam videoParam,Long taskId) { | |||||
| public static AiVideoResult createVideo(AiVideoParam videoParam) { | |||||
| videoParam.setTask_id(taskId); | |||||
| videoParam.setCallback_url(callbackUrl + "/callback/oral/broadcasting"); | |||||
| // videoParam.setTask_id(taskId); | |||||
| if (StringUtils.isNotBlank(videoParam.getCallback_url())) { | |||||
| videoParam.setCallback_url(videoParam.getCallback_url()); | |||||
| } else { | |||||
| videoParam.setCallback_url(callbackUrl + "/callback/oral/broadcasting"); | |||||
| } | |||||
| log.info("生成视频start request:" + videoParam.neglectImgString()); | log.info("生成视频start request:" + videoParam.neglectImgString()); | ||||
| log.info("完整参数:{}", JSONObject.toJSONString(videoParam)); | |||||
| String response = doPost(oral_broadcasting+"/gen_dh_video", JSONObject.toJSONString(videoParam)); | String response = doPost(oral_broadcasting+"/gen_dh_video", JSONObject.toJSONString(videoParam)); | ||||
| log.info("生成视频end response:"+response); | log.info("生成视频end response:"+response); | ||||