Skip to content

Commit

Permalink
fix parse video bitrate for audio file
Browse files Browse the repository at this point in the history
  • Loading branch information
papersaccul committed Mar 23, 2024
1 parent f1aec62 commit 53b685c
Show file tree
Hide file tree
Showing 4 changed files with 28 additions and 16 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
```
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.papersaccul.paperffeditor</groupId>
<artifactId>paperffeditor</artifactId>
<version>0.1.6</version>
<version>0.1.7</version>

<name>com.papersaccul.paperffeditor</name>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ private void setDefaultSettingsOnInputFile(String inputFilePath) {
}
notifyObservers();
}

private List<VideoSettingsObserver> observers = new ArrayList<>();


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,17 +142,20 @@ public static Map<String, String> parseVideoInfo(String filePath, VideoSettings
}

Map<String, String> 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");
Expand All @@ -163,20 +166,17 @@ public static Map<String, String> 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();
}
Expand Down Expand Up @@ -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;
}
}

0 comments on commit 53b685c

Please sign in to comment.