From 2ff4ad66bc5d82e305489941f986eb7c41d771d6 Mon Sep 17 00:00:00 2001 From: xhxu Date: Wed, 12 Apr 2023 19:53:10 +0800 Subject: [PATCH] //trans --- .../com/iformall/schedule/VideoSchedule.java | 66 +++++++++++++++++++ .../iformall/domain/po/sm/UserMouldVideo.java | 8 ++- .../com/iformall/domain/po/sm/VideoTrans.java | 55 ++++++++++++++++ .../iformall/enums/EnumaVideoTransStatus.java | 39 +++++++++++ .../com/iformall/mapper/VideoTransMapper.java | 17 +++++ .../resources/mapper/VideoTransMapper.xml | 57 ++++++++++++++++ .../java/com/iformall/video/VideoExcutor.java | 2 +- .../video/aliyun/AliyunVideoExcutor.java | 6 +- .../aliyun/config/AliyunVideoConfig.java | 2 +- 9 files changed, 245 insertions(+), 7 deletions(-) create mode 100644 suimangService/src/main/java/com/iformall/domain/po/sm/VideoTrans.java create mode 100644 suimangService/src/main/java/com/iformall/enums/EnumaVideoTransStatus.java create mode 100644 suimangService/src/main/java/com/iformall/mapper/VideoTransMapper.java create mode 100644 suimangService/src/main/resources/mapper/VideoTransMapper.xml diff --git a/suimangAdmin/src/main/java/com/iformall/schedule/VideoSchedule.java b/suimangAdmin/src/main/java/com/iformall/schedule/VideoSchedule.java index b15ad81..3296a19 100644 --- a/suimangAdmin/src/main/java/com/iformall/schedule/VideoSchedule.java +++ b/suimangAdmin/src/main/java/com/iformall/schedule/VideoSchedule.java @@ -1,13 +1,17 @@ package com.iformall.schedule; import com.iformall.domain.po.sm.UserMouldVideo; +import com.iformall.domain.po.sm.VideoTrans; import com.iformall.domain.po.tt.TtCoupon; import com.iformall.enums.EnumVideoStatus; +import com.iformall.enums.EnumaVideoTransStatus; import com.iformall.mapper.TtCouponMapper; +import com.iformall.mapper.VideoTransMapper; import com.iformall.service.sm.UserMouldVideoService; import com.iformall.utils.DateUtils; import com.iformall.video.VideoFactory; import com.iformall.video.aliyun.sdk.server.UploadCacheHelper; +import com.iformall.video.entity.VideTransResult; import com.iformall.video.entity.VideUploadResult; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; @@ -30,6 +34,9 @@ public class VideoSchedule { @Autowired private UserMouldVideoService userMouldVideoService; + @Autowired + private VideoTransMapper videoTransMapper; + @Autowired VideoFactory videoFactory; @@ -99,4 +106,63 @@ public class VideoSchedule { } } + + /** + * 转码 + */ + @Scheduled(cron = "0 10/30 * * * *?") // 每半小时检查一次 + public void videoTransSchedule() { + VideoTrans videoTransQ = new VideoTrans(); + videoTransQ.setStatus(EnumaVideoTransStatus.draft.getCode()); + List videos = videoTransMapper.findList(videoTransQ); + if (videos != null && videos.size() > 0) { + for (VideoTrans video : videos) { + try { + VideTransResult videTransResult = videoFactory.getExcutor(videoType).transVideo(video.getVideoId(), video.getTransTemplateId()); + if(videTransResult.isSuccess()){ + VideoTrans upd = new VideoTrans(); + upd.setId(video.getId()); + upd.setTaskId(videTransResult.getTaskId()); + upd.setStatus(EnumaVideoTransStatus.ing.getCode()); + upd.setMsg("ing"); + upd.setUpdateDate(new Date()); + videoTransMapper.updateById(upd); + } + } catch (Exception e) { + logger.error("TtCouponVideoSchedule error.couponVideoSchedule:"+video.getId(),e); + } + } + } + } + + /** + * 转码结果 + */ + @Scheduled(cron = "0 20/30 * * * *?") // 每半小时检查一次 + public void videoTransResultSchedule() { + VideoTrans videoTransQ = new VideoTrans(); + videoTransQ.setStatus(EnumaVideoTransStatus.ing.getCode()); + List videos = videoTransMapper.findList(videoTransQ); + if (videos != null && videos.size() > 0) { + for (VideoTrans video : videos) { + try { + VideTransResult transVideoResult = videoFactory.getExcutor(videoType).getTransVideoResult(video.getVideoId(), video.getTaskId()); + VideoTrans upd = new VideoTrans(); + upd.setId(video.getId()); + if (transVideoResult.isSuccess()){ + upd.setStatus(EnumaVideoTransStatus.success.getCode()); + upd.setMsg("success"); + }else{ + upd.setStatus(EnumaVideoTransStatus.fail.getCode()); + upd.setMsg(transVideoResult.getMsg()); + } + upd.setUpdateDate(new Date()); + videoTransMapper.updateById(upd); + } catch (Exception e) { + logger.error("TtCouponVideoSchedule error.couponVideoSchedule:"+video.getId(),e); + } + } + } + } + } \ No newline at end of file diff --git a/suimangService/src/main/java/com/iformall/domain/po/sm/UserMouldVideo.java b/suimangService/src/main/java/com/iformall/domain/po/sm/UserMouldVideo.java index c01f1bd..75e064e 100644 --- a/suimangService/src/main/java/com/iformall/domain/po/sm/UserMouldVideo.java +++ b/suimangService/src/main/java/com/iformall/domain/po/sm/UserMouldVideo.java @@ -54,7 +54,9 @@ public class UserMouldVideo extends TenantEntity { * "videoType":, * "title":, * "mouldSmId":, - * "material": + * "material":, + * "backgroundId:, + * "backgroundMaterial": * } */ @io.swagger.annotations.ApiModelProperty(value="人物模板",name="personMouldSm") @@ -73,8 +75,10 @@ public class UserMouldVideo extends TenantEntity { * "mouldSmId":, * "personId":, * "personType":, + * "personTypeStr":, * "speakId":, - * "speakType": + * "speakType":, + * "speakTypeStr": * } */ @io.swagger.annotations.ApiModelProperty(value="声音模板",name="voiceMouldSm") diff --git a/suimangService/src/main/java/com/iformall/domain/po/sm/VideoTrans.java b/suimangService/src/main/java/com/iformall/domain/po/sm/VideoTrans.java new file mode 100644 index 0000000..fcb491d --- /dev/null +++ b/suimangService/src/main/java/com/iformall/domain/po/sm/VideoTrans.java @@ -0,0 +1,55 @@ +package com.iformall.domain.po.sm; + +import cn.afterturn.easypoi.excel.annotation.Excel; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableName; +import com.iformall.common.SortColumn; +import com.iformall.domain.po.base.TenantEntity; +import com.iformall.enums.EnumAgeType; +import com.iformall.enums.EnumPersonType; +import com.iformall.enums.EnumSex; +import com.iformall.enums.EnumSpeakType; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.ToString; +import org.apache.commons.lang3.StringUtils; + +import java.math.BigDecimal; +import java.util.Date; +import java.util.List; + +@TableName(value = "video_trans") +@Data +@ToString(callSuper = true) +@EqualsAndHashCode(callSuper = true) +public class VideoTrans extends TenantEntity { + + protected Long id; + + @TableField(exist = false) + @io.swagger.annotations.ApiModelProperty(value="查询-起始时间",name="startDate") + private Date startDate; + + @TableField(exist = false) + @io.swagger.annotations.ApiModelProperty(value="查询-结束时间",name="endDate") + private Date endDate; + + @io.swagger.annotations.ApiModelProperty(value="videoid",name="videoId") + private String videoId; + @io.swagger.annotations.ApiModelProperty(value="转码模板",name="transTemplateId") + private String transTemplateId; + @io.swagger.annotations.ApiModelProperty(value="任务id",name="taskId") + private String taskId; + @io.swagger.annotations.ApiModelProperty(value="",name="msg") + private String msg; + @io.swagger.annotations.ApiModelProperty(value="EnumaVideoTransStatus ",name="status") + private Integer status; + + @io.swagger.annotations.ApiModelProperty(value="创建时间",name="createDate") + private Date createDate; + @io.swagger.annotations.ApiModelProperty(value="更新时间",name="updateDate") + private Date updateDate; + + +} diff --git a/suimangService/src/main/java/com/iformall/enums/EnumaVideoTransStatus.java b/suimangService/src/main/java/com/iformall/enums/EnumaVideoTransStatus.java new file mode 100644 index 0000000..4c676db --- /dev/null +++ b/suimangService/src/main/java/com/iformall/enums/EnumaVideoTransStatus.java @@ -0,0 +1,39 @@ +package com.iformall.enums; + +/** + * + */ +public enum EnumaVideoTransStatus { + + // + draft(0, "已保存"), + ing(1, "转码中"), + success(2, "转码成功"), + fail(3, "转码失败"), + ; + + public static EnumaVideoTransStatus getEnum(Integer code) { + for (EnumaVideoTransStatus value : values()) { + if (value.getCode().equals(code)) { + return value; + } + } + return null; + } + + private Integer code; + private String message; + + EnumaVideoTransStatus(Integer code, String message) { + this.code = code; + this.message = message; + } + + public Integer getCode() { + return code; + } + + public String getMessage() { + return message; + } +} diff --git a/suimangService/src/main/java/com/iformall/mapper/VideoTransMapper.java b/suimangService/src/main/java/com/iformall/mapper/VideoTransMapper.java new file mode 100644 index 0000000..d19dcf7 --- /dev/null +++ b/suimangService/src/main/java/com/iformall/mapper/VideoTransMapper.java @@ -0,0 +1,17 @@ +package com.iformall.mapper; + +import com.iformall.common.CommonMapper; +import com.iformall.domain.po.sm.VideoTrans; +import com.iformall.domain.po.sm.VoiceMould; +import org.apache.ibatis.annotations.Param; + +import java.util.List; + +public interface VideoTransMapper extends CommonMapper { + + List findList(VideoTrans record); + + int deleteById(@Param("id")Long id); + + +} diff --git a/suimangService/src/main/resources/mapper/VideoTransMapper.xml b/suimangService/src/main/resources/mapper/VideoTransMapper.xml new file mode 100644 index 0000000..b7f62c0 --- /dev/null +++ b/suimangService/src/main/resources/mapper/VideoTransMapper.xml @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + `id`, `tenant_id`, `parent_tenant_id`, `video_id`, `trans_template_id`, `task_id`, + `status`,`msg`, `create_date`, `update_date` + + + + where `is_del` = 0 + + + and `status` = #{status} + + + + and create_date >= #{startDate} + + + and create_date < #{endDate} + + + + and id in + + #{idItem} + + + + order by ${sortColumns} + + + + + + update video_trans set is_del = 1,update_date = now() where id = #{id} + + + diff --git a/suimangVideo/src/main/java/com/iformall/video/VideoExcutor.java b/suimangVideo/src/main/java/com/iformall/video/VideoExcutor.java index 6816995..e62a9fc 100644 --- a/suimangVideo/src/main/java/com/iformall/video/VideoExcutor.java +++ b/suimangVideo/src/main/java/com/iformall/video/VideoExcutor.java @@ -29,7 +29,7 @@ public interface VideoExcutor { VideUploadResult getVideoDetailFromApi(String videoId); - public VideTransResult transVideo(String videoId); + public VideTransResult transVideo(String videoId,String transTemplateId); public VideTransResult getTransVideoResult(String videoId, String taskId); } diff --git a/suimangVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java b/suimangVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java index e299e98..8d5d7a2 100644 --- a/suimangVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java +++ b/suimangVideo/src/main/java/com/iformall/video/aliyun/AliyunVideoExcutor.java @@ -197,14 +197,14 @@ public class AliyunVideoExcutor implements VideoExcutor { } @Override - public VideTransResult transVideo(String videoId) { + public VideTransResult transVideo(String videoId,String transTemplateId) { VideTransResult result = new VideTransResult(); //解码 - if ((!StringUtils.isBlank(videoId)) && (!StringUtils.isBlank(config.getTransTemplateId()))) { + if ((!StringUtils.isBlank(videoId)) && (!StringUtils.isBlank(transTemplateId))) { result.setVideoId(videoId); SubmitTranscodeJobsResponse transResponse = new SubmitTranscodeJobsResponse(); try { - transResponse = AliyunVedioServer.submitTranscodeJobs(config, videoId, config.getTransTemplateId()); + transResponse = AliyunVedioServer.submitTranscodeJobs(config, videoId, transTemplateId); //任务ID //System.out.println("JobId = " + transResponse.getTranscodeJobs().get(0).getJobId()); result.setTaskId(transResponse.getTranscodeTaskId()); diff --git a/suimangVideo/src/main/java/com/iformall/video/aliyun/config/AliyunVideoConfig.java b/suimangVideo/src/main/java/com/iformall/video/aliyun/config/AliyunVideoConfig.java index 3121c32..cf6945e 100644 --- a/suimangVideo/src/main/java/com/iformall/video/aliyun/config/AliyunVideoConfig.java +++ b/suimangVideo/src/main/java/com/iformall/video/aliyun/config/AliyunVideoConfig.java @@ -13,6 +13,6 @@ public class AliyunVideoConfig { private String accessKeySecret; private String regionId;//cn-shanghai 点播服务接入区域 private String endPoint;//以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com - private String transTemplateId;//转码的模板编号 +// private String transTemplateId;//转码的模板编号 private String autoTrans; }