@@ -569,7 +569,7 @@ <h1>ffmpeg-python: Python bindings for FFmpeg<a class="headerlink" href="#ffmpeg
569569< dl  class ="function "> 
570570< dt  id ="ffmpeg.run "> 
571571< code  class ="descclassname "> ffmpeg.</ code > < code  class ="descname "> run</ code > < span  class ="sig-paren "> (</ span > < em > stream_spec</ em > , < em > cmd='ffmpeg'</ em > , < em > capture_stdout=False</ em > , < em > capture_stderr=False</ em > , < em > input=None</ em > , < em > quiet=False</ em > , < em > overwrite_output=False</ em > < span  class ="sig-paren "> )</ span > < a  class ="headerlink " href ="#ffmpeg.run " title ="Permalink to this definition "> ¶</ a > </ dt > 
572- < dd > < p > Ivoke  ffmpeg for the supplied node graph.</ p > 
572+ < dd > < p > Invoke  ffmpeg for the supplied node graph.</ p > 
573573< table  class ="docutils field-list " frame ="void " rules ="none "> 
574574< col  class ="field-name " /> 
575575< col  class ="field-body " /> 
@@ -591,14 +591,101 @@ <h1>ffmpeg-python: Python bindings for FFmpeg<a class="headerlink" href="#ffmpeg
591591< p > Returns: (out, err) tuple containing captured stdout and stderr data.</ p > 
592592</ dd > </ dl > 
593593
594+ < dl  class ="function "> 
595+ < dt  id ="ffmpeg.run_async "> 
596+ < code  class ="descclassname "> ffmpeg.</ code > < code  class ="descname "> run_async</ code > < span  class ="sig-paren "> (</ span > < em > stream_spec</ em > , < em > cmd='ffmpeg'</ em > , < em > pipe_stdin=False</ em > , < em > pipe_stdout=False</ em > , < em > pipe_stderr=False</ em > , < em > quiet=False</ em > , < em > overwrite_output=False</ em > < span  class ="sig-paren "> )</ span > < a  class ="headerlink " href ="#ffmpeg.run_async " title ="Permalink to this definition "> ¶</ a > </ dt > 
597+ < dd > < p > Asynchronously invoke ffmpeg for the supplied node graph.</ p > 
598+ < table  class ="docutils field-list " frame ="void " rules ="none "> 
599+ < col  class ="field-name " /> 
600+ < col  class ="field-body " /> 
601+ < tbody  valign ="top "> 
602+ < tr  class ="field-odd field "> < th  class ="field-name "> Parameters:</ th > < td  class ="field-body "> < ul  class ="first simple "> 
603+ < li > < strong > pipe_stdin</ strong >  – if True, connect pipe to subprocess stdin (to be
604+ used with < code  class ="docutils literal notranslate "> < span  class ="pre "> pipe:</ span > </ code >  ffmpeg inputs).</ li > 
605+ < li > < strong > pipe_stdout</ strong >  – if True, connect pipe to subprocess stdout (to be
606+ used with < code  class ="docutils literal notranslate "> < span  class ="pre "> pipe:</ span > </ code >  ffmpeg outputs).</ li > 
607+ < li > < strong > pipe_stderr</ strong >  – if True, connect pipe to subprocess stderr.</ li > 
608+ < li > < strong > quiet</ strong >  – shorthand for setting < code  class ="docutils literal notranslate "> < span  class ="pre "> capture_stdout</ span > </ code >  and
609+ < code  class ="docutils literal notranslate "> < span  class ="pre "> capture_stderr</ span > </ code > .</ li > 
610+ < li > < strong > **kwargs</ strong >  – keyword-arguments passed to < code  class ="docutils literal notranslate "> < span  class ="pre "> get_args()</ span > </ code >  (e.g.
611+ < code  class ="docutils literal notranslate "> < span  class ="pre "> overwrite_output=True</ span > </ code > ).</ li > 
612+ </ ul > 
613+ </ td > 
614+ </ tr > 
615+ < tr  class ="field-even field "> < th  class ="field-name "> Returns:</ th > < td  class ="field-body "> < p  class ="first last "> A < a  class ="reference external " href ="https://docs.python.org/3/library/subprocess.html#popen-objects "> subprocess Popen</ a >  object representing the child process.</ p > 
616+ </ td > 
617+ </ tr > 
618+ </ tbody > 
619+ </ table > 
620+ < p  class ="rubric "> Examples</ p > 
621+ < p > Run and stream input:</ p > 
622+ < div  class ="highlight-default notranslate "> < div  class ="highlight "> < pre > < span > </ span > < span  class ="n "> process</ span >  < span  class ="o "> =</ span >  < span  class ="p "> (</ span > 
623+     < span  class ="n "> ffmpeg</ span > 
624+     < span  class ="o "> .</ span > < span  class ="n "> input</ span > < span  class ="p "> (</ span > < span  class ="s1 "> 'pipe:'</ span > < span  class ="p "> ,</ span >  < span  class ="nb "> format</ span > < span  class ="o "> =</ span > < span  class ="s1 "> 'rawvideo'</ span > < span  class ="p "> ,</ span >  < span  class ="n "> pix_fmt</ span > < span  class ="o "> =</ span > < span  class ="s1 "> 'rgb24'</ span > < span  class ="p "> ,</ span >  < span  class ="n "> s</ span > < span  class ="o "> =</ span > < span  class ="s1 "> '</ span > < span  class ="si "> {}</ span > < span  class ="s1 "> x</ span > < span  class ="si "> {}</ span > < span  class ="s1 "> '</ span > < span  class ="o "> .</ span > < span  class ="n "> format</ span > < span  class ="p "> (</ span > < span  class ="n "> width</ span > < span  class ="p "> ,</ span >  < span  class ="n "> height</ span > < span  class ="p "> ))</ span > 
625+     < span  class ="o "> .</ span > < span  class ="n "> output</ span > < span  class ="p "> (</ span > < span  class ="n "> out_filename</ span > < span  class ="p "> ,</ span >  < span  class ="n "> pix_fmt</ span > < span  class ="o "> =</ span > < span  class ="s1 "> 'yuv420p'</ span > < span  class ="p "> )</ span > 
626+     < span  class ="o "> .</ span > < span  class ="n "> overwrite_output</ span > < span  class ="p "> ()</ span > 
627+     < span  class ="o "> .</ span > < span  class ="n "> run_async</ span > < span  class ="p "> (</ span > < span  class ="n "> pipe_stdin</ span > < span  class ="o "> =</ span > < span  class ="kc "> True</ span > < span  class ="p "> )</ span > 
628+ < span  class ="p "> )</ span > 
629+ < span  class ="n "> process</ span > < span  class ="o "> .</ span > < span  class ="n "> communicate</ span > < span  class ="p "> (</ span > < span  class ="nb "> input</ span > < span  class ="o "> =</ span > < span  class ="n "> input_data</ span > < span  class ="p "> )</ span > 
630+ </ pre > </ div > 
631+ </ div > 
632+ < p > Run and capture output:</ p > 
633+ < div  class ="highlight-default notranslate "> < div  class ="highlight "> < pre > < span > </ span > < span  class ="n "> process</ span >  < span  class ="o "> =</ span >  < span  class ="p "> (</ span > 
634+     < span  class ="n "> ffmpeg</ span > 
635+     < span  class ="o "> .</ span > < span  class ="n "> input</ span > < span  class ="p "> (</ span > < span  class ="n "> in_filename</ span > < span  class ="p "> )</ span > 
636+     < span  class ="o "> .</ span > < span  class ="n "> output</ span > < span  class ="p "> (</ span > < span  class ="s1 "> 'pipe'</ span > < span  class ="p "> :,</ span >  < span  class ="nb "> format</ span > < span  class ="o "> =</ span > < span  class ="s1 "> 'rawvideo'</ span > < span  class ="p "> ,</ span >  < span  class ="n "> pix_fmt</ span > < span  class ="o "> =</ span > < span  class ="s1 "> 'rgb24'</ span > < span  class ="p "> )</ span > 
637+     < span  class ="o "> .</ span > < span  class ="n "> run_async</ span > < span  class ="p "> (</ span > < span  class ="n "> pipe_stdout</ span > < span  class ="o "> =</ span > < span  class ="kc "> True</ span > < span  class ="p "> ,</ span >  < span  class ="n "> pipe_stderr</ span > < span  class ="o "> =</ span > < span  class ="kc "> True</ span > < span  class ="p "> )</ span > 
638+ < span  class ="p "> )</ span > 
639+ < span  class ="n "> out</ span > < span  class ="p "> ,</ span >  < span  class ="n "> err</ span >  < span  class ="o "> =</ span >  < span  class ="n "> process</ span > < span  class ="o "> .</ span > < span  class ="n "> communicate</ span > < span  class ="p "> ()</ span > 
640+ </ pre > </ div > 
641+ </ div > 
642+ < p > Process video frame-by-frame using numpy:</ p > 
643+ < div  class ="highlight-default notranslate "> < div  class ="highlight "> < pre > < span > </ span > < span  class ="n "> process1</ span >  < span  class ="o "> =</ span >  < span  class ="p "> (</ span > 
644+     < span  class ="n "> ffmpeg</ span > 
645+     < span  class ="o "> .</ span > < span  class ="n "> input</ span > < span  class ="p "> (</ span > < span  class ="n "> in_filename</ span > < span  class ="p "> )</ span > 
646+     < span  class ="o "> .</ span > < span  class ="n "> output</ span > < span  class ="p "> (</ span > < span  class ="s1 "> 'pipe:'</ span > < span  class ="p "> ,</ span >  < span  class ="nb "> format</ span > < span  class ="o "> =</ span > < span  class ="s1 "> 'rawvideo'</ span > < span  class ="p "> ,</ span >  < span  class ="n "> pix_fmt</ span > < span  class ="o "> =</ span > < span  class ="s1 "> 'rgb24'</ span > < span  class ="p "> )</ span > 
647+     < span  class ="o "> .</ span > < span  class ="n "> run_async</ span > < span  class ="p "> (</ span > < span  class ="n "> pipe_stdout</ span > < span  class ="o "> =</ span > < span  class ="kc "> True</ span > < span  class ="p "> )</ span > 
648+ < span  class ="p "> )</ span > 
649+ 
650+ < span  class ="n "> process2</ span >  < span  class ="o "> =</ span >  < span  class ="p "> (</ span > 
651+     < span  class ="n "> ffmpeg</ span > 
652+     < span  class ="o "> .</ span > < span  class ="n "> input</ span > < span  class ="p "> (</ span > < span  class ="s1 "> 'pipe:'</ span > < span  class ="p "> ,</ span >  < span  class ="nb "> format</ span > < span  class ="o "> =</ span > < span  class ="s1 "> 'rawvideo'</ span > < span  class ="p "> ,</ span >  < span  class ="n "> pix_fmt</ span > < span  class ="o "> =</ span > < span  class ="s1 "> 'rgb24'</ span > < span  class ="p "> ,</ span >  < span  class ="n "> s</ span > < span  class ="o "> =</ span > < span  class ="s1 "> '</ span > < span  class ="si "> {}</ span > < span  class ="s1 "> x</ span > < span  class ="si "> {}</ span > < span  class ="s1 "> '</ span > < span  class ="o "> .</ span > < span  class ="n "> format</ span > < span  class ="p "> (</ span > < span  class ="n "> width</ span > < span  class ="p "> ,</ span >  < span  class ="n "> height</ span > < span  class ="p "> ))</ span > 
653+     < span  class ="o "> .</ span > < span  class ="n "> output</ span > < span  class ="p "> (</ span > < span  class ="n "> out_filename</ span > < span  class ="p "> ,</ span >  < span  class ="n "> pix_fmt</ span > < span  class ="o "> =</ span > < span  class ="s1 "> 'yuv420p'</ span > < span  class ="p "> )</ span > 
654+     < span  class ="o "> .</ span > < span  class ="n "> overwrite_output</ span > < span  class ="p "> ()</ span > 
655+     < span  class ="o "> .</ span > < span  class ="n "> run_async</ span > < span  class ="p "> (</ span > < span  class ="n "> pipe_stdin</ span > < span  class ="o "> =</ span > < span  class ="kc "> True</ span > < span  class ="p "> )</ span > 
656+ < span  class ="p "> )</ span > 
657+ 
658+ < span  class ="k "> while</ span >  < span  class ="kc "> True</ span > < span  class ="p "> :</ span > 
659+     < span  class ="n "> in_bytes</ span >  < span  class ="o "> =</ span >  < span  class ="n "> process1</ span > < span  class ="o "> .</ span > < span  class ="n "> stdout</ span > < span  class ="o "> .</ span > < span  class ="n "> read</ span > < span  class ="p "> (</ span > < span  class ="n "> width</ span >  < span  class ="o "> *</ span >  < span  class ="n "> height</ span >  < span  class ="o "> *</ span >  < span  class ="mi "> 3</ span > < span  class ="p "> )</ span > 
660+     < span  class ="k "> if</ span >  < span  class ="ow "> not</ span >  < span  class ="n "> in_bytes</ span > < span  class ="p "> :</ span > 
661+         < span  class ="k "> break</ span > 
662+     < span  class ="n "> in_frame</ span >  < span  class ="o "> =</ span >  < span  class ="p "> (</ span > 
663+         < span  class ="n "> np</ span > 
664+         < span  class ="o "> .</ span > < span  class ="n "> frombuffer</ span > < span  class ="p "> (</ span > < span  class ="n "> in_bytes</ span > < span  class ="p "> ,</ span >  < span  class ="n "> np</ span > < span  class ="o "> .</ span > < span  class ="n "> uint8</ span > < span  class ="p "> )</ span > 
665+         < span  class ="o "> .</ span > < span  class ="n "> reshape</ span > < span  class ="p "> ([</ span > < span  class ="n "> height</ span > < span  class ="p "> ,</ span >  < span  class ="n "> width</ span > < span  class ="p "> ,</ span >  < span  class ="mi "> 3</ span > < span  class ="p "> ])</ span > 
666+     < span  class ="p "> )</ span > 
667+     < span  class ="n "> out_frame</ span >  < span  class ="o "> =</ span >  < span  class ="n "> in_frame</ span >  < span  class ="o "> *</ span >  < span  class ="mf "> 0.3</ span > 
668+     < span  class ="n "> process2</ span > < span  class ="o "> .</ span > < span  class ="n "> stdin</ span > < span  class ="o "> .</ span > < span  class ="n "> write</ span > < span  class ="p "> (</ span > 
669+         < span  class ="n "> frame</ span > 
670+         < span  class ="o "> .</ span > < span  class ="n "> astype</ span > < span  class ="p "> (</ span > < span  class ="n "> np</ span > < span  class ="o "> .</ span > < span  class ="n "> uint8</ span > < span  class ="p "> )</ span > 
671+         < span  class ="o "> .</ span > < span  class ="n "> tobytes</ span > < span  class ="p "> ()</ span > 
672+     < span  class ="p "> )</ span > 
673+ 
674+ < span  class ="n "> process2</ span > < span  class ="o "> .</ span > < span  class ="n "> stdin</ span > < span  class ="o "> .</ span > < span  class ="n "> close</ span > < span  class ="p "> ()</ span > 
675+ < span  class ="n "> process1</ span > < span  class ="o "> .</ span > < span  class ="n "> wait</ span > < span  class ="p "> ()</ span > 
676+ < span  class ="n "> process2</ span > < span  class ="o "> .</ span > < span  class ="n "> wait</ span > < span  class ="p "> ()</ span > 
677+ </ pre > </ div > 
678+ </ div > 
679+ </ dd > </ dl > 
680+ 
594681< dl  class ="function "> 
595682< dt  id ="ffmpeg.view "> 
596683< code  class ="descclassname "> ffmpeg.</ code > < code  class ="descname "> view</ code > < span  class ="sig-paren "> (</ span > < em > stream_spec</ em > , < em > detail=False</ em > , < em > filename=None</ em > , < em > pipe=False</ em > , < em > **kwargs</ em > < span  class ="sig-paren "> )</ span > < a  class ="headerlink " href ="#ffmpeg.view " title ="Permalink to this definition "> ¶</ a > </ dt > 
597684< dd > </ dd > </ dl > 
598685
599686< dl  class ="function "> 
600687< dt  id ="ffmpeg.probe "> 
601- < code  class ="descclassname "> ffmpeg.</ code > < code  class ="descname "> probe</ code > < span  class ="sig-paren "> (</ span > < em > filename</ em > < span  class ="sig-paren "> )</ span > < a  class ="headerlink " href ="#ffmpeg.probe " title ="Permalink to this definition "> ¶</ a > </ dt > 
688+ < code  class ="descclassname "> ffmpeg.</ code > < code  class ="descname "> probe</ code > < span  class ="sig-paren "> (</ span > < em > filename</ em > ,  < em > cmd='ffprobe' </ em > < span  class ="sig-paren "> )</ span > < a  class ="headerlink " href ="#ffmpeg.probe " title ="Permalink to this definition "> ¶</ a > </ dt > 
602689< dd > < p > Run ffprobe on the specified file and return a JSON representation of the output.</ p > 
603690< table  class ="docutils field-list " frame ="void " rules ="none "> 
604691< col  class ="field-name " /> 
0 commit comments