wangyunpeng před 2 dny
rodič
revize
b949e57c54

+ 2 - 2
core/src/main/java/com/tzld/supply/job/ContentMediaSearchJob.java

@@ -144,12 +144,12 @@ public class ContentMediaSearchJob {
         for (SpiderContentMedia media : mediaList) {
             // 调用封面检测
             AlgFaceRecognizeResult result = dangerFaceRecognizeService.getResult(media.getOssKey());
-            if (Objects.equals(result.getFind_face_status(), FindFaceStatusEnum.NOT_EXIST.getStatus())) {
+            if (Objects.nonNull(result) && Objects.equals(result.getFind_face_status(), FindFaceStatusEnum.NOT_EXIST.getStatus())) {
                 // 审核通过,更新文章状态
                 media.setStatus(SpiderContentMediaStatusEnum.PASSED.getCode());
                 media.setUpdateTime(System.currentTimeMillis());
                 spiderContentMediaMapper.updateByPrimaryKeySelective(media);
-            } else if (Objects.equals(result.getFind_face_status(), FindFaceStatusEnum.EXIST.getStatus())) {
+            } else if (Objects.isNull(result) || Objects.equals(result.getFind_face_status(), FindFaceStatusEnum.EXIST.getStatus())) {
                 // 审核不通过,删除文章
                 media.setStatus(SpiderContentMediaStatusEnum.ABANDONED.getCode());
                 media.setUpdateTime(System.currentTimeMillis());

+ 21 - 6
core/src/main/java/com/tzld/supply/job/VideoGenerateJob.java

@@ -11,10 +11,7 @@ import com.tzld.supply.common.enums.SpiderContentMediaTypeEnum;
 import com.tzld.supply.common.enums.SpiderContentStatusEnum;
 import com.tzld.supply.dao.mapper.supply.spider.*;
 import com.tzld.supply.dao.mapper.supply.spider.ext.SpiderMapperExt;
-import com.tzld.supply.model.param.FFmpeg.CommandParam;
-import com.tzld.supply.model.param.FFmpeg.VideoInfoParam;
-import com.tzld.supply.model.param.FFmpeg.VideoTimeCutParam;
-import com.tzld.supply.model.param.FFmpeg.VideoUrlsParam;
+import com.tzld.supply.model.param.FFmpeg.*;
 import com.tzld.supply.model.po.supply.spider.*;
 import com.tzld.supply.util.AliOssFileTool;
 import com.tzld.supply.util.DateUtils;
@@ -231,6 +228,10 @@ public class VideoGenerateJob {
                                 .outputType("video")
                                 .build();
                         String commandResponseData = ffmpegApiService.command(commandParam);
+                        if (StringUtils.isBlank(commandResponseData)) {
+                            log.error("视频素材生成 图片转视频失败,param: {}", JSONObject.toJSONString(commandParam));
+                            return;
+                        }
                         String fileName = String.format("supply/produce/material/video/%s", outputVideoName);
                         String imageToVideoOssUrl = AliOssFileTool.downloadAndSaveInOSS(fileName, commandResponseData, "video/mp4");
 
@@ -336,6 +337,10 @@ public class VideoGenerateJob {
                                     .build();
                             lastEndTime = endTime;
                             String videoCutUrl = ffmpegApiService.timeCutVideo(timeCutParam);
+                            if (StringUtils.isBlank(videoCutUrl)) {
+                                log.error("视频素材生成 视频截取失败,timeCutParam: {}", JSONObject.toJSONString(timeCutParam));
+                                return;
+                            }
                             String fileName = String.format("supply/produce/material/video/%s_%d.mp4", produceVideo.getContentId(), System.currentTimeMillis());
                             String videoCutOssUrl = AliOssFileTool.downloadAndSaveInOSS(fileName, videoCutUrl, "video/mp4");
                             // 获取视频信息
@@ -399,6 +404,7 @@ public class VideoGenerateJob {
      * 视频生成
      * 1. 视频素材拼接长视频
      * 2. 添加音频
+     * 3. 添加水印
      *
      * @param param
      * @return
@@ -459,9 +465,18 @@ public class VideoGenerateJob {
                     .outputFile(videoName)
                     .outputType("video")
                     .build();
-            String commandResponseData = ffmpegApiService.command(commandParam);
+            String addAudioVideoUrl = ffmpegApiService.command(commandParam);
+            // 添加水印
+            String watermarkUrl = "http://rescdn.yishihui.com/temp/1763018780183_TVmO96wlvOPiFEtqWy.png";
+            VideoTextureParam textureParam = VideoTextureParam.builder()
+                    .videoUrl(addAudioVideoUrl)
+                    .imageUrl(watermarkUrl)
+                    .border(0)
+                    .build();
+            String watermarkVideoUrl = ffmpegApiService.videoTexture(textureParam);
+            // 上传到OSS
             String fileName = String.format("supply/produce/video/%s", videoName);
-            String finalVideoUrl = AliOssFileTool.downloadAndSaveInOSS(fileName, commandResponseData, "video/mp4");
+            String finalVideoUrl = AliOssFileTool.downloadAndSaveInOSS(fileName, watermarkVideoUrl, "video/mp4");
             // 更新视频地址
             if (StringUtils.isNotBlank(finalVideoUrl)) {
                 produceVideo.setUrl(finalVideoUrl);

+ 2 - 0
core/src/main/java/com/tzld/supply/model/param/FFmpeg/VideoTextureParam.java

@@ -1,10 +1,12 @@
 package com.tzld.supply.model.param.FFmpeg;
 
+import lombok.Builder;
 import lombok.Getter;
 import lombok.Setter;
 
 @Getter
 @Setter
+@Builder
 public class VideoTextureParam {
     private String videoUrl;
     private String imageUrl;