diff --git a/src/zutil/osal/app/ffmpeg/FFmpegInput.java b/src/zutil/osal/app/ffmpeg/FFmpegInput.java index 873851c..f25d0a8 100644 --- a/src/zutil/osal/app/ffmpeg/FFmpegInput.java +++ b/src/zutil/osal/app/ffmpeg/FFmpegInput.java @@ -24,6 +24,12 @@ package zutil.osal.app.ffmpeg; +import zutil.StringUtil; + +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + /** * Class includes data related to a single input into FFmpeg */ @@ -34,6 +40,7 @@ public class FFmpegInput { private Float duration; private Float positionStart; private Float positionEnd; + private List additionalArgs = new ArrayList<>(); // Audio Options @@ -77,6 +84,13 @@ public class FFmpegInput { this.positionEnd = position; } + /** + * Add additional args that may not be supported by the API, these values will be inserted to the command line as is. + */ + public void addAdditionalArg(String... args) { + additionalArgs.addAll(Arrays.asList(args)); + } + // ---------------------------------------------------- // Audio Options // ---------------------------------------------------- @@ -135,6 +149,7 @@ public class FFmpegInput { if (!subtitleEnabled) command.append(" -sn"); + command.append(StringUtil.join(" ", additionalArgs)); command.append(" -i ").append(input); return command.toString().trim(); } diff --git a/src/zutil/osal/app/ffmpeg/FFmpegOutput.java b/src/zutil/osal/app/ffmpeg/FFmpegOutput.java index c985a2d..8c86378 100644 --- a/src/zutil/osal/app/ffmpeg/FFmpegOutput.java +++ b/src/zutil/osal/app/ffmpeg/FFmpegOutput.java @@ -24,10 +24,15 @@ package zutil.osal.app.ffmpeg; +import zutil.StringUtil; import zutil.osal.app.ffmpeg.FFmpegConstants.FFmpegAudioCodec; import zutil.osal.app.ffmpeg.FFmpegConstants.FFmpegSubtitleCodec; import zutil.osal.app.ffmpeg.FFmpegConstants.FFmpegVideoCodec; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; + /** * Class includes data related to a single output from FFmpeg */ @@ -40,6 +45,7 @@ public class FFmpegOutput { private Float positionEnd; private Long fileSize; private Integer encodingPass; + private List additionalArgs = new ArrayList<>(); // Video Options @@ -115,6 +121,13 @@ public class FFmpegOutput { this.encodingPass = pass; } + /** + * Add additional args that may not be supported by the API, these values will be inserted to the command line as is. + */ + public void addAdditionalArg(String... args) { + additionalArgs.addAll(Arrays.asList(args)); + } + // ---------------------------------------------------- // Video Options // ---------------------------------------------------- @@ -336,6 +349,7 @@ public class FFmpegOutput { if (!subtitleEnabled) command.append(" -sn"); + command.append(StringUtil.join(" ", additionalArgs)); command.append(' ').append(output); return command.toString().trim(); }