diff --git a/ffmpeg/_run.py b/ffmpeg/_run.py index eadb90a4..9d17de69 100644 --- a/ffmpeg/_run.py +++ b/ffmpeg/_run.py @@ -172,7 +172,7 @@ def get_args(stream_spec, overwrite_output=False): @output_operator() -def compile(stream_spec, cmd='ffmpeg', overwrite_output=False): +def compile(stream_spec, cmd='ffmpeg', overwrite_output=False,timeout=-1): """Build command-line for invoking ffmpeg. The :meth:`run` function uses this to build the command line @@ -187,6 +187,9 @@ def compile(stream_spec, cmd='ffmpeg', overwrite_output=False): cmd = [cmd] elif type(cmd) != list: cmd = list(cmd) + if timeout >0: + cmd.insert(0,'%d'%timeout) + cmd.insert(0,'timeout') return cmd + get_args(stream_spec, overwrite_output=overwrite_output) @@ -199,7 +202,8 @@ def run_async( pipe_stderr=False, quiet=False, overwrite_output=False, - cwd=None + cwd=None, + timeout=-1 ): """Asynchronously invoke ffmpeg for the supplied node graph. @@ -278,7 +282,7 @@ def run_async( .. _subprocess Popen: https://docs.python.org/3/library/subprocess.html#popen-objects """ - args = compile(stream_spec, cmd, overwrite_output=overwrite_output) + args = compile(stream_spec, cmd, overwrite_output=overwrite_output,timeout=timeout) stdin_stream = subprocess.PIPE if pipe_stdin else None stdout_stream = subprocess.PIPE if pipe_stdout else None stderr_stream = subprocess.PIPE if pipe_stderr else None @@ -300,7 +304,8 @@ def run( input=None, quiet=False, overwrite_output=False, - cwd=None + cwd=None, + timeout=-1 ): """Invoke ffmpeg for the supplied node graph. @@ -324,7 +329,8 @@ def run( pipe_stderr=capture_stderr, quiet=quiet, overwrite_output=overwrite_output, - cwd=cwd + cwd=cwd, + timeout=timeout ) out, err = process.communicate(input) retcode = process.poll()