瀏覽代碼

注释了视频封面图的代码

jinshihui 1 月之前
父節點
當前提交
00f98ed026
共有 1 個文件被更改,包括 18 次插入15 次删除
  1. 18 15
      nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TbFileServiceImpl.java

+ 18 - 15
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TbFileServiceImpl.java

@@ -27,6 +27,7 @@ import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Map;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 
@@ -122,32 +123,29 @@ public class TbFileServiceImpl extends ServiceImpl<TbFileMapper, TbFile> impleme
             log.info("上传文件的路径:{},返回的新文件路径:{}", filePath, subFileName);
 
             //生成视频的封面图片文件(该方法内部会执行 FFmpeg 命令并验证)
-            String thumbnailFilePath = generateThumbnailFilePath(subFileName, file.getOriginalFilename());
+            /*String thumbnailFilePath = generateThumbnailFilePath(subFileName, file.getOriginalFilename());
             String substring = thumbnailFilePath.substring(thumbnailFilePath.lastIndexOf("\\upload"));
-
             substring = "/profile" + substring;
             log.info("生成视频的封面图片文件路径:{}", substring);
-            substring = substring.replace("\\", "/");
+            substring = substring.replace("\\", "/");*/
 
-            // 构建文件访问的完整 URL
-            //String url = serverConfig.getUrl() + fileName;
             ajax.put("url", fileName);
             ajax.put("fileName", fileName);
             ajax.put("newFileName", FileUtils.getName(fileName));
             ajax.put("originalFilename", file.getOriginalFilename());
             // 封面图URL路径(针对视频文件)
-            ajax.put("coverUrl",  substring);
+            //ajax.put("coverUrl",  substring);
 
             // 保存文件记录到数据库
             TbFile tbFile = new TbFile();
             tbFile.setMd5(md5);
             tbFile.setFileName(file.getOriginalFilename());
             tbFile.setFileUrl(fileName);
-            tbFile.setCoverUrl(substring);
+            //tbFile.setCoverUrl(substring);
             this.save(tbFile);
             return ajax;
         } catch (Exception e) {
-            // 上传失败,返回错误信息
+            e.printStackTrace();
             return AjaxResult.error(e.getMessage());
         }
     }
@@ -245,19 +243,20 @@ public class TbFileServiceImpl extends ServiceImpl<TbFileMapper, TbFile> impleme
         String thumbnailPathStr = thumbnailPath.toString();
         log.info("开始生成封面图片,视频文件的路径: {}, 封面图片的路径: {}", videoPath, thumbnailPathStr);
 
-        // 3. 执行 FFmpeg 命令生成封面
+        // 3. 执行 FFmpeg 命令生成封面图片
         try {
-            executeFfmpegCommand(videoPath, thumbnailPathStr);
-            log.info("FFmpeg 命令执行成功");
+            //添加固定前缀(linux环境中需要添加,windows环境中不需要添加)
+            String prefix = "/usr/local/java";
+            executeFfmpegCommand(prefix+videoPath, prefix+thumbnailPathStr);
+            log.info("FFmpeg命令执行成功");
         } catch (Exception e) {
             e.printStackTrace();
-            Thread.currentThread().interrupt();
-            throw new VideoThumbnailService.VideoProcessException("封面生成过程被中断", e);
+            throw new VideoThumbnailService.VideoProcessException("视频封面文件生成过程被中断", e);
         }
 
         // 4. 验证生成的封面文件
         validateThumbnailFile(thumbnailPathStr);
-        log.info("封面图片生成成功: {}", thumbnailPathStr);
+        log.info("视频封面图片生成成功: {}", thumbnailPathStr);
         return thumbnailPathStr;
     }
 
@@ -283,6 +282,7 @@ public class TbFileServiceImpl extends ServiceImpl<TbFileMapper, TbFile> impleme
      * @param thumbnailPath 封面图片保存路径
      */
     private void executeFfmpegCommand(String videoPath, String thumbnailPath) throws IOException, InterruptedException, VideoThumbnailService.VideoProcessException {
+        log.info("开始执行FFmpeg命令,视频文件路径: {}, 封面图片保存路径: {}", videoPath, thumbnailPath);
         // 构建 FFmpeg 命令
         // -ss: 截取时间点
         // -i: 输入文件
@@ -305,6 +305,9 @@ public class TbFileServiceImpl extends ServiceImpl<TbFileMapper, TbFile> impleme
 
         // 执行命令
         ProcessBuilder processBuilder = new ProcessBuilder(command);
+        Map<String, String> env = processBuilder.environment();
+        env.put("LD_LIBRARY_PATH", "/usr/local/ffmpeg-8.0/lib");
+        env.put("PATH", env.get("PATH") + ":/usr/local/ffmpeg-8.0/bin");
         processBuilder.redirectErrorStream(true);
         Process process = processBuilder.start();
 
@@ -327,7 +330,7 @@ public class TbFileServiceImpl extends ServiceImpl<TbFileMapper, TbFile> impleme
             log.error("FFmpeg 执行失败,输出: {}", output);
             throw new VideoThumbnailService.VideoProcessException("FFmpeg 执行失败,退出码: " + exitCode);
         }
-        log.debug("FFmpeg 输出: {}", output);
+        log.info("FFmpeg 输出: {}", output);
     }