From d8a247d9b18cdc76ddb638998fe18ead85d7316a Mon Sep 17 00:00:00 2001 From: WenG <450292408@qq.com> Date: Fri, 11 Jun 2021 22:05:05 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E8=A7=86=E9=A2=91=E8=BD=AC?= =?UTF-8?q?=E7=A0=81=E6=B5=8B=E8=AF=95=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../file/media/manager/MediaManager.java | 2 +- .../src/test/java/MediaTest.java | 30 +++++++++++-------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/module-file-media/src/main/java/ink/wgink/module/file/media/manager/MediaManager.java b/module-file-media/src/main/java/ink/wgink/module/file/media/manager/MediaManager.java index e087107d..d5e60793 100644 --- a/module-file-media/src/main/java/ink/wgink/module/file/media/manager/MediaManager.java +++ b/module-file-media/src/main/java/ink/wgink/module/file/media/manager/MediaManager.java @@ -33,7 +33,7 @@ public class MediaManager { /** * 可以处理的视频格式 */ - public final static String[] VIDEO_TYPE = {"MP4", "WMV"}; + public final static String[] VIDEO_TYPE = {"MP4", "WMV", "RMVB", "AVI"}; /** * 可以处理的图片格式 */ diff --git a/module-file-media/src/test/java/MediaTest.java b/module-file-media/src/test/java/MediaTest.java index 58502dab..4f182dba 100644 --- a/module-file-media/src/test/java/MediaTest.java +++ b/module-file-media/src/test/java/MediaTest.java @@ -3,9 +3,6 @@ import ink.wgink.module.file.media.manager.domain.VideoMetaInfo; import ink.wgink.module.file.media.manager.domain.enums.CrfValueEnum; import ink.wgink.module.file.media.manager.domain.enums.PresetVauleEnum; import ink.wgink.module.file.media.manager.process.IMediaStream; -import org.joda.time.DateTime; -import org.joda.time.format.DateTimeFormat; -import org.joda.time.format.DateTimeFormatter; import org.junit.Test; import java.io.BufferedReader; @@ -58,14 +55,14 @@ public class MediaTest { @Test public void t3() { - MediaManager.getInstance().setFFmpegPath("/Users/wanggeng/ffmpeg/ffmpeg"); - String sourcePath = "/Users/wanggeng/Desktop/UploadFiles/videos/20210119"; - String sourceName = "85355a761e3442cda765c3bc6f5bd526.mp4"; + MediaManager.getInstance().setFFmpegPath("D:\\ffmpeg-4.4-full_build\\ffmpeg-4.4-full_build\\bin\\ffmpeg.exe"); + String sourcePath = "C:\\Users\\wenc0\\Desktop\\UploadFiles"; + String sourceName = "超体.rmvb"; File sourceFile = new File(sourcePath + File.separator + sourceName); File outFile = new File(sourcePath + File.separator + sourceName + ".mp4"); - Pattern durationPattern = Pattern.compile("Duration: \\d{2}:\\d{2}:\\d{2}\\.\\d{2}"); - Pattern timePattern = Pattern.compile("time=\\d{2}:\\d{2}:\\d{2}\\.\\d{2}"); + Pattern durationPattern = Pattern.compile("Duration: \\d{2}:\\d{2}:\\d{2}"); + Pattern timePattern = Pattern.compile("time=\\d{2}:\\d{2}:\\d{2}"); MediaManager.getInstance().convertVideo(sourceFile, outFile, true, CrfValueEnum.LOW_QUALITY.getCode(), PresetVauleEnum.MAX_FAST_ZIP_SPEED.getPresetValue(), null, null, new IMediaStream() { @Override @@ -86,25 +83,32 @@ public class MediaTest { String duration = durationMatcher.group(); System.out.println(duration); String durationTime = duration.replace("Duration: ", ""); - DateTime dateTime = DateTime.parse(durationTime, DateTimeFormat.forPattern("HH:mm:ss.SSS")); - fullTime = dateTime.getMillis(); + fullTime = durationToLongTime(durationTime); } if (timeMatcher.find()) { String time = timeMatcher.group(); System.out.println(time); String timeTime = time.replace("time=", ""); - DateTime dateTime = DateTime.parse(timeTime, DateTimeFormat.forPattern("HH:mm:ss.SSS")); - currentTime = dateTime.getMillis(); + currentTime = durationToLongTime(timeTime); } System.out.println(fullTime + "-" + currentTime); if (fullTime > 0L) { - System.out.println((currentTime / fullTime * 100) + "%"); + + System.out.println((currentTime / (fullTime * 1D) * 100D) + "%"); } } } }); } + private long durationToLongTime(String duration) { + String[] durationArray = duration.split("\\:"); + int hour = Integer.parseInt(durationArray[0]); + int minute = Integer.parseInt(durationArray[1]); + int second = Integer.parseInt(durationArray[2]); + return (hour * 3600 + minute * 60 + second); + } + @Test public void t4() { String line = " Duration: 00:14:05.11, start: 0.000000, bitrate: 1022 kb/s";