wangyunpeng 2 週間 前
コミット
2a1c3896fe

+ 4 - 5
.gitignore

@@ -4,10 +4,7 @@ target/
 !**/src/test/**/target/
 
 ### IntelliJ IDEA ###
-.idea/modules.xml
-.idea/jarRepositories.xml
-.idea/compiler.xml
-.idea/libraries/
+.idea
 *.iws
 *.iml
 *.ipr
@@ -35,4 +32,6 @@ build/
 .vscode/
 
 ### Mac OS ###
-.DS_Store
+.DS_Store
+
+*.log

+ 5 - 5
core/src/main/java/com/tzld/supply/api/AigcFFmpegApiService.java

@@ -22,11 +22,11 @@ import java.util.List;
 @Component
 public class AigcFFmpegApiService {
 
-    @Value("${ffmpeg.base.url:http://ffmpeg.aiddit.com/aigc}")
+    @Value("${ffmpeg.base.url:http://ffmpegapi.piaoquantv.com/aigc}")
     private String FFMPEG_BASE_URL;
 
     private final CloseableHttpClient client = HttpClientFactory.create(
-            60000, 60000, 200, 200, 0, 60000);
+            20000, 900000, 200, 200, 0, 900000);
 
     /**
      * 融合背景视频
@@ -190,7 +190,7 @@ public class AigcFFmpegApiService {
             CloseableHttpResponse response = client.execute(httpPost);
             int statusCode = response.getStatusLine().getStatusCode();
             if (statusCode != 200) {
-                log.error("调用FFmpeg接口失败,URL:{},状态码:{}", url, statusCode);
+                log.error("调用FFmpeg接口失败,URL:{} param:{},状态码:{}", url, JSONObject.toJSONString(param), statusCode);
                 return null;
             }
             // 解析响应
@@ -200,12 +200,12 @@ public class AigcFFmpegApiService {
                     new TypeReference<CommonResponse<T>>() {}
             );
             if (commonResponse == null || commonResponse.getCode() != 0) {
-                log.error("调用FFmpeg接口返回异常,URL:{},响应:{}", url, responseBody);
+                log.error("调用FFmpeg接口返回异常,URL:{} param:{},响应:{}", url, JSONObject.toJSONString(param), responseBody);
                 return null;
             }
             return commonResponse.getData();
         } catch (Exception e) {
-            log.error("调用FFmpeg接口异常,URL:{}", url, e);
+            log.error("调用FFmpeg接口异常,URL:{} param:{}", url, JSONObject.toJSONString(param),e);
             return null;
         }
     }

+ 5 - 2
core/src/main/java/com/tzld/supply/api/DangerFaceRecognizeService.java

@@ -12,6 +12,7 @@ import org.apache.http.client.methods.HttpPost;
 import org.apache.http.entity.StringEntity;
 import org.apache.http.impl.client.CloseableHttpClient;
 import org.apache.http.util.EntityUtils;
+import org.springframework.beans.factory.annotation.Value;
 import org.springframework.stereotype.Service;
 
 import java.io.IOException;
@@ -24,7 +25,9 @@ public class DangerFaceRecognizeService {
 
     private final CloseableHttpClient client =
             HttpClientFactory.create(60000, 60000, 200, 200, 0, 60000);
-    private static final String url = "http://172.16.232.206:5000/recognize/url";
+
+    @Value("${danger.face.recognize.host:http://172.16.232.206:5000}")
+    private String host;
 
     public AlgFaceRecognizeResult getResult(String imageUrl) {
         int retryTimes = 3;
@@ -42,7 +45,7 @@ public class DangerFaceRecognizeService {
         JSONObject params = new JSONObject();
         params.put("url", imageUrl);
         try {
-            HttpPost httpPost = new HttpPost(url);
+            HttpPost httpPost = new HttpPost(host + "/recognize/url");
             StringEntity stringEntity = new StringEntity(params.toJSONString(), StandardCharsets.UTF_8);
             httpPost.setHeader("Content-Type", "application/json;charset=UTF-8");
             httpPost.setEntity(stringEntity);

+ 2 - 0
core/src/main/java/com/tzld/supply/dao/mapper/supply/spider/ext/SpiderMapperExt.java

@@ -21,5 +21,7 @@ public interface SpiderMapperExt {
 
     List<SpiderContentMedia> getMediaSearchSpiderContentMedia(Integer status, Long startTime, Long endTime, Integer mediaStatus, String mediaType);
 
+     List<SpiderContentMedia> getVideoMaterialGenerateMedia(String produceVideoId, String mediaType);
+
     List<SpiderContent> getVideoGenerateContent(Integer status, Long startTime, Long endTime);
 }

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

@@ -6,6 +6,7 @@ import com.tzld.supply.api.SpiderApiService;
 import com.tzld.supply.common.enums.FindFaceStatusEnum;
 import com.tzld.supply.common.enums.SpiderContentMediaStatusEnum;
 import com.tzld.supply.common.enums.SpiderContentStatusEnum;
+import com.tzld.supply.dao.mapper.supply.spider.SpiderContentMapper;
 import com.tzld.supply.dao.mapper.supply.spider.SpiderContentMediaMapper;
 import com.tzld.supply.dao.mapper.supply.spider.ext.SpiderMapperExt;
 import com.tzld.supply.model.entity.AlgFaceRecognizeResult;
@@ -36,6 +37,8 @@ public class ContentMediaSearchJob {
     @Autowired
     private DangerFaceRecognizeService dangerFaceRecognizeService;
     @Autowired
+    private SpiderContentMapper spiderContentMapper;
+    @Autowired
     private SpiderContentMediaMapper spiderContentMediaMapper;
     @Autowired
     private SpiderMapperExt spiderMapperExt;
@@ -48,8 +51,13 @@ public class ContentMediaSearchJob {
             startTime = DateUtils.getStartOfDay(param, "yyyyMMdd");
         }
         Long endTime = startTime + 86400 * 1000;
-        List<SpiderContent> contentList = spiderMapperExt.getMediaSearchSpiderContent(SpiderContentStatusEnum.PASSED.getCode(),
-                startTime, endTime, "image");
+        List<SpiderContent> contentList = new ArrayList<>();
+        if (StringUtils.isNotBlank(param)) {
+            contentList.add(spiderContentMapper.selectByPrimaryKey(Long.parseLong(param)));
+        } else {
+            contentList = spiderMapperExt.getMediaSearchSpiderContent(SpiderContentStatusEnum.PASSED.getCode(),
+                    startTime, endTime, "image");
+        }
         if (CollectionUtil.isEmpty(contentList)) {
             return ReturnT.SUCCESS;
         }
@@ -77,8 +85,9 @@ public class ContentMediaSearchJob {
                 SpiderContentMedia media = new SpiderContentMedia();
                 media.setContentId(content.getId());
                 media.setMediaType("image");
+                media.setSourceSite("百度图片");
                 media.setUrl(dataItem.getUrl());
-                media.setTitle(dataItem.getTitle());
+                media.setTitle(dataItem.getTitle().substring(0, Math.min(dataItem.getTitle().length(), 100)));
                 media.setOssKey(fileUrl);
                 media.setStatus(SpiderContentMediaStatusEnum.WAITING.getCode());
                 media.setCreateTime(now);
@@ -136,8 +145,13 @@ public class ContentMediaSearchJob {
             startTime = DateUtils.getStartOfDay(param, "yyyyMMdd");
         }
         Long endTime = startTime + 86400 * 1000;
-        List<SpiderContent> contentList = spiderMapperExt.getMediaSearchSpiderContent(SpiderContentStatusEnum.PASSED.getCode(),
-                startTime, endTime, "video");
+        List<SpiderContent> contentList = new ArrayList<>();
+        if (StringUtils.isNotBlank(param)) {
+            contentList.add(spiderContentMapper.selectByPrimaryKey(Long.parseLong(param)));
+        } else {
+            contentList = spiderMapperExt.getMediaSearchSpiderContent(SpiderContentStatusEnum.PASSED.getCode(),
+                    startTime, endTime, "video");
+        }
         if (CollectionUtil.isEmpty(contentList)) {
             return ReturnT.SUCCESS;
         }
@@ -174,9 +188,10 @@ public class ContentMediaSearchJob {
                 SpiderContentMedia media = new SpiderContentMedia();
                 media.setContentId(content.getId());
                 media.setMediaType("video");
+                media.setSourceSite("好看视频");
                 media.setUrl(videoURLList.getVideoURL());
                 media.setDuration((int) videoURLList.getVideoDuration() * 1000);
-                media.setTitle(dataItem.getTitle());
+                media.setTitle(dataItem.getTitle().substring(0, Math.min(dataItem.getTitle().length(), 100)));
                 media.setOssKey(fileUrl);
                 media.setStatus(SpiderContentMediaStatusEnum.PASSED.getCode());
                 media.setCreateTime(now);

+ 109 - 88
core/src/main/java/com/tzld/supply/job/VideoGenerateJob.java

@@ -3,15 +3,12 @@ package com.tzld.supply.job;
 
 import cn.hutool.core.collection.CollectionUtil;
 import com.alibaba.fastjson.JSONObject;
+import com.google.common.util.concurrent.ThreadFactoryBuilder;
 import com.tzld.supply.api.AigcFFmpegApiService;
 import com.tzld.supply.api.fish.FishApiService;
 import com.tzld.supply.common.enums.ProduceVideoStatusEnum;
-import com.tzld.supply.common.enums.SpiderContentMediaStatusEnum;
 import com.tzld.supply.common.enums.SpiderContentStatusEnum;
-import com.tzld.supply.dao.mapper.supply.spider.AiModelTtsMapper;
-import com.tzld.supply.dao.mapper.supply.spider.ProduceVideoAudioMapper;
-import com.tzld.supply.dao.mapper.supply.spider.ProduceVideoMapper;
-import com.tzld.supply.dao.mapper.supply.spider.ProduceVideoMaterialMapper;
+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;
@@ -32,11 +29,16 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.*;
+import java.util.concurrent.*;
 
 @Slf4j
 @Component
 public class VideoGenerateJob {
 
+    @Autowired
+    private SpiderContentMapper spiderContentMapper;
+    @Autowired
+    private SpiderContentMediaMapper spiderContentMediaMapper;
     @Autowired
     private SpiderMapperExt spiderMapperExt;
     @Autowired
@@ -54,6 +56,7 @@ public class VideoGenerateJob {
 
     /**
      * 生成音频
+     *
      * @param param
      * @return
      */
@@ -64,8 +67,13 @@ public class VideoGenerateJob {
             startTime = DateUtils.getStartOfDay(param, "yyyyMMdd");
         }
         Long endTime = startTime + 86400 * 1000;
-        List<SpiderContent> contentList = spiderMapperExt.getVideoGenerateContent(SpiderContentStatusEnum.PASSED.getCode(),
-                startTime, endTime);
+        List<SpiderContent> contentList = new ArrayList<>();
+        if (StringUtils.isNotBlank(param)) {
+            contentList.add(spiderContentMapper.selectByPrimaryKey(Long.parseLong(param)));
+        } else {
+            contentList = spiderMapperExt.getVideoGenerateContent(SpiderContentStatusEnum.PASSED.getCode(),
+                    startTime, endTime);
+        }
         if (CollectionUtil.isEmpty(contentList)) {
             return ReturnT.SUCCESS;
         }
@@ -130,21 +138,22 @@ public class VideoGenerateJob {
      * 视频素材生成
      * 1. 图片转短视频
      * 2. 视频剪切
+     *
      * @param param
      * @return
      */
     @XxlJob("videoMaterialGenerateJob")
     public ReturnT<String> videoMaterialGenerateJob(String param) {
-        List<ProduceVideo> produceList = getProcessingVideoList();
+        List<ProduceVideo> produceList = new ArrayList<>();
+        if (StringUtils.isNotBlank(param)) {
+            produceList.add(produceVideoMapper.selectByPrimaryKey(param));
+        } else {
+            produceList = getProcessingVideoList();
+        }
         if (CollectionUtil.isEmpty(produceList)) {
             return ReturnT.SUCCESS;
         }
         for (ProduceVideo produceVideo : produceList) {
-            // 检查是否存在素材
-            Long materialCount = countVideoMaterial(produceVideo);
-            if (materialCount > 0) {
-                continue;
-            }
             // image to short video
             imageToVideoMaterial(produceVideo);
             // video cut
@@ -159,27 +168,48 @@ public class VideoGenerateJob {
         return produceVideoMaterialMapper.countByExample(example);
     }
 
+    // 线程池
+    private final ExecutorService pool = new ThreadPoolExecutor(
+            5,
+            5,
+            0L, TimeUnit.SECONDS,
+            new LinkedBlockingQueue<>(10000),
+            new ThreadFactoryBuilder().setNameFormat("imageToVideo-%d").build(),
+            new ThreadPoolExecutor.AbortPolicy());
+
     private void imageToVideoMaterial(ProduceVideo produceVideo) {
-        List<SpiderContentMedia> imageList = spiderMapperExt.getMediaSearchSpiderContentMedia(SpiderContentStatusEnum.PASSED.getCode(),
-                null, null, SpiderContentMediaStatusEnum.PASSED.getCode(), "image");
+        List<SpiderContentMedia> imageList = spiderMapperExt.getVideoMaterialGenerateMedia(produceVideo.getId(), "image");
         if (CollectionUtil.isNotEmpty(imageList)) {
+            CountDownLatch latch = new CountDownLatch(imageList.size());
             for (SpiderContentMedia image : imageList) {
-                // 现仅一种效果,后更改为多种效果随机
-                String outputVideoName = String.format("%s_%d.mp4", produceVideo.getContentId(), System.currentTimeMillis());
-                String command = randomImageToVideoAnimation(image.getOssKey(), outputVideoName);
-                CommandParam commandParam = CommandParam.builder()
-                        .ffmpegCommand(command)
-                        .outputFile(outputVideoName)
-                        .outputType("video")
-                        .build();
-                String commandResponseData = ffmpegApiService.command(commandParam);
-                String fileName = String.format("supply/produce/material/video/%s", outputVideoName);
-                String imageToVideoOssUrl = AliOssFileTool.downloadAndSaveInOSS(fileName, commandResponseData, "video/mp4");
+                // 异步处理
+                pool.submit(() -> {
+                    try {
+                        // 现仅一种效果,后更改为多种效果随机
+                        String outputVideoName = String.format("%s_%d.mp4", produceVideo.getContentId(), System.currentTimeMillis());
+                        String command = randomImageToVideoAnimation(image.getOssKey(), outputVideoName);
+                        CommandParam commandParam = CommandParam.builder()
+                                .ffmpegCommand(command)
+                                .outputFile(outputVideoName)
+                                .outputType("video")
+                                .build();
+                        String commandResponseData = ffmpegApiService.command(commandParam);
+                        String fileName = String.format("supply/produce/material/video/%s", outputVideoName);
+                        String imageToVideoOssUrl = AliOssFileTool.downloadAndSaveInOSS(fileName, commandResponseData, "video/mp4");
 
-                // 获取视频信息
-                MediaInfo mediaInfo = getMediaInfo(imageToVideoOssUrl);
-                // 保存视频素材
-                saveVideoMaterial(produceVideo, image.getId(), imageToVideoOssUrl, mediaInfo, 1);
+                        // 获取视频信息
+                        MediaInfo mediaInfo = getMediaInfo(imageToVideoOssUrl);
+                        // 保存视频素材
+                        saveVideoMaterial(produceVideo, image.getId(), imageToVideoOssUrl, mediaInfo, 1);
+                    } finally {
+                        latch.countDown();
+                    }
+                });
+            }
+            try {
+                latch.await();
+            } catch (InterruptedException e) {
+                log.error("视频素材生成 InterruptedException", e);
             }
         }
     }
@@ -199,33 +229,14 @@ public class VideoGenerateJob {
                 break;
             // 平移
             case 1:
-                // 生成随机方向
-                String[][] directions = {
-                        {"0", "0", "(W-w)", "(H-h)"},   // 左上 -> 右下
-                        {"(W-w)", "(H-h)", "0", "0"},   // 右下 -> 左上
-                        {"0", "(H-h)", "(W-w)", "0"},   // 左下 -> 右上
-                        {"(W-w)", "0", "0", "(H-h)"}    // 右上 -> 左下
-                };
-                Random rand = new Random();
-                int index = rand.nextInt(directions.length);
-                String[] dir = directions[index];
-                String xExpr = String.format("x='%s + (%s-%s)*t/%d'", dir[0], dir[2], dir[0], 3);
-                String yExpr = String.format("y='%s + (%s-%s)*t/%d'", dir[1], dir[3], dir[1], 3);
-                // 构造 FFmpeg 命令
-                command = String.format("ffmpeg -y -loop 1 -i %s -filter_complex" +
-                        "\"[0:v]scale=720:1280:force_original_aspect_ratio=increase,boxblur=40:40,crop=720:1280[bg];" +
-                        "[0:v]scale=720:1280:force_original_aspect_ratio=decrease,setsar=1[fg];" +
-                        "[bg][fg]overlay=" + xExpr + ":" + yExpr + ",format=yuv420p\"" +
-                        "-t3 %s", imageUrl, outputVideoName);
-                break;
-            // 背景模糊
+                // 背景模糊
             default:
-                command = String.format("ffmpeg -loop 1 -i %s -t 3 -r 25 -filter_complex " +
-                                "\"[0:v]scale=720:1280:force_original_aspect_ratio=increase,crop=720:1280,gblur=sigma=5[bg];" +
+                command = String.format("ffmpeg -y -loop 1 -i %s -t 3 -r 25 -filter_complex " +
+                                "\"[0:v]scale=720:1280:force_original_aspect_ratio=increase,crop=720:1280,boxblur=10:1[bg];" +
                                 "[0:v]scale=720:1280:force_original_aspect_ratio=decrease,pad=720:1280:(ow-iw)/2:(oh-ih)/2:color=black@0[fg];" +
-                                "[fg]zoompan=z='min(1.00+0.000266*on,1.02)':d=1:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':s=720x1280[fg_anim];" +
-                                "[bg][fg_anim]overlay=0:0:format=auto\" " +
-                                "-c:v libx264 -pix_fmt yuv420p -movflags +faststart \"%s\"",
+                                "[fg]zoompan=z='min(1.00+0.0003*on,1.03)':d=75:x='iw/2-(iw/zoom/2)':y='ih/2-(ih/zoom/2)':s=720x1280[fg_anim];" +
+                                "[bg][fg_anim]overlay=0:0:format=auto,format=yuv420p\" " +
+                                "-c:v libx264 -pix_fmt yuv420p -movflags +faststart %s",
                         imageUrl, outputVideoName);
         }
         return command;
@@ -251,36 +262,48 @@ public class VideoGenerateJob {
     }
 
     private void videoCutMaterial(ProduceVideo produceVideo) {
-        List<SpiderContentMedia> videoList = spiderMapperExt.getMediaSearchSpiderContentMedia(SpiderContentStatusEnum.PASSED.getCode(),
-                null, null, SpiderContentMediaStatusEnum.PASSED.getCode(), "video");
+        List<SpiderContentMedia> videoList = spiderMapperExt.getVideoMaterialGenerateMedia(produceVideo.getId(), "video");
         if (CollectionUtil.isNotEmpty(videoList)) {
+            CountDownLatch latch = new CountDownLatch(videoList.size());
             for (SpiderContentMedia video : videoList) {
-                // 随机截取时间
-                List<Integer> cutTime = randomCutTime(video.getDuration());
-                // 按时长截取视频片段 起始时间为上次结束时间 结束时间为上次结束时间+时长
-                // 第一个视频片段起始时间为0
-                String lastEndTime = "00:00:00";
-                for (Integer time : cutTime) {
-                    // 本次结束时间为上次结束时间+时长
-                    int lastSeconds = parseTimeToSeconds(lastEndTime);
-                    int currentSeconds = time / 1000; // 毫秒转秒数
-                    int endSeconds = lastSeconds + currentSeconds;
-                    String endTime = formatSecondsToTime(endSeconds);
-                    // 截取视频片段
-                    VideoTimeCutParam timeCutParam = VideoTimeCutParam.builder()
-                            .videoUrl(video.getUrl())
-                            .startTime(lastEndTime)
-                            .endTime(endTime)
-                            .build();
-                    lastEndTime = endTime;
-                    String videoCutUrl = ffmpegApiService.timeCutVideo(timeCutParam);
-                    String fileName = String.format("supply/produce/material/video/%s_%d.mp4", produceVideo.getContentId(), System.currentTimeMillis());
-                    String videoCutOssUrl = AliOssFileTool.downloadAndSaveInOSS(fileName, videoCutUrl, "video/mp4");
-                    // 获取视频信息
-                    MediaInfo mediaInfo = getMediaInfo(videoCutOssUrl);
-                    // 保存视频素材
-                    saveVideoMaterial(produceVideo, video.getId(), videoCutOssUrl, mediaInfo, 2);
-                }
+                // 异步处理
+                pool.submit(() -> {
+                    try {
+                        // 随机截取时间
+                        List<Integer> cutTime = randomCutTime(video.getDuration());
+                        // 按时长截取视频片段 起始时间为上次结束时间 结束时间为上次结束时间+时长
+                        // 第一个视频片段起始时间为0
+                        String lastEndTime = "00:00:00";
+                        for (Integer time : cutTime) {
+                            // 本次结束时间为上次结束时间+时长
+                            int lastSeconds = parseTimeToSeconds(lastEndTime);
+                            int currentSeconds = time / 1000; // 毫秒转秒数
+                            int endSeconds = lastSeconds + currentSeconds;
+                            String endTime = formatSecondsToTime(endSeconds);
+                            // 截取视频片段
+                            VideoTimeCutParam timeCutParam = VideoTimeCutParam.builder()
+                                    .videoUrl(video.getUrl())
+                                    .startTime(lastEndTime)
+                                    .endTime(endTime)
+                                    .build();
+                            lastEndTime = endTime;
+                            String videoCutUrl = ffmpegApiService.timeCutVideo(timeCutParam);
+                            String fileName = String.format("supply/produce/material/video/%s_%d.mp4", produceVideo.getContentId(), System.currentTimeMillis());
+                            String videoCutOssUrl = AliOssFileTool.downloadAndSaveInOSS(fileName, videoCutUrl, "video/mp4");
+                            // 获取视频信息
+                            MediaInfo mediaInfo = getMediaInfo(videoCutOssUrl);
+                            // 保存视频素材
+                            saveVideoMaterial(produceVideo, video.getId(), videoCutOssUrl, mediaInfo, 2);
+                        }
+                    } finally {
+                        latch.countDown();
+                    }
+                });
+            }
+            try {
+                latch.await();
+            } catch (InterruptedException e) {
+                log.error("视频素材生成 InterruptedException", e);
             }
         }
     }
@@ -328,6 +351,7 @@ public class VideoGenerateJob {
      * 视频生成
      * 1. 视频素材拼接长视频
      * 2. 添加音频
+     *
      * @param param
      * @return
      */
@@ -398,11 +422,8 @@ public class VideoGenerateJob {
                 break;
             }
         }
-        while (iterator.hasNext()) {
-            ProduceVideoMaterial material = iterator.next();
-            if (duration < 0) {
-                break;
-            }
+        while (duration > 0) {
+            ProduceVideoMaterial material = materialList.get(new Random().nextInt(materialList.size()));
             videoUrls.add(material.getUrl());
             duration -= material.getDuration();
         }

+ 10 - 0
core/src/main/resources/mapper/supply/spider/ext/SpiderMapperExt.xml

@@ -83,4 +83,14 @@
           and id not in (select content_id from produce_video)
     </select>
 
+    <select id="getVideoMaterialGenerateMedia"
+            resultType="com.tzld.supply.model.po.supply.spider.SpiderContentMedia">
+        select scm.*
+        from produce_video pv
+         join spider_content_media scm on pv.content_id = scm.content_id and scm.status = 1 and scm.media_type = #{mediaType}
+         left join produce_video_material pvm on pv.id = pvm.produce_video_id and scm.id = pvm.source_media_id
+        where pv.id = #{produceVideoId} and pvm.id is null
+
+    </select>
+
 </mapper>

+ 10 - 10
server/src/main/java/com/tzld/supply/controller/XxlJobController.java

@@ -65,32 +65,32 @@ public class XxlJobController {
     }
 
     @GetMapping("/contentImageMediaSearchJob")
-    public CommonResponse<Void> contentImageMediaSearchJob(String dateStr) {
-        contentMediaSearchJob.contentImageMediaSearchJob(dateStr);
+    public CommonResponse<Void> contentImageMediaSearchJob(String contentId) {
+        contentMediaSearchJob.contentImageMediaSearchJob(contentId);
         return CommonResponse.success();
     }
 
     @GetMapping("/contentMediaImageCheckJob")
-    public CommonResponse<Void> contentMediaImageCheckJob(String dateStr) {
-        contentMediaSearchJob.contentMediaImageCheckJob(dateStr);
+    public CommonResponse<Void> contentMediaImageCheckJob(String contentId) {
+        contentMediaSearchJob.contentMediaImageCheckJob(contentId);
         return CommonResponse.success();
     }
 
     @GetMapping("/contentVideoMediaSearchJob")
-    public CommonResponse<Void> contentVideoMediaSearchJob(String dateStr) {
-        contentMediaSearchJob.contentVideoMediaSearchJob(dateStr);
+    public CommonResponse<Void> contentVideoMediaSearchJob(String contentId) {
+        contentMediaSearchJob.contentVideoMediaSearchJob(contentId);
         return CommonResponse.success();
     }
 
     @GetMapping("/videoVoiceGenerateJob")
-    public CommonResponse<Void> videoVoiceGenerateJob(String dateStr) {
-        videoGenerateJob.videoVoiceGenerateJob(dateStr);
+    public CommonResponse<Void> videoVoiceGenerateJob(String contentId) {
+        videoGenerateJob.videoVoiceGenerateJob(contentId);
         return CommonResponse.success();
     }
 
     @GetMapping("/videoMaterialGenerateJob")
-    public CommonResponse<Void> videoMaterialGenerateJob(String dateStr) {
-        videoGenerateJob.videoMaterialGenerateJob(dateStr);
+    public CommonResponse<Void> videoMaterialGenerateJob(String produceVideoId) {
+        videoGenerateJob.videoMaterialGenerateJob(produceVideoId);
         return CommonResponse.success();
     }
 

+ 6 - 1
server/src/main/resources/application-dev.yml

@@ -49,4 +49,9 @@ feign:
 eureka:
   client:
     service-url:  # Eureka 服务注册中心地址
-      defaultZone: http://deveureka-internal.piaoquantv.com/eureka/  # 注册中心 URL
+      defaultZone: http://deveureka-internal.piaoquantv.com/eureka/  # 注册中心 URL
+
+danger:
+  face:
+    recognize:
+      host: http://47.111.230.160:5000