From 489372ea615dfaf804f7f530c8769e9d13464407 Mon Sep 17 00:00:00 2001 From: ThisBirchWood Date: Sun, 11 May 2025 22:47:20 +0200 Subject: [PATCH] ADD status endpoint --- .../com/ddf/vodsystem/controllers/EditController.java | 6 ++++++ .../ddf/vodsystem/services/CompressionService.java | 9 ++++++++- .../java/com/ddf/vodsystem/services/EditService.java | 11 +++++++++++ 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/ddf/vodsystem/controllers/EditController.java b/src/main/java/com/ddf/vodsystem/controllers/EditController.java index 8b552de..8fdaa07 100644 --- a/src/main/java/com/ddf/vodsystem/controllers/EditController.java +++ b/src/main/java/com/ddf/vodsystem/controllers/EditController.java @@ -2,6 +2,7 @@ package com.ddf.vodsystem.controllers; import com.ddf.vodsystem.entities.ClipConfig; import com.ddf.vodsystem.services.EditService; +import org.atmosphere.config.service.Get; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; @@ -28,4 +29,9 @@ public class EditController { return new ResponseEntity<>(uuid, HttpStatus.OK); } + @GetMapping("/progress/{uuid}") + public ResponseEntity getProgress(@PathVariable("uuid") String uuid) { + return new ResponseEntity<>(editService.getProgress(uuid), HttpStatus.OK); + } + } diff --git a/src/main/java/com/ddf/vodsystem/services/CompressionService.java b/src/main/java/com/ddf/vodsystem/services/CompressionService.java index 93766c4..14604fb 100644 --- a/src/main/java/com/ddf/vodsystem/services/CompressionService.java +++ b/src/main/java/com/ddf/vodsystem/services/CompressionService.java @@ -10,6 +10,7 @@ import java.io.IOException; import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; +import java.util.regex.Matcher; import java.util.regex.Pattern; import org.slf4j.Logger; @@ -24,7 +25,7 @@ public class CompressionService { private static final float MAX_AUDIO_BITRATE = 128f; private static final float BITRATE_MULTIPLIER = 0.9f; - private Pattern timePattern = Pattern.compile("time=([\\d:.]+)"); + private Pattern timePattern = Pattern.compile("out_time_ms=([\\d:.]+)"); private long out_time_ms; private void buildFilters(ArrayList command, Float fps, Integer width, Integer height) { @@ -114,10 +115,16 @@ public class CompressionService { job.setStatus(JobStatus.RUNNING); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); + Float length = job.getClipConfig().getEndPoint() - job.getClipConfig().getStartPoint(); String line; while ((line = reader.readLine()) != null) { logger.debug(line); + Matcher matcher = timePattern.matcher(line); + if (matcher.find()) { + Float progress = Float.parseFloat(matcher.group(1))/(length*1000000); + job.setProgress(progress); + } } job.setStatus(JobStatus.FINISHED); diff --git a/src/main/java/com/ddf/vodsystem/services/EditService.java b/src/main/java/com/ddf/vodsystem/services/EditService.java index 7bbd4d4..5392991 100644 --- a/src/main/java/com/ddf/vodsystem/services/EditService.java +++ b/src/main/java/com/ddf/vodsystem/services/EditService.java @@ -2,6 +2,7 @@ package com.ddf.vodsystem.services; import com.ddf.vodsystem.entities.ClipConfig; import com.ddf.vodsystem.entities.Job; +import com.ddf.vodsystem.exceptions.JobNotFound; import org.springframework.stereotype.Service; @Service @@ -27,4 +28,14 @@ public class EditService { public void jobReady(String uuid) { jobService.jobReady(uuid); } + + public float getProgress(String uuid) { + Job job = jobService.get(uuid); + + if (job == null) { + throw new JobNotFound(uuid); + } + + return job.getProgress(); + } }