فهرست منبع

VideoFileService 添加一个获取视频文件创建时间的方法 getCreateTime

reghao 2 سال پیش
والد
کامیت
fe9c8c71e3

+ 2 - 0
oss-api/src/main/java/cn/reghao/oss/api/iface/media/VideoFileService.java

@@ -3,6 +3,7 @@ package cn.reghao.oss.api.iface.media;
 import cn.reghao.oss.api.dto.media.VideoInfo;
 import cn.reghao.oss.api.dto.media.VideoUrlDto;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -13,4 +14,5 @@ public interface VideoFileService {
     void deleteVideoFile(String videoFileId);
     VideoInfo getVideoInfo(String videoFileId);
     List<VideoUrlDto> getVideoUrls(String videoFileId, long loginUser);
+    LocalDateTime getCreateTime(String videoFileId);
 }

+ 26 - 0
oss-store/src/main/java/cn/reghao/oss/store/rpc/media/VideoFileServiceImpl.java

@@ -1,5 +1,8 @@
 package cn.reghao.oss.store.rpc.media;
 
+import cn.reghao.jutil.media.FFmpegWrapper;
+import cn.reghao.jutil.media.model.MediaProps;
+import cn.reghao.oss.api.dto.ObjectMeta;
 import cn.reghao.oss.store.db.repository.ObjectRepository;
 import cn.reghao.oss.store.db.repository.VideoRepository;
 import cn.reghao.oss.store.model.po.VideoFile;
@@ -11,6 +14,7 @@ import cn.reghao.oss.api.iface.media.VideoFileService;
 import org.apache.dubbo.config.annotation.DubboService;
 import org.springframework.stereotype.Service;
 
+import java.time.LocalDateTime;
 import java.util.List;
 
 /**
@@ -20,6 +24,7 @@ import java.util.List;
 @DubboService
 @Service
 public class VideoFileServiceImpl implements VideoFileService {
+    private final LocalDateTime epoch = LocalDateTime.parse("1970-01-01T08:00");
     private final VideoRepository videoRepository;
     private final ObjectRepository objectRepository;
     private final SignService signService;
@@ -57,4 +62,25 @@ public class VideoFileServiceImpl implements VideoFileService {
         });
         return list;
     }
+
+    @Override
+    public LocalDateTime getCreateTime(String videoFileId) {
+        ObjectMeta objectMeta = objectRepository.getObjectMetaById(videoFileId);
+        if (objectMeta == null) {
+            return null;
+        }
+
+        String absolutePath = objectMeta.getAbsolutePath();
+        MediaProps mediaProps = FFmpegWrapper.getMediaProps(absolutePath);
+        if (mediaProps == null) {
+            return null;
+        }
+
+        LocalDateTime localDateTime = mediaProps.getCreateTime();
+        if (localDateTime != null && !localDateTime.equals(epoch)) {
+            return localDateTime;
+        }
+
+        return null;
+    }
 }