Quellcode durchsuchen

完善合成視頻邏輯

xuzuoyun vor 5 Jahren
Ursprung
Commit
f4751e05c3

+ 0 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/config/ShiroConfig.java

@@ -129,7 +129,6 @@ public class ShiroConfig {
         //文件上传接口
 		filterChainDefinitionMap.put("/upload/**", "anon");
         filterChainDefinitionMap.put("/appium/appiumTask/run", "anon");
-		filterChainDefinitionMap.put("/ctop/materialpart/merge","anon");
 
         filterChainDefinitionMap.put("/system/userCompany/**", "anon");
         filterChainDefinitionMap.put("/qywexin", "anon");

+ 7 - 1
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/MaterialPartController.java

@@ -5,6 +5,9 @@ import cn.com.ctop.common.module.service.IMaterialInfoService;
 import cn.com.ctop.common.module.service.IVideoMergeTaskService;
 import cn.com.ctop.common.module.service.IVideoPartService;
 import cn.com.ctop.common.module.utils.MpsUtils;
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
 import com.aliyuncs.mts.model.v20140618.QueryJobListResponse;
 import com.google.gson.Gson;
 import io.swagger.annotations.Api;
@@ -17,6 +20,7 @@ import org.jeecg.common.system.vo.LoginUser;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
+import javax.servlet.http.HttpServletRequest;
 import java.util.ArrayList;
 import java.util.List;
 
@@ -31,12 +35,14 @@ public class MaterialPartController {
     private IVideoPartService videoPartService;
     @Autowired
     private IMaterialInfoService materialInfoService;
+
     @AutoLog(value = "片段合成")
     @ApiOperation(value = "片段合成", notes = "片段合成")
     @PostMapping(value = "/merge")
-    public Result<Object> add(@RequestBody List<VideoMerge> videoMergeList) {
+    public Result<Object> merge(@RequestBody JSONArray jsonArray, HttpServletRequest req) {
         Result<Object> result = new Result<Object>();
         List<String> jobIdList = new ArrayList<>();
+        List<VideoMerge> videoMergeList = jsonArray.toJavaList(VideoMerge.class);
         try {
             MpsUtils mpsUtils = new MpsUtils();
             for (VideoMerge videoMerge:videoMergeList){

+ 0 - 3
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/controller/VideoPartController.java

@@ -8,7 +8,6 @@ import java.io.UnsupportedEncodingException;
 import java.net.URLDecoder;
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
-
 import cn.com.ctop.common.module.entity.VideoPart;
 import cn.com.ctop.common.module.service.IVideoPartService;
 import org.jeecg.common.api.vo.Result;
@@ -20,13 +19,11 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import lombok.extern.slf4j.Slf4j;
-
 import org.jeecgframework.poi.excel.ExcelImportUtil;
 import org.jeecgframework.poi.excel.def.NormalExcelConstants;
 import org.jeecgframework.poi.excel.entity.ExportParams;
 import org.jeecgframework.poi.excel.entity.ImportParams;
 import org.jeecgframework.poi.excel.view.JeecgEntityExcelView;
-
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.web.multipart.MultipartFile;

+ 32 - 26
jeecg-boot-module-system/src/main/java/org/jeecg/modules/ctop/job/WatermarkVideoJob.java

@@ -27,35 +27,41 @@ public class WatermarkVideoJob implements Job {
     private IMaterialInfoService materialInfoService;
     @Override
     public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
-        QueryWrapper<VideoWatermarkTask> queryWrapper = new QueryWrapper<>();
-        queryWrapper.in("status","Submitted","Transcoding");
-        List<VideoWatermarkTask> list = videoWaterMarkService.list(queryWrapper);
-        if(list != null && list.size() > 0){
-            for (VideoWatermarkTask videoWatermarkTask : list){
-                MpsUtils mpsUtils = new MpsUtils();
-                QueryJobListResponse.Job job = mpsUtils.getJobStatus(videoWatermarkTask.getJobId());
-                if (job.getState().equals("TranscodeSuccess")){
-                    String url = "https://ctop-media.oss-cn-beijing.aliyuncs.com/"+job.getOutput().getOutputFile().getObject();
+        Thread thread = new Thread() {
+            @Override
+            public void run() {
+                QueryWrapper<VideoWatermarkTask> queryWrapper = new QueryWrapper<>();
+                queryWrapper.in("status", "Submitted", "Transcoding");
+                List<VideoWatermarkTask> list = videoWaterMarkService.list(queryWrapper);
+                if (list != null && list.size() > 0) {
+                    for (VideoWatermarkTask videoWatermarkTask : list) {
+                        MpsUtils mpsUtils = new MpsUtils();
+                        QueryJobListResponse.Job job = mpsUtils.getJobStatus(videoWatermarkTask.getJobId());
+                        if (job.getState().equals("TranscodeSuccess")) {
+                            String url = "https://ctop-media.oss-cn-beijing.aliyuncs.com/" + job.getOutput().getOutputFile().getObject();
 
-                    try {
-                        String localPath = LoadFileUtil.downLoadFromUrl(url, PropertiesUtils.getValue("kuaishou_config", "video_sava_path"));
-//                        String localPath = LoadFileUtil.downLoadFromUrl(url,"D:/video/");
-                        String md5 = LoadFileUtil.getMD5(localPath);
-                        LoadFileUtil.delFile(localPath);
-                        QueryWrapper<MaterialInfo> materialInfoQueryWrapper = new QueryWrapper<>();
-                        materialInfoQueryWrapper.eq("watermark_code",job.getJobId());
-                        MaterialInfo materialInfo = materialInfoService.getOne(materialInfoQueryWrapper);
-                        materialInfo.setWatermarkUrl(url);
-                        materialInfoService.saveOrUpdate(materialInfo);
-                        videoWatermarkTask.setVideoUrl(url);
-                        videoWatermarkTask.setStatus(job.getState());
-                        videoWatermarkTask.setVideoId(materialInfo.getId());
-                        videoWaterMarkService.updateById(videoWatermarkTask);
-                    } catch (IOException e) {
-                        e.printStackTrace();
+                            try {
+                                String localPath = LoadFileUtil.downLoadFromUrl(url, PropertiesUtils.getValue("kuaishou_config", "video_sava_path"));
+                                //                        String localPath = LoadFileUtil.downLoadFromUrl(url,"D:/video/");
+                                String md5 = LoadFileUtil.getMD5(localPath);
+                                LoadFileUtil.delFile(localPath);
+                                QueryWrapper<MaterialInfo> materialInfoQueryWrapper = new QueryWrapper<>();
+                                materialInfoQueryWrapper.eq("watermark_code", job.getJobId());
+                                MaterialInfo materialInfo = materialInfoService.getOne(materialInfoQueryWrapper);
+                                materialInfo.setWatermarkUrl(url);
+                                materialInfoService.saveOrUpdate(materialInfo);
+                                videoWatermarkTask.setVideoUrl(url);
+                                videoWatermarkTask.setStatus(job.getState());
+                                videoWatermarkTask.setVideoId(materialInfo.getId());
+                                videoWaterMarkService.updateById(videoWatermarkTask);
+                            } catch (IOException e) {
+                                e.printStackTrace();
+                            }
+                        }
                     }
                 }
             }
-        }
+        };
+        thread.start();
     }
 }

+ 6 - 0
jeecg-boot-module-system/src/main/resources/quartz.properties

@@ -0,0 +1,6 @@
+org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool
+org.quartz.threadPool.threadCount=20
+org.quartz.threadPool.threadPriority=5
+org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread=true
+org.quartz.jobStore.misfireThreshold=60000
+org.quartz.jobStore.class=org.quartz.simpl.RAMJobStore