Просмотр исходного кода

添加 video_url 表数据更新代码

reghao 2 лет назад
Родитель
Сommit
0c2f4a7436

+ 2 - 0
dfs-store/src/main/java/cn/reghao/dfs/store/model/po/VideoUrl.java

@@ -5,6 +5,7 @@ import cn.reghao.jutil.jdk.db.BaseObject;
 import lombok.AllArgsConstructor;
 import lombok.Getter;
 import lombok.NoArgsConstructor;
+import lombok.Setter;
 
 /**
  * @author reghao
@@ -12,6 +13,7 @@ import lombok.NoArgsConstructor;
  */
 @AllArgsConstructor
 @NoArgsConstructor
+@Setter
 @Getter
 public class VideoUrl extends BaseObject<Integer> {
     private String videoFileId;

+ 74 - 0
dfs-store/src/main/java/cn/reghao/dfs/store/task/VideoUrlUpdater.java

@@ -0,0 +1,74 @@
+package cn.reghao.dfs.store.task;
+
+import cn.reghao.dfs.store.db.mapper.VideoUrlMapper;
+import cn.reghao.dfs.store.db.repository.ObjectRepository;
+import cn.reghao.dfs.store.model.po.VideoUrl;
+import cn.reghao.jutil.media.FFmpegWrapper;
+import cn.reghao.jutil.media.model.AudioProps;
+import cn.reghao.jutil.media.model.MediaProps;
+import cn.reghao.jutil.media.model.VideoProps;
+import cn.reghao.oss.api.dto.ObjectMeta;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.PostConstruct;
+import java.util.List;
+
+/**
+ * @author reghao
+ * @date 2023-08-29 18:03:39
+ */
+@Slf4j
+@Service
+public class VideoUrlUpdater {
+    @Autowired
+    VideoUrlMapper videoUrlMapper;
+    @Autowired
+    ObjectRepository objectRepository;
+
+    @PostConstruct
+    public void update() {
+        log.info("开始更新 VideoUrl...");
+
+        List<VideoUrl> list = videoUrlMapper.findAll();
+        for (VideoUrl videoUrl : list) {
+            String objectId = videoUrl.getObjectId();
+            ObjectMeta objectMeta = objectRepository.getObjectMetaById(objectId);
+            String objectName = objectMeta.getObjectName();
+            String absolutePath = objectMeta.getAbsolutePath();
+
+            MediaProps mediaProps = FFmpegWrapper.getMediaProps(absolutePath);
+            if (mediaProps == null) {
+                log.info("{} 的 FFmpeg 媒体信息为 null", objectName);
+                continue;
+            }
+
+            VideoProps videoProps = mediaProps.getVideoProps();
+            if (videoProps == null) {
+                log.info("{} 的 FFmpeg 视频信息为 null", objectName);
+                continue;
+            }
+
+            String videoCodec = mediaProps.getVideoProps().getCodecName();
+            String audioCodec = null;
+            AudioProps audioProps1 = mediaProps.getAudioProps();
+            if (audioProps1 != null) {
+                audioCodec = audioProps1.getCodecName();
+            }
+
+            String qualityStr = videoUrl.getQualityStr();
+            String qualityStr1 = qualityStr.replace("p", "");
+            int quality = Integer.parseInt(qualityStr1);
+
+            videoUrl.setVideoCodec(videoCodec);
+            videoUrl.setAudioCodec(audioCodec);
+            videoUrl.setQuality(quality);
+            videoUrlMapper.update(videoUrl);
+
+            log.info("{} 的 VideoUrl 已更新", objectName);
+        }
+
+        log.info("VideoUrl 更新完成...");
+    }
+}

+ 6 - 0
dfs-store/src/main/resources/mapper/VideoUrlMapper.xml

@@ -14,6 +14,12 @@
         where video_file_id=#{videoFileId}
     </delete>
 
+    <update id="update">
+        update video_url
+        set video_codec=#{videoCodec},audio_codec=#{audioCodec},quality=#{quality}
+        where object_id=#{objectId}
+    </update>
+
     <select id="findAll" resultType="cn.reghao.dfs.store.model.po.VideoUrl">
         select * from video_url
     </select>