shenrongliang
2025-04-07 f5272a929da1ac27294ad4928d06828db2b7d19a
配置修改,合成视频
已修改1个文件
31 ■■■■ 文件已修改
yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/coursemedia/CourseMediaServiceUtil.java 31 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
yudao-module-digitalcourse/yudao-module-digitalcourse-biz/src/main/java/cn/iocoder/yudao/module/digitalcourse/service/coursemedia/CourseMediaServiceUtil.java
@@ -1,5 +1,6 @@
package cn.iocoder.yudao.module.digitalcourse.service.coursemedia;
import cn.hutool.core.io.FileUtil;
import cn.hutool.core.util.RandomUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.http.HttpRequest;
@@ -16,6 +17,7 @@
import cn.iocoder.yudao.module.digitalcourse.service.voices.VoicesServiceImpl;
import cn.iocoder.yudao.module.digitalcourse.util.SrtToVttUtil;
import cn.iocoder.yudao.module.infra.api.config.ConfigApi;
import cn.iocoder.yudao.module.infra.api.file.FileApi;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
@@ -32,6 +34,7 @@
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.*;
@@ -61,6 +64,8 @@
    @Resource
    private VoicesServiceImpl serviceImpl;
    @Resource
    private FileApi fileApi;
    /**
     * 远程合并视频
@@ -217,9 +222,6 @@
                    result = "D:/heygem_data/face2face/temp" + result;
                    videoUrls.add(result);
                    System.out.println("驱动视频名"+result);
                    // 如果成功,更新状态为1(成功)
                    courseMediaDO.setStatus(1);
                    courseMediaMapper.updateById(courseMediaDO);
                } catch (Exception e) {
                    retryCount++;
                    if (retryCount >= maxRetries) {
@@ -255,6 +257,7 @@
        String newFileName = updateReqVO.getName().replaceAll("[\\s\\p{Punct}]", "");
        ProcessBuilder builder = new ProcessBuilder(
                "ffmpeg", "-f", "concat", "-safe","0", "-i",fileListPath , "-c", "copy", "D:/heygem_data/face2face/temp/"+"111111.mp4"
//                q
        );
        builder.redirectErrorStream(true);
        Process process = null;
@@ -272,8 +275,17 @@
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
        // "D:/heygem_data/face2face/temp/"+"111111.mp4"将这个文件转成byte[]
        byte[] bytes = FileUtil.readBytes(FileUtil.file("D:/heygem_data/face2face/temp/"+"111111.mp4"));
        String file = fileApi.createFile(bytes);
        // 如果成功,更新状态为1(成功)
        courseMediaDO.setStatus(1);
        courseMediaDO.setPreviewUrl(file);
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date();
        courseMediaDO.setFinishTime(sdf.format(date));
        courseMediaDO.setProgress(100.0f);
        courseMediaMapper.updateById(courseMediaDO);
    }
    // 四舍五入方法
@@ -308,10 +320,11 @@
                if (status == 2) {
                    result = data.getString("result");
                    System.out.println("任务已完成,结果文件路径: " + result);
                } else {
                } else if (status == 3){
                    throw new RuntimeException("任务失败,请联系管理员");
                }else {
                    System.out.println("任务尚未完成,当前进度: " + data.getIntValue("progress") + "%");
                }
                // 等待一段时间再进行下一次轮询(避免频繁请求)
                // 每隔 5 秒轮询一次
                Thread.sleep(5000);
@@ -325,8 +338,8 @@
                    interruptedException.printStackTrace();
                }
            }
            // 当 status 不等于 2 时继续循环
        } while (status != 2);
            // 当 status 等于  时继续循环
        } while (status == 1 );
        return result;
    }