      def extract(input_=None, output=None, fps=None, extract_ext=None, start=None, duration=None,
                  **kwargs):
          _input_opts = Effmpeg._common_ffmpeg_args[:]
          if start is not None and duration is not None:
              _input_opts += '-ss {} -t {}'.format(start, duration)
          _input = {input_.path: _input_opts}
          _output_opts = '-y -vf fps="' + str(fps) + '" -q:v 1'
 
</s> remove     def extract(input_=None, output=None, fps=None, extract_ext=None,
 </s> add     def extract(input_=None, output=None, fps=None, extract_ext=None, start=None, duration=None, </s> remove             except ValueError as ve:
 </s> add             except ValueError:
        """ Extract video to image frames """
        logger.debug("input_: %s, output: %s, fps: %s, extract_ext: '%s', start: %s, duration: %s",
                     input_, output, fps, extract_ext, start, duration)
      def extract(input_=None, output=None, fps=None, extract_ext=None, start=None, duration=None,
                  **kwargs):
        """ Extract video to image frames """
        logger.debug("input_: %s, output: %s, fps: %s, extract_ext: '%s', start: %s, duration: %s",
                     input_, output, fps, extract_ext, start, duration)
          _input_opts = Effmpeg._common_ffmpeg_args[:]
          if start is not None and duration is not None:
              _input_opts += '-ss {} -t {}'.format(start, duration)
          _input = {input_.path: _input_opts}
          _output_opts = '-y -vf fps="' + str(fps) + '" -q:v 1'
keep add keep keep keep keep keep
 Fix duration for effmpeg extract 
tools/effmpeg.py