Class ProcessWrapper

  • All Implemented Interfaces:
    java.lang.AutoCloseable
    Direct Known Subclasses:
    FFMPEGProcess

    public class ProcessWrapper
    extends java.lang.Object
    implements java.lang.AutoCloseable
    A ffmpeg process wrapper.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private java.util.ArrayList<java.lang.String> args
      Arguments for the executable.
      private java.io.InputStream errorStream
      A stream reading from the ffmpeg process standard error channel.
      private java.lang.Process ffmpeg
      The process representing the ffmpeg execution.
      private java.lang.String ffmpegExecutablePath
      The path of the ffmpeg executable.
      private ProcessKiller ffmpegKiller
      A process killer to kill the ffmpeg process with a shutdown hook, useful if the jvm execution is shutted down during an ongoing encoding process.
      private java.io.InputStream inputStream
      A stream reading from the ffmpeg process standard output channel.
      private static org.slf4j.Logger LOG  
      private java.io.OutputStream outputStream
      A stream writing in the ffmpeg process standard input channel.
    • Constructor Summary

      Constructors 
      Constructor Description
      ProcessWrapper​(java.lang.String ffmpegExecutablePath)
      It build the executor.
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      void addArgument​(java.lang.String arg)
      Adds an argument to the ffmpeg executable call.
      void close()  
      void destroy()
      If there's a ffmpeg execution in progress, it kills it.
      protected java.util.stream.Stream<java.lang.String> enhanceArguments​(java.util.stream.Stream<java.lang.String> execArgs)
      Provide an opportunity for subclasses to enhance the argument list before passing off to execute.
      void execute()
      Executes the ffmpeg process with the previous given arguments.
      void execute​(boolean destroyOnRuntimeShutdown, boolean openIOStreams)
      Executes the ffmpeg process with the previous given arguments.
      java.io.InputStream getErrorStream()
      Returns a stream reading from the ffmpeg process standard error channel.
      java.io.InputStream getInputStream()
      Returns a stream reading from the ffmpeg process standard output channel.
      java.io.OutputStream getOutputStream()
      Returns a stream writing in the ffmpeg process standard input channel.
      int getProcessExitCode()
      Return the exit code of the ffmpeg process If the process is not yet terminated, it waits for the termination of the process
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • LOG

        private static final org.slf4j.Logger LOG
      • ffmpegExecutablePath

        private final java.lang.String ffmpegExecutablePath
        The path of the ffmpeg executable.
      • args

        private final java.util.ArrayList<java.lang.String> args
        Arguments for the executable.
      • ffmpeg

        private java.lang.Process ffmpeg
        The process representing the ffmpeg execution.
      • ffmpegKiller

        private ProcessKiller ffmpegKiller
        A process killer to kill the ffmpeg process with a shutdown hook, useful if the jvm execution is shutted down during an ongoing encoding process.
      • inputStream

        private java.io.InputStream inputStream
        A stream reading from the ffmpeg process standard output channel.
      • outputStream

        private java.io.OutputStream outputStream
        A stream writing in the ffmpeg process standard input channel.
      • errorStream

        private java.io.InputStream errorStream
        A stream reading from the ffmpeg process standard error channel.
    • Constructor Detail

      • ProcessWrapper

        public ProcessWrapper​(java.lang.String ffmpegExecutablePath)
        It build the executor.
        Parameters:
        ffmpegExecutablePath - The path of the ffmpeg executable.
    • Method Detail

      • addArgument

        public void addArgument​(java.lang.String arg)
        Adds an argument to the ffmpeg executable call.
        Parameters:
        arg - The argument.
      • execute

        public void execute​(boolean destroyOnRuntimeShutdown,
                            boolean openIOStreams)
                     throws java.io.IOException
        Executes the ffmpeg process with the previous given arguments.
        Parameters:
        destroyOnRuntimeShutdown - destroy process if the runtime VM is shutdown
        openIOStreams - Open IO streams for input/output and errorout, should be false when destroyOnRuntimeShutdown is false too
        Throws:
        java.io.IOException - If the process call fails.
      • enhanceArguments

        protected java.util.stream.Stream<java.lang.String> enhanceArguments​(java.util.stream.Stream<java.lang.String> execArgs)
        Provide an opportunity for subclasses to enhance the argument list before passing off to execute.
        Parameters:
        execArgs - The current Stream of arguments
        Returns:
        A possibly enhanced stream of arguments
      • execute

        public void execute()
                     throws java.io.IOException
        Executes the ffmpeg process with the previous given arguments. Default to kill processes when the JVM terminates, and the various IOStreams are opened as required
        Throws:
        java.io.IOException - If the process call fails.
      • getInputStream

        public java.io.InputStream getInputStream()
        Returns a stream reading from the ffmpeg process standard output channel.
        Returns:
        A stream reading from the ffmpeg process standard output channel.
      • getOutputStream

        public java.io.OutputStream getOutputStream()
        Returns a stream writing in the ffmpeg process standard input channel.
        Returns:
        A stream writing in the ffmpeg process standard input channel.
      • getErrorStream

        public java.io.InputStream getErrorStream()
        Returns a stream reading from the ffmpeg process standard error channel.
        Returns:
        A stream reading from the ffmpeg process standard error channel.
      • destroy

        public void destroy()
        If there's a ffmpeg execution in progress, it kills it.
      • getProcessExitCode

        public int getProcessExitCode()
        Return the exit code of the ffmpeg process If the process is not yet terminated, it waits for the termination of the process
        Returns:
        process exit code
      • close

        public void close()
        Specified by:
        close in interface java.lang.AutoCloseable