@@ -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