Explorar o código

1.把视频和文件格式转换进行优化,彻底完成功能

jasonk5949 hai 8 meses
pai
achega
3cc4ae3ae0

+ 41 - 57
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/service/impl/TranscodingServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.qiwenshare.common.util.DateUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 import vip.xiaonuo.auth.core.util.StpLoginUserUtil;
 import vip.xiaonuo.common.pojo.CommonResult;
 import vip.xiaonuo.disk.domain.FileBean;
@@ -44,6 +45,7 @@ public class TranscodingServiceImpl implements TranscodingService {
     private OfficeConverter officeConverter;
 
     @Override
+    @Transactional(rollbackFor = Exception.class)
     public CommonResult<String> transcodingVideo(TranscodingReqDTO transcodingReqDTO) {
         // 校验目标文件是否存在,是否是本人的
         String userId = StpLoginUserUtil.getLoginUser().getId();
@@ -67,79 +69,61 @@ public class TranscodingServiceImpl implements TranscodingService {
                 // mp4 wmv avi flv mpeg mpg rmvb mov 互相转
                 videoConverter.convertAndUpload(fileBean.getFileUrl(), fileBean.getFileId(), new String[]{transcodingReqDTO.getFormat()});
                 // 转换后把文件信息新增到数据库
-                FileBean newFile = new FileBean();
-                newFile.setFileId(IdUtil.simpleUUID());
-                newFile.setFileUrl("converted/" + fileBean.getFileId() + "." + transcodingReqDTO.getFormat());
-                newFile.setCreateUserId(userId);
-                newFile.setFileSize(videoConverter.getConverterFileSize("converted/" + fileBean.getFileId() + "." + transcodingReqDTO.getFormat()));
-                newFile.setFileStatus(1);
-                newFile.setIdentifier(fileBean.getIdentifier());
-                newFile.setStorageType(3);
-                newFile.setCreateTime(DateUtil.getCurrentTime());
-                fileMapper.insert(newFile);
-                UserFile newUserFile = new UserFile();
-                newUserFile.setUserFileId(IdUtil.simpleUUID());
-                newUserFile.setCreateUserId(userId);
-                newUserFile.setDeleteFlag(0);
-                newUserFile.setExtendName(transcodingReqDTO.getFormat());
-                newUserFile.setFileId(newFile.getFileId());
-                newUserFile.setFileName(userFile.getFileName());
-                newUserFile.setFilePath(userFile.getFilePath());
-                newUserFile.setIsDir(userFile.getIsDir());
-                newUserFile.setUserId(userId);
-                newUserFile.setCreateTime(DateUtil.getCurrentTime());
-                newUserFile.setUploadTime(DateUtil.getCurrentTime());
-                userFileMapper.insert(newUserFile);
+                saveFile(userFile, fileBean, userId, transcodingReqDTO);
             } catch (Exception ex) {
                 log.error(ex.getMessage());
+                return CommonResult.error("格式转换失败");
             }
         } else if (transcodingReqDTO.getTranscodingType() == 1) {
             // 转码文档
             // pdf doc docx ppt pptx xls xlsx
             // doc转docx,ppt转pptx,xls转xlsx 所有均转pdf
             // 判断目标格式
-            if ("pdf".equals(transcodingReqDTO.getFormat())) {
-                try {
+            try {
+                if ("pdf".equals(transcodingReqDTO.getFormat())) {
                     pdfUtils.convertToPdf(fileBean.getFileUrl(), fileBean.getFileId() + "." + transcodingReqDTO.getFormat());
-                } catch (Exception ex) {
-                    log.error("PDF格式转换:"+ex.getMessage());
-                }
-            } else {
-                try {
+                } else {
                     officeConverter.convertAndUpload(fileBean.getFileUrl(), fileBean.getFileId() + "." + transcodingReqDTO.getFormat());
-                } catch (Exception ex) {
-                    log.error("非PDF格式转换:"+ex.getMessage());
                 }
+                // 转换后把文件信息新增到数据库
+                saveFile(userFile, fileBean, userId, transcodingReqDTO);
+            } catch (Exception ex) {
+                log.error("格式转换:"+ex.getMessage());
+                return CommonResult.error("格式转换失败");
             }
-            // 转换后把文件信息新增到数据库
-            FileBean newFile = new FileBean();
-            newFile.setFileId(IdUtil.simpleUUID());
-            newFile.setFileUrl("converted/" + fileBean.getFileId() + "." + transcodingReqDTO.getFormat());
-            newFile.setCreateUserId(userId);
-            newFile.setFileSize(videoConverter.getConverterFileSize("converted/" + fileBean.getFileId() + "." + transcodingReqDTO.getFormat()));
-            newFile.setFileStatus(1);
-            newFile.setIdentifier(fileBean.getIdentifier());
-            newFile.setStorageType(3);
-            newFile.setCreateTime(DateUtil.getCurrentTime());
-            fileMapper.insert(newFile);
-            UserFile newUserFile = new UserFile();
-            newUserFile.setUserFileId(IdUtil.simpleUUID());
-            newUserFile.setCreateUserId(userId);
-            newUserFile.setDeleteFlag(0);
-            newUserFile.setExtendName(transcodingReqDTO.getFormat());
-            newUserFile.setFileId(newFile.getFileId());
-            newUserFile.setFileName(userFile.getFileName());
-            newUserFile.setFilePath(userFile.getFilePath());
-            newUserFile.setIsDir(userFile.getIsDir());
-            newUserFile.setUserId(userId);
-            newUserFile.setCreateTime(DateUtil.getCurrentTime());
-            newUserFile.setUploadTime(DateUtil.getCurrentTime());
-            userFileMapper.insert(newUserFile);
         }
-        return null;
+        return CommonResult.ok("格式转换成功");
     }
 
 
+    /**
+     * 封装参数,存储进数据库
+     */
+    public void saveFile(UserFile userFile, FileBean fileBean, String userId, TranscodingReqDTO transcodingReqDTO) {
+        FileBean newFile = new FileBean();
+        newFile.setFileId(IdUtil.simpleUUID());
+        newFile.setFileUrl("converted/" + fileBean.getFileId() + "." + transcodingReqDTO.getFormat());
+        newFile.setCreateUserId(userId);
+        newFile.setFileSize(videoConverter.getConverterFileSize("converted/" + fileBean.getFileId() + "." + transcodingReqDTO.getFormat()));
+        newFile.setFileStatus(1);
+        newFile.setIdentifier(fileBean.getIdentifier());
+        newFile.setStorageType(3);
+        newFile.setCreateTime(DateUtil.getCurrentTime());
+        fileMapper.insert(newFile);
+        UserFile newUserFile = new UserFile();
+        newUserFile.setUserFileId(IdUtil.simpleUUID());
+        newUserFile.setCreateUserId(userId);
+        newUserFile.setDeleteFlag(0);
+        newUserFile.setExtendName(transcodingReqDTO.getFormat());
+        newUserFile.setFileId(newFile.getFileId());
+        newUserFile.setFileName(userFile.getFileName());
+        newUserFile.setFilePath(userFile.getFilePath());
+        newUserFile.setIsDir(userFile.getIsDir());
+        newUserFile.setUserId(userId);
+        newUserFile.setCreateTime(DateUtil.getCurrentTime());
+        newUserFile.setUploadTime(DateUtil.getCurrentTime());
+        userFileMapper.insert(newUserFile);
+    }
 
 
 

+ 0 - 5
snowy-plugin/snowy-plugin-disk/snowy-plugin-disk-func/src/main/java/vip/xiaonuo/disk/util/VideoConverter.java

@@ -30,11 +30,6 @@ public class VideoConverter {
     private String FFMPEG_PATH;
 
 
-    public static void main(String[] args) throws Exception {
-        // 示例:转换input.mp4到多种格式
-//        convertAndUpload("upload/20250611/4d22cdad68fac9a45c8e647e5bb02cc2.mp4", "output", new String[]{"avi"});
-    }
-
     public void convertAndUpload(String inputKey, String outputPrefix, String[] formats) throws Exception {
         MinioClient minioClient = MinioClient.builder()
                 .endpoint(MINIO_ENDPOINT)