@@ -569,7 +569,7 @@ <h1>ffmpeg-python: Python bindings for FFmpeg<a class="headerlink" href="#ffmpeg
569
569
< dl class ="function ">
570
570
< dt id ="ffmpeg.run ">
571
571
< 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 >
573
573
< table class ="docutils field-list " frame ="void " rules ="none ">
574
574
< col class ="field-name " />
575
575
< col class ="field-body " />
@@ -591,14 +591,101 @@ <h1>ffmpeg-python: Python bindings for FFmpeg<a class="headerlink" href="#ffmpeg
591
591
< p > Returns: (out, err) tuple containing captured stdout and stderr data.</ p >
592
592
</ dd > </ dl >
593
593
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
F438
+ < 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
+
594
681
< dl class ="function ">
595
682
< dt id ="ffmpeg.view ">
596
683
< 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 >
597
684
< dd > </ dd > </ dl >
598
685
599
686
< dl class ="function ">
600
687
< 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 >
602
689
< dd > < p > Run ffprobe on the specified file and return a JSON representation of the output.</ p >
603
690
< table class ="docutils field-list " frame ="void " rules ="none ">
604
691
< col class ="field-name " />
0 commit comments