diff --git a/src/main/java/com/ddf/vodsystem/controllers/EditController.java b/src/main/java/com/ddf/vodsystem/controllers/EditController.java index 8fdaa07..1e4be78 100644 --- a/src/main/java/com/ddf/vodsystem/controllers/EditController.java +++ b/src/main/java/com/ddf/vodsystem/controllers/EditController.java @@ -2,7 +2,6 @@ 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; @@ -34,4 +33,9 @@ public class EditController { return new ResponseEntity<>(editService.getProgress(uuid), HttpStatus.OK); } + @ExceptionHandler(IllegalArgumentException.class) + public ResponseEntity handleIllegalArgument(IllegalArgumentException ex) { + return ResponseEntity.status(404).body(ex.getMessage()); + } + } diff --git a/src/main/java/com/ddf/vodsystem/services/CompressionService.java b/src/main/java/com/ddf/vodsystem/services/CompressionService.java index 14604fb..1474d22 100644 --- a/src/main/java/com/ddf/vodsystem/services/CompressionService.java +++ b/src/main/java/com/ddf/vodsystem/services/CompressionService.java @@ -25,8 +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("out_time_ms=([\\d:.]+)"); - private long out_time_ms; + private final Pattern timePattern = Pattern.compile("out_time_ms=([\\d:.]+)"); private void buildFilters(ArrayList command, Float fps, Integer width, Integer height) { List filters = new ArrayList<>(); @@ -110,17 +109,18 @@ public class CompressionService { logger.info("FFMPEG starting..."); ProcessBuilder pb = buildCommand(job.getInputFile(), job.getOutputFile(), job.getClipConfig()); - pb.redirectErrorStream(true); + //pb.redirectErrorStream(true); Process process = pb.start(); job.setStatus(JobStatus.RUNNING); BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); - Float length = job.getClipConfig().getEndPoint() - job.getClipConfig().getStartPoint(); + 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); diff --git a/src/main/java/com/ddf/vodsystem/services/EditService.java b/src/main/java/com/ddf/vodsystem/services/EditService.java index 5392991..1b19c44 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.entities.JobStatus; import com.ddf.vodsystem.exceptions.JobNotFound; import org.springframework.stereotype.Service; @@ -36,6 +37,10 @@ public class EditService { throw new JobNotFound(uuid); } + if (job.getStatus() == JobStatus.FINISHED) { + return 1f; + } + return job.getProgress(); } }