diff --git a/src/main/java/net/bramp/ffmpeg/builder/FFmpegBuilder.java b/src/main/java/net/bramp/ffmpeg/builder/FFmpegBuilder.java index e2ab9225..3c40f784 100644 --- a/src/main/java/net/bramp/ffmpeg/builder/FFmpegBuilder.java +++ b/src/main/java/net/bramp/ffmpeg/builder/FFmpegBuilder.java @@ -101,11 +101,19 @@ public FFmpegBuilder setPassDirectory(String directory) { return this; } + public String getPassDirectory() { + return this.pass_directory; + } + public FFmpegBuilder setPassPrefix(String prefix) { this.pass_prefix = checkNotNull(prefix); return this; } + public String getPassPrefix() { + return this.pass_prefix; + } + public FFmpegBuilder setVerbosity(Verbosity verbosity) { checkNotNull(verbosity); this.verbosity = verbosity; diff --git a/src/main/java/net/bramp/ffmpeg/job/TwoPassFFmpegJob.java b/src/main/java/net/bramp/ffmpeg/job/TwoPassFFmpegJob.java index 9b4c930e..200893d2 100644 --- a/src/main/java/net/bramp/ffmpeg/job/TwoPassFFmpegJob.java +++ b/src/main/java/net/bramp/ffmpeg/job/TwoPassFFmpegJob.java @@ -40,7 +40,7 @@ public TwoPassFFmpegJob( } protected void deletePassLog() throws IOException { - final Path cwd = Paths.get(""); + final Path cwd = Paths.get(builder.getPassDirectory()); try (DirectoryStream stream = Files.newDirectoryStream(cwd, passlogPrefix + "*.log*")) { for (Path p : stream) { Files.deleteIfExists(p); diff --git a/src/test/java/net/bramp/ffmpeg/FFmpegExecutorTest.java b/src/test/java/net/bramp/ffmpeg/FFmpegExecutorTest.java index fedd2501..d97e850c 100644 --- a/src/test/java/net/bramp/ffmpeg/FFmpegExecutorTest.java +++ b/src/test/java/net/bramp/ffmpeg/FFmpegExecutorTest.java @@ -12,6 +12,8 @@ import com.google.common.io.ByteStreams; import com.google.common.io.CountingOutputStream; import com.google.common.net.HostAndPort; + +import java.io.File; import java.io.IOException; import java.util.List; import java.util.concurrent.ExecutionException; @@ -270,6 +272,43 @@ public void testIssue112() { ffExecutor.createJob(builder).run(); } + + @Test + public void testIssue287() throws InterruptedException, ExecutionException, IOException { + FFmpegProbeResult in = ffprobe.probe(Samples.big_buck_bunny_720p_1mb); + assertFalse(in.hasError()); + + String tempDir = System.getProperty("java.io.tmpdir"); + + FFmpegBuilder builder = + new FFmpegBuilder() + .setInput(in) + .done() + .overrideOutputFiles(true) + .addOutput(Samples.output_mp4) + .setFormat("mp4") + .disableAudio() + .setVideoCodec("mpeg4") + .setVideoFrameRate(FFmpeg.FPS_30) + .setVideoResolution(320, 240) + .setTargetSize(1024 * 1024) + .done().setPassDirectory(tempDir); + + FFmpegJob job = ffExecutor.createTwoPassJob(builder); + runAndWait(job); + + assertEquals(FFmpegJob.State.FINISHED, job.getState()); + + File passDir = new File(builder.getPassDirectory()); + String passPrefix = builder.getPassPrefix(); + + File[] remainingFiles = passDir.listFiles((dir, name) -> + name.startsWith(passPrefix) && name.contains(".log") + ); + + assertEquals(true, remainingFiles == null || remainingFiles.length == 0); + } + protected void runAndWait(FFmpegJob job) throws ExecutionException, InterruptedException { executor.submit(job).get(); }