diff --git a/README.md b/README.md index deb015f..945e273 100644 --- a/README.md +++ b/README.md @@ -13,5 +13,5 @@ nvm clean package ``` ## Run ``` -java -jar ./target/paperffeditor-0.1.6-jar-with-dependencies.jar +java -jar ./target/paperffeditor-{version}-jar-with-dependencies.jar ``` diff --git a/pom.xml b/pom.xml index 704668f..65d1401 100644 --- a/pom.xml +++ b/pom.xml @@ -3,7 +3,7 @@ 4.0.0 com.papersaccul.paperffeditor paperffeditor - 0.1.6 + 0.1.7 com.papersaccul.paperffeditor diff --git a/src/main/java/com/papersaccul/paperffeditor/model/VideoSettings.java b/src/main/java/com/papersaccul/paperffeditor/model/VideoSettings.java index 3aff297..321dde2 100644 --- a/src/main/java/com/papersaccul/paperffeditor/model/VideoSettings.java +++ b/src/main/java/com/papersaccul/paperffeditor/model/VideoSettings.java @@ -84,7 +84,7 @@ private void setDefaultSettingsOnInputFile(String inputFilePath) { } notifyObservers(); } - + private List observers = new ArrayList<>(); diff --git a/src/main/java/com/papersaccul/paperffeditor/util/FFmpegCommandBuilder.java b/src/main/java/com/papersaccul/paperffeditor/util/FFmpegCommandBuilder.java index c781014..264ac1f 100644 --- a/src/main/java/com/papersaccul/paperffeditor/util/FFmpegCommandBuilder.java +++ b/src/main/java/com/papersaccul/paperffeditor/util/FFmpegCommandBuilder.java @@ -142,17 +142,20 @@ public static Map parseVideoInfo(String filePath, VideoSettings } Map details = new HashMap<>(); + // String videoBitrate = ""; + // String audioBitrate = ""; try { Process process = Runtime.getRuntime().exec(command); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getErrorStream())); String line; - boolean isVideo = false; while ((line = reader.readLine()) != null) { - if (line.contains("Stream #0:0") && line.contains("Video: ")) { - isVideo = true; + // Video + if (line.contains("Stream") && line.contains("Video:")) { + details.put("videoCodec", cleanCodecName(extractDetail(line, "Video: "))); String drawingMethodDetail = extractDetail(line, "Video: ", "(").trim(); details.put("drawingMethod", drawingMethodDetail); + String resolutionDetail = extractDetail(line, "),", "[SAR"); if (resolutionDetail.isEmpty()) { resolutionDetail = extractDetail(line, drawingMethodDetail + ")", "[SAR"); @@ -163,20 +166,17 @@ public static Map parseVideoInfo(String filePath, VideoSettings details.put("videoWidth", width); details.put("videoHeight", resolutionParts[1].split(" ")[0].trim()); } - - String frameRateDetail = extractFrameRate(line); - details.put("frameRate", frameRateDetail); - } else if (line.contains("Stream #0:1") || (line.contains("Stream #0:0") && !isVideo)) { + details.put("frameRate", extractFrameRate(line)); + details.put("videoBitrate", extractBitrate(line)); + + // Audio + } else if (line.contains("Stream") && line.contains("Audio:")) { details.put("audioCodec", cleanCodecName(extractDetail(line, "Audio: "))); details.put("audioChannels", extractDetail(line, "Audio: ", ",")); - - String audioBitrateDetail = extractAudioBitrate(line); - details.put("audioBitrate", audioBitrateDetail); - } - if (line.contains("bitrate:")) { - details.put("videoBitrate", extractDetail(line, "bitrate: ")); + details.put("audioBitrate", extractAudioBitrate(line)); } } + } catch (IOException e) { e.printStackTrace(); } @@ -219,4 +219,16 @@ private static String extractAudioBitrate(String line) { } return "Detail not found"; } + + private static String extractBitrate(String line) { + String bitrate = "Detail not found"; + String[] parts = line.split(","); + for (String part : parts) { + if (part.trim().contains("kb/s")) { + bitrate = part.trim().split(" ")[0]; + break; + } + } + return bitrate; + } }