From bff85731a58fd226061443e82aaf5de1db7baaf5 Mon Sep 17 00:00:00 2001 From: ThisBirchWood Date: Thu, 5 Jun 2025 20:49:27 +0200 Subject: [PATCH] ADD some temporary default values in VideoMetadata --- .../java/com/ddf/vodsystem/entities/Job.java | 2 +- .../services/CompressionService.java | 27 +++++++++++-------- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/ddf/vodsystem/entities/Job.java b/src/main/java/com/ddf/vodsystem/entities/Job.java index fe327e3..57b645c 100644 --- a/src/main/java/com/ddf/vodsystem/entities/Job.java +++ b/src/main/java/com/ddf/vodsystem/entities/Job.java @@ -16,7 +16,7 @@ public class Job { // configs private VideoMetadata inputVideoMetadata; - private VideoMetadata outputVideoMetadata; + private VideoMetadata outputVideoMetadata = new VideoMetadata(); // job status private JobStatus status = JobStatus.NOT_READY; diff --git a/src/main/java/com/ddf/vodsystem/services/CompressionService.java b/src/main/java/com/ddf/vodsystem/services/CompressionService.java index e90c910..8df71a5 100644 --- a/src/main/java/com/ddf/vodsystem/services/CompressionService.java +++ b/src/main/java/com/ddf/vodsystem/services/CompressionService.java @@ -28,6 +28,16 @@ public class CompressionService { private final Pattern timePattern = Pattern.compile("out_time_ms=(\\d+)"); + private void validateVideoMetadata(VideoMetadata inputFileMetadata, VideoMetadata outputFileMetadata) { + if (outputFileMetadata.getStartPoint() == null) { + outputFileMetadata.setStartPoint(0f); + } + + if (outputFileMetadata.getEndPoint() == null) { + outputFileMetadata.setEndPoint(inputFileMetadata.getEndPoint()); + } + } + private void buildFilters(ArrayList command, Float fps, Integer width, Integer height) { List filters = new ArrayList<>(); @@ -66,22 +76,15 @@ public class CompressionService { command.add(audioBitrate + "k"); } - private void buildInputs(ArrayList command, File inputFile, Float startPoint, Float endPoint) { - if (startPoint == null) { - startPoint = 0f; - } - + private void buildInputs(ArrayList command, File inputFile, Float startPoint, Float length) { command.add("-ss"); command.add(startPoint.toString()); command.add("-i"); command.add(inputFile.getAbsolutePath()); - if (endPoint != null) { - float length = endPoint - startPoint; - command.add("-t"); - command.add(Float.toString(length)); - } + command.add("-t"); + command.add(Float.toString(length)); } private ProcessBuilder buildCommand(File inputFile, File outputFile, VideoMetadata videoMetadata) { @@ -92,7 +95,7 @@ public class CompressionService { command.add("-y"); Float length = videoMetadata.getEndPoint() - videoMetadata.getStartPoint(); - buildInputs(command, inputFile, videoMetadata.getStartPoint(), videoMetadata.getEndPoint()); + buildInputs(command, inputFile, videoMetadata.getStartPoint(), length); buildFilters(command, videoMetadata.getFps(), videoMetadata.getWidth(), videoMetadata.getHeight()); if (videoMetadata.getFileSize() != null) { @@ -109,6 +112,8 @@ public class CompressionService { public void run(Job job) throws IOException, InterruptedException { logger.info("FFMPEG starting..."); + validateVideoMetadata(job.getInputVideoMetadata(), job.getOutputVideoMetadata()); + ProcessBuilder pb = buildCommand(job.getInputFile(), job.getOutputFile(), job.getOutputVideoMetadata()); Process process = pb.start(); job.setStatus(JobStatus.RUNNING);