From ce3346125951cb40028552442022e645ad65a270 Mon Sep 17 00:00:00 2001 From: Nitay Megides Date: Fri, 27 Jul 2018 04:31:32 +0300 Subject: [PATCH 01/60] Added an option to return immediately from run() so you could process the output of ffmpeg while it's processing --- README.md | 21 +++++++++++++++++++++ ffmpeg/_run.py | 22 +++++++++++++++------- 2 files changed, 36 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 56e378f3..18ac9fc1 100644 --- a/README.md +++ b/README.md @@ -32,6 +32,27 @@ import ffmpeg ) ``` +You could also use pipes to direct the output of ffmpeg to a socket, a file or for processing in python +```python +import ffmpeg +out, err, subproc = ( + ffmpeg + .input('rtsp://%s:8554/default') + .output('-', format='h264') + # wait=False means run() returns immediately and does not wait for ffmpeg process to end + .run(capture_stdout=True, wait=False) +) + +packet_size = 4096 +while subproc.poll() is None: + out_packet = out.read(packet_size) + try: + tcp_socket.send(out_packet) + except socket.error as e: + return +``` + + ## Complex filter graphs FFmpeg is extremely powerful, but its command-line interface gets really complicated really quickly - especially when working with signal graphs and doing anything more than trivial. diff --git a/ffmpeg/_run.py b/ffmpeg/_run.py index 87e44ff6..8aabe5e3 100644 --- a/ffmpeg/_run.py +++ b/ffmpeg/_run.py @@ -186,7 +186,7 @@ def compile(stream_spec, cmd='ffmpeg', overwrite_output=False): @output_operator() def run( stream_spec, cmd='ffmpeg', capture_stdout=False, capture_stderr=False, input=None, - quiet=False, overwrite_output=False): + quiet=False, overwrite_output=False, wait=True): """Ivoke ffmpeg for the supplied node graph. Args: @@ -196,21 +196,29 @@ def run( quiet: shorthand for setting ``capture_stdout`` and ``capture_stderr``. input: text to be sent to stdin (to be used with ``pipe:`` ffmpeg inputs) + wait: wait until the ffmpeg process is done before returning. If you're using pipes, you might + want this False **kwargs: keyword-arguments passed to ``get_args()`` (e.g. ``overwrite_output=True``). - Returns: (out, err) tuple containing captured stdout and stderr data. + Returns: If wait is True (default), this function returns (out, err) tuple containing captured stdout and stderr data. + If wait is False, this function returns (out, err, popen) tuple containing the subprocess handle as well """ args = compile(stream_spec, cmd, overwrite_output=overwrite_output) stdin_stream = subprocess.PIPE if input else None stdout_stream = subprocess.PIPE if capture_stdout or quiet else None stderr_stream = subprocess.PIPE if capture_stderr or quiet else None p = subprocess.Popen(args, stdin=stdin_stream, stdout=stdout_stream, stderr=stderr_stream) - out, err = p.communicate(input) - retcode = p.poll() - if retcode: - raise Error('ffmpeg', out, err) - return out, err + if wait: + out, err = p.communicate(input) + retcode = p.poll() + if retcode: + raise Error('ffmpeg', out, err) + return out, err + else: + out = p.stdout + err = p.stderr + return out, err, p __all__ = [ From 848f87da4ea7e1039468e50626e2d090f3517510 Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Sun, 25 Nov 2018 03:47:49 -0600 Subject: [PATCH 02/60] Add numpy_stream example --- examples/graphs/tensorflow-stream.png | Bin 0 -> 6005 bytes examples/tensorflow_stream.py | 248 ++++++++++++++++++++++++++ 2 files changed, 248 insertions(+) create mode 100644 examples/graphs/tensorflow-stream.png create mode 100644 examples/tensorflow_stream.py diff --git a/examples/graphs/tensorflow-stream.png b/examples/graphs/tensorflow-stream.png new file mode 100644 index 0000000000000000000000000000000000000000..e5047a168e7b79742750bf3f176907cd6c994110 GIT binary patch literal 6005 zcmbtYX*`r|)K5i4BGFi~LaWzCjtY%|He4zio< zjIqqbU@(mL_B_vr_w)OHnK|eBUCVu)>wlL2iF&N3$w<#hf9ljJMy-eH2B%KZ909WD z`P0Dfs7j{YsZ$_jE%kdw{*xOSLC=jwCOc~BJB=S-U}a`z(_lU8PLp$*ZF*p_fac{a zx7KCwg-`V1+OJ=zVsEiAstBc~nSFY-$i~K0koparnln!mXOO>My*)zakl$GD{gC>m zxye2RjXA8?O{=!AaW0whQ*rKVNeZC9$9xw5iQSv#>^){A6QI1IF#n&$SqQN7ETL!6 z9ew1B>(AKR^XKB?S_UsIEgc<_FxJ-Ay>Nz|;8HlLPu}sG`*h>}Z1Wk$z7owio{jOgxE-DgL zRt_G>x>sFY%{kw5L?K5q@#OugoK2_ zvB?{0GOS>Sci>`^G9hGE!Uz{=^)BNF1`YQWYw>h(C=|-MNbOCPc6M?a7@TCa7=-5IhGl1A8CvCCo1J|PeG~l+6dHMn zyFPgThx*Yz3DPuB7_hAwlIZ-hSvLTOy+7bMb&b0aWy9= z-4qq=9v!{9CW$o7ovd-?vPg-Kk1s5AZ1CNvDV8BOgN&?{BuDCB(%`{D{*+LPAt36$G|iTs1T>D472BE7VTa zz<>n?MwS&V`h=*fx2D{-X*H)ich2xjA_C#&=s1Cb1tr@T6&Kso!SO@iE?g1v-k9_` z+}qrCoEKik;h3%|42+Mb(1}S%#NL8oW~@Dg(Df*3%}*(<0h+} zXM%`#)4W>W5z)tpbcyBVWm;NVTU%Q&YH$AUT+774&f3@-9zR&e#>SQ|=NdQ{4ochc z;_`xz6d8w(XCzPT%ft>#1774JO@9ji7g+N4^}xVm0fF2wjQXWlDsLXh$;tWlB#95V z{LXu{0LhFnx3bEdymmM6^MGpk?0V6jdfx|z=eHa{3EJA)1<#&5dBO$dh1a&>7vfa% zP*<4-Za6vIVq|2DVqL%fXHg_iDQNdr(8~IHZ|WB_gV!E&zi4+o0N`xj>FVlQzpjxi zZP)vv2e|jQT2V2v3-an8FAF^In4#`YxsyInn0O(qXUVp{Q~*Jp1;aMa$Kv;wHb~wp z1J;z?jrBQfotL8n($8_PH8P4>zx+jI5o@OZQa4-Q5x4B2*mF?k9j}O|JoC+vd00pv z`=+avSq~Gp;%6mqFE55mmy#wv zGwZ;g{jDrB@z=fZ;CGRYp+^D$AY)IgpJhVbLX!RouuHr z5?4#3(fi9>Vq(RBU)0-Iag!^g$LXZ=YHE_~dVhs85UGh4e-GBm;5YJmlEEg%#!s3Q zOh=Ycu{fgG%3-c%+>lCkdHKh8`s%2VqxvGOeWZwpNK_E{=bJM|l>ww>ySlhT7}E59 zM;ved&YRvTxh*oSiVcLaE`4y#ZRXVg61Tu@QAP_sYc?fIEAkNL* z_FQ~uVlvj*`4Fo5dor^J@$|JjeYdWzu4TXy8{rQSW)BW+I$~veV27m)py*-%i@@Ws zOeuZ&hz56ZsAb=K`I4XU5dS;>=mDYSh8RB7~t)mOWOYa3Km0&_Vd$2|9n$sYHAl`H)(VXD-yK3p3O-= zk+uYBP~h9Px3{0E_bEmq#|H=F8%uhlW+BgSl}=RJSIU2Cf=7Me8TPu3#6)x0*xG6| zD`>=XD|++EyfcjWoR;R~<~Chwp>*cV86_npf=OOgRn=gwrv4X&_}4#NCZwDMh)$X@ z?AJFB-OM6G!F|3|eU&5iVIHYh@6=Ns$*ABoifOC<>4&=|aV2|5d0sggZ-@gLR8yypKkzQ9XL$TT$Z@{^C zco=L6wR*R&%#vfPK)Zu=Y7!3z9z6w&)m$zUsse%}6BCm$X0kDW1i(Us({%>b6c(nY zt^HozY0L{3&9_Bn^A3T*?l!S;aZ#R2T->L4+@6Q6lr|%+xzP|Kr^YG~0M_;Yn`y5EeBl&fO@VCOjiVt?xjcWn^wQ&a-^=P- zua$>YM_ri#FdKXw*!*O{Jj{c4GX%&N!uu!7LGLTP?1F`BWzyJ{ ze7_?QmX99~067f4zm%MWk#vqk4W?$|^{63G=xy#@;*5%zm`_9=(>#3&K2|r7ra(M^V<*q|aLx78bJnHSmeB4S|7c=b19Pahp3kwn_t7 ztg@(RQGLCc79nVR(?TgoGaahpzj(+|cFVrUtP2JOB_}3A^}{&iTuiO4uZ#Da{W^N; zR~xElNSHTY{SM(lRgMuHdw)qnA{1*we+RJ6d@|8D^iCbK$y#uQ4-x;nji#9;L z=@#ZNDQ1#3{Hfb5x@hZ|IziIp7MiP9--d2avfVDm{!{{No#u_y>3rpV+ zdEvr^`8eGiRh#}VcYs{|-ae(6oU-rOaBeR~TCVc%#gtF5b(7K%E$U@j#!*5s{;tE@ z_`~+LdCS0VX$tgAiI zHK1npm~Q)8h%!Y!8}N?CTacUHCYCiW69C-OeJXTkpoFBc7aNc~GGBYA(JQCYA$QIz zh^$z(M5I55-81-XeX$AOoziq0be%{8GEi8)>}_0s#ZpMi=_GeWMQZ}*-LTl@q(3Da z86=GIr*dEKcF2$X!tkY(&b{rH;~c|+CFh>Xv}(BS?sZ&quG)epEDVR&ZUm!PzIxg_ z+XbGk^i;~V|9K;^)4|12EKRjXKB|4B>qAtR^>UL~nr=XTI_J2;Z3a2XiaK4BbhJGt zq9v!+;L>|YqcKuH`)ycQ*tRsOv8gHg{rknf6Qs-Ol`_b!f9Si59choxm8-=Fl+pC{ z6zWJhJW~zt{F;-8|72M2q?zbJB6lSWaXUCW_e>kwdLEmO!Vkvl+9H>@^^QT@ECI>7 zeS3-|9=1>X(Z~X9y;s~@JnfVT;#<19){tK!t$v{Cj)dufj|PF4GIp%)TF_qCk!7OU zD>60km(a+fc4lF|mfDr!=8XS*bw>n7`$xx;M`}YBtzje->V-`XP?Sxl4jBZ>3+EYG zVP13>&>BrQ&cC(Kj6dByQ&v(UD=VAG&T94t;7h(h0;hj|>$l&Rh9y~#otJqMm&F+h zm{Ye+-X*nspUnQ}skHK0jUf0rWrx;cFS*aMy+O6DKL_?o=HWlwQ+-0_`k3M>ZFS7^ zH72ZHaZ}iW9QRTw>tBqM-`G^lMVOjGlZR@peU_|pmn~XEdUyon8 z!!#cFO9n<8#FUksPby$OW+!;p+k05aH;eIm>Nd7Q;(CAM#qE{+6u*LVS`dFM3UqOv zAb~y@P1NbMU%&3tN+jWxpadQHPDLTl&D9LuEgm5Uo(1l&!w~%*3Ckf7^?)KP^s(^n zz=YRl_`?`wf?;#BZFw(@$CD6a%v)~jxyHrC^!N?`fxSb0_D?D+wUT%IJr<-&MV%$r z{ZNBXU~!!6X_A{7Irsacj^`m`eEd&XUp{`56BGNO_b)UjIakbPBrLTmYlj>lq>p(1 z^l7`Rp$vuMsy_d;eqYDSs-EVNf|-TlE^jv~f-b`89u>6>iObKo2W$(2HO(KvVkr~R zs4Nc@dg1Xdn}Uo{AP9wSVNRl`I~CRbDF622%O&|+MD=m7F^216KNJ0Sa{p&3S!5ZzG!Fg%j-P%hQz59Bhlp)5e zw$VvDu}A5aYG=&Tp!uzBI*Q>r?gEA+G47!Jte@Tu)HnP1{mMQiZGoE7nKyvQiFzmd2+Ra;pGbK2d1PqD=Z@Vo zbMvxil@It!3^@pKQ873-qEsD5*0k=(g|f?S!1QM{?+^yiS~m_J7MA<9x`OaAK|}=(g zv9E0NCu&~2#(U+9cK-RB@XQBqbWB%9ia{mMZ3S=1EWGUZ+d`h4o#8lx(7HS9gkBSc zZhq2>n&Ri|X0&BopF2gY5D3G0VXbQLT%wB^)Jj8;b1bFuQ?z+MZ1hi6Xq;(fI4ofA z+;1nFC!;vUc=XIIa=tj5>xvlWD7hsyR9lF2-ex8)HB)roCn3k&8m@Bl<~uW%y7$r1 zf}V6~OVpmZ9(vKtS3LW*Fcr*xVdg^s6!)m9nty`o2ewE@3FzN*?OP9azb`f&Cp z=!QA`sq6Su$N@w(U-Z#kTH>>4hzWwSrFW9KQY$ouTm1^IDcPP$tb5Lvy$EGdbX+Qu zy!Wgo+V(*23xJF*%)70%L$wsL{`*VvN%9$qjmcVK#=>!iQPIiqsuL6S9m9eguj*_4 z;QAFRn$w6g5$GCav9)n{qmcRvo~s-ytQeP(_%j3Iif;#UZ6Xe(OQ|f=8g%yYgIlFh zHKWxBxuiLlPCBp)VGCYjT~*k2bW_@w*T4) zfsOjIwXGU2R(>B3&e4&ll*+{(aDQmWJnI|51mXnvk%i&5{`arfVy+~>I=@G=X&kw5 zrCXk96z(@dP^A8dOA<(bwL;dFdrFvX&;R{1BJ)8(A%O)t(N zbfZ9gT34v~0h2RuIW3w7POXE!NnXs1`(<(fB^Y6MEKyrc^#EaJI!NTHp|-w*Qb08s zz~CIC8ZHyX0>!&*hR};(a`GZf!#X^4(6xpJfsVrwNs`mUE&-_4s$#gLhwf7P1xa6ZYn$ zv{r0|@tjoPoimzL)K!2Ofh-%r=c})hX%Cp@^c%|KHgCXr=W)dP|D~QLXUhR>mI-yjqaN1UF(BhO&Y)gA=kq`(O40Cf@AjhC2-oaRH=!;bwNfGgZMp$clV5PsTT_Ew7Pjej*?y6VTBGq`+!+d1~P&7w*f z_9^u>ms$Wy^sh1t`RWX`-zRz>i_gp|old7ad((f{V1c?|3dA?vqwL1by&Bf}HU{&-Mst zhoo__B27CizW4LI)YH2pe!ngAiiM@6-VV?ZN%9YoS>1n*_QL5sQsb@E7ztc0?(Xi+ yPXo1UBwO? [ffmpeg process 1] -> [python] -> [ffmpeg process 2] -> (output video) + +This example reads/writes video files on the local filesystem, but the +same pattern can be used for other kinds of input/output (e.g. webcam, +rtmp, etc.). + +The simplest processing example simply darkens each frame by +multiplying the frame's numpy array by a constant value; see +``process_frame_simple``. + +A more sophisticated example processes each frame with tensorflow using +the "deep dream" tensorflow tutorial; activate this mode by calling +the script with the optional `--dream` argument. (Make sure tensorflow +is installed before running) +''' +from __future__ import print_function +import argparse +import ffmpeg +import logging +import numpy as np +import os +import subprocess +import zipfile + + +parser = argparse.ArgumentParser(description='Example streaming ffmpeg numpy processing') +parser.add_argument('in_filename', help='Input filename') +parser.add_argument('out_filename', help='Output filename') +parser.add_argument( + '--dream', action='store_true', help='Use DeepDream frame processing (requires tensorflow)') + +logger = logging.getLogger(__name__) +logging.basicConfig(level=logging.INFO) + + +def get_video_size(filename): + logger.info('Getting video size for {!r}'.format(filename)) + probe = ffmpeg.probe(filename) + video_info = next(s for s in probe['streams'] if s['codec_type'] == 'video') + width = int(video_info['width']) + height = int(video_info['height']) + return width, height + + +def start_ffmpeg_process1(in_filename): + logger.info('Starting ffmpeg process1') + args = ( + ffmpeg + .input(in_filename) + .output('pipe:', format='rawvideo', pix_fmt='rgb24', vframes=8) + .compile() + ) + return subprocess.Popen(args, stdout=subprocess.PIPE) + + +def start_ffmpeg_process2(out_filename, width, height): + logger.info('Starting ffmpeg process2') + args = ( + ffmpeg + .input('pipe:', format='rawvideo', pix_fmt='rgb24', s='{}x{}'.format(width, height)) + .output(out_filename, pix_fmt='yuv420p') + .overwrite_output() + .compile() + ) + return subprocess.Popen(args, stdin=subprocess.PIPE) + + +def read_frame(process1, width, height): + logger.debug('Reading frame') + + # Note: RGB24 == 3 bytes per pixel. + frame_size = width * height * 3 + in_bytes = process1.stdout.read(frame_size) + if len(in_bytes) == 0: + frame = None + else: + assert len(in_bytes) == frame_size + frame = ( + np + .frombuffer(in_bytes, np.uint8) + .reshape([height, width, 3]) + ) + return frame + + +def process_frame_simple(frame): + '''Simple processing example: darken frame.''' + return frame * 0.3 + + +def write_frame(process2, frame): + logger.debug('Writing frame') + process2.stdin.write( + frame + .astype(np.uint8) + .tobytes() + ) + + +def run(in_filename, out_filename, process_frame): + width, height = get_video_size(in_filename) + process1 = start_ffmpeg_process1(in_filename) + process2 = start_ffmpeg_process2(out_filename, width, height) + while True: + frame = read_frame(process1, width, height) + if frame is None: + logger.info('End of input stream') + break + + logger.debug('Processing frame') + frame = process_frame(frame) + write_frame(process2, frame) + + logger.info('Waiting for ffmpeg process1') + process1.wait() + + logger.info('Waiting for ffmpeg process2') + process2.stdin.close() + process2.wait() + + logger.info('Done') + + +class DeepDream(object): + '''DeepDream implementation, adapted from official tensorflow deepdream tutorial: + https://github.com/tensorflow/tensorflow/tree/master/tensorflow/examples/tutorials/deepdream + + Credit: Alexander Mordvintsev + ''' + + _DOWNLOAD_URL = 'https://storage.googleapis.com/download.tensorflow.org/models/inception5h.zip' + _ZIP_FILENAME = 'deepdream_model.zip' + _MODEL_FILENAME = 'tensorflow_inception_graph.pb' + + @staticmethod + def _download_model(): + logger.info('Downloading deepdream model...') + try: + from urllib.request import urlretrieve # python 3 + except ImportError: + from urllib import urlretrieve # python 2 + urlretrieve(DeepDream._DOWNLOAD_URL, DeepDream._ZIP_FILENAME) + + logger.info('Extracting deepdream model...') + zipfile.ZipFile(DeepDream._ZIP_FILENAME, 'r').extractall('.') + + @staticmethod + def _tffunc(*argtypes): + '''Helper that transforms TF-graph generating function into a regular one. + See `_resize` function below. + ''' + placeholders = list(map(tf.placeholder, argtypes)) + def wrap(f): + out = f(*placeholders) + def wrapper(*args, **kw): + return out.eval(dict(zip(placeholders, args)), session=kw.get('session')) + return wrapper + return wrap + + @staticmethod + def _base_resize(img, size): + '''Helper function that uses TF to resize an image''' + img = tf.expand_dims(img, 0) + return tf.image.resize_bilinear(img, size)[0,:,:,:] + + def __init__(self): + if not os.path.exists(DeepDream._MODEL_FILENAME): + self._download_model() + + self._graph = tf.Graph() + self._session = tf.InteractiveSession(graph=self._graph) + self._resize = self._tffunc(np.float32, np.int32)(self._base_resize) + with tf.gfile.FastGFile(DeepDream._MODEL_FILENAME, 'rb') as f: + graph_def = tf.GraphDef() + graph_def.ParseFromString(f.read()) + self._t_input = tf.placeholder(np.float32, name='input') # define the input tensor + imagenet_mean = 117.0 + t_preprocessed = tf.expand_dims(self._t_input-imagenet_mean, 0) + tf.import_graph_def(graph_def, {'input':t_preprocessed}) + + self.t_obj = self.T('mixed4d_3x3_bottleneck_pre_relu')[:,:,:,139] + #self.t_obj = tf.square(self.T('mixed4c')) + + def T(self, layer_name): + '''Helper for getting layer output tensor''' + return self._graph.get_tensor_by_name('import/%s:0'%layer_name) + + def _calc_grad_tiled(self, img, t_grad, tile_size=512): + '''Compute the value of tensor t_grad over the image in a tiled way. + Random shifts are applied to the image to blur tile boundaries over + multiple iterations.''' + sz = tile_size + h, w = img.shape[:2] + sx, sy = np.random.randint(sz, size=2) + img_shift = np.roll(np.roll(img, sx, 1), sy, 0) + grad = np.zeros_like(img) + for y in range(0, max(h-sz//2, sz),sz): + for x in range(0, max(w-sz//2, sz),sz): + sub = img_shift[y:y+sz,x:x+sz] + g = self._session.run(t_grad, {self._t_input:sub}) + grad[y:y+sz,x:x+sz] = g + return np.roll(np.roll(grad, -sx, 1), -sy, 0) + + def process_frame(self, frame, iter_n=10, step=1.5, octave_n=4, octave_scale=1.4): + t_score = tf.reduce_mean(self.t_obj) # defining the optimization objective + t_grad = tf.gradients(t_score, self._t_input)[0] # behold the power of automatic differentiation! + + # split the image into a number of octaves + img = frame + octaves = [] + for i in range(octave_n-1): + hw = img.shape[:2] + lo = self._resize(img, np.int32(np.float32(hw)/octave_scale)) + hi = img-self._resize(lo, hw) + img = lo + octaves.append(hi) + + # generate details octave by octave + for octave in range(octave_n): + if octave>0: + hi = octaves[-octave] + img = self._resize(img, hi.shape[:2])+hi + for i in range(iter_n): + g = self._calc_grad_tiled(img, t_grad) + img += g*(step / (np.abs(g).mean()+1e-7)) + #print('.',end = ' ') + return img + + +if __name__ == '__main__': + args = parser.parse_args() + if args.dream: + import tensorflow as tf + process_frame = DeepDream().process_frame + else: + process_frame = process_frame_simple + run(args.in_filename, args.out_filename, process_frame) From b1d167ccb839eb9d1a216d220c73c252668f1c8e Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Sun, 25 Nov 2018 04:36:55 -0600 Subject: [PATCH 03/60] Add facetime example --- examples/facetime.py | 8 ++++++++ examples/graphs/dream.png | Bin 0 -> 716856 bytes 2 files changed, 8 insertions(+) create mode 100644 examples/facetime.py create mode 100644 examples/graphs/dream.png diff --git a/examples/facetime.py b/examples/facetime.py new file mode 100644 index 00000000..58d083ec --- /dev/null +++ b/examples/facetime.py @@ -0,0 +1,8 @@ +import ffmpeg + +( + ffmpeg + .input('FaceTime', format='avfoundation', pix_fmt='uyvy422', framerate=30) + .output('out.mp4', pix_fmt='yuv420p', vframes=100) + .run() +) diff --git a/examples/graphs/dream.png b/examples/graphs/dream.png new file mode 100644 index 0000000000000000000000000000000000000000..090b530b5ac016d80f5875f02f460d3c514633ae GIT binary patch literal 716856 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 z

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

Mq^Y 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

`%R=7H{o`ZFJWk5Nu(>|NJ{vi=^ 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

+79w!t0UADUMKSnbLg8u+|6pG( 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%0DNixf*^vV3O0*d(s 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 Date: Sun, 25 Nov 2018 04:38:55 -0600 Subject: [PATCH 04/60] Update README.md --- examples/README.md | 56 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 56 insertions(+) diff --git a/examples/README.md b/examples/README.md index 92feaece..5d919f7b 100644 --- a/examples/README.md +++ b/examples/README.md @@ -123,3 +123,59 @@ out.run() jupyter demo +## [Tensorflow Streaming](https://github.com/kkroening/ffmpeg-python/blob/master/examples/tensorflow_stream.py) + +tensorflow streaming; challenge mode: combine this with the webcam example below + +- Decode input video with ffmpeg +- Process video with tensorflow using "deep dream" example +- Encode output video with ffmpeg + +```python +args1 = ( + ffmpeg + .input(in_filename) + .output('pipe:', format='rawvideo', pix_fmt='rgb24', vframes=8) + .compile() +) +process1 = subprocess.Popen(args1, stdout=subprocess.PIPE) + +args2 = ( + ffmpeg + .input('pipe:', format='rawvideo', pix_fmt='rgb24', s='{}x{}'.format(width, height)) + .output(out_filename, pix_fmt='yuv420p') + .overwrite_output() + .compile() +) +process2 = subprocess.Popen(args2, stdin=subprocess.PIPE) + +while True: + in_bytes = process1.stdout.read(width * height * 3) + in_frame ( + np + .frombuffer(in_bytes, np.uint8) + .reshape([height, width, 3]) + ) + + # See examples/tensorflow_stream.py: + frame = deep_dream.process_frame(frame) + + process2.stdin.write( + frame + .astype(np.uint8) + .tobytes() + ) +``` + +deep dream streaming + +## [FaceTime webcam input](https://github.com/kkroening/ffmpeg-python/blob/master/examples/facetime.py) + +```python +( + ffmpeg + .input('FaceTime', format='avfoundation', pix_fmt='uyvy422', framerate=30) + .output('out.mp4', pix_fmt='yuv420p', vframes=100) + .run() +) +``` From 462e34bab3b519dd99005c155386faf783f43f26 Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Sun, 25 Nov 2018 21:32:04 -0600 Subject: [PATCH 05/60] Add run_async operator --- examples/README.md | 46 ++++++++++---- examples/tensorflow_stream.py | 10 ++-- ffmpeg/_run.py | 110 +++++++++++++++++++++++++++++++--- ffmpeg/tests/test_ffmpeg.py | 23 ++++++- 4 files changed, 164 insertions(+), 25 deletions(-) diff --git a/examples/README.md b/examples/README.md index 5d919f7b..463f866d 100644 --- a/examples/README.md +++ b/examples/README.md @@ -132,44 +132,48 @@ out.run() - Encode output video with ffmpeg ```python -args1 = ( +process1 = ( ffmpeg .input(in_filename) .output('pipe:', format='rawvideo', pix_fmt='rgb24', vframes=8) - .compile() + .run_async(pipe_stdout=True) ) -process1 = subprocess.Popen(args1, stdout=subprocess.PIPE) -args2 = ( +process2 = ( ffmpeg .input('pipe:', format='rawvideo', pix_fmt='rgb24', s='{}x{}'.format(width, height)) .output(out_filename, pix_fmt='yuv420p') .overwrite_output() - .compile() + .run_async(pipe_stdin=True() ) -process2 = subprocess.Popen(args2, stdin=subprocess.PIPE) while True: in_bytes = process1.stdout.read(width * height * 3) - in_frame ( + if not in_bytes: + break + in_frame = ( np .frombuffer(in_bytes, np.uint8) .reshape([height, width, 3]) ) # See examples/tensorflow_stream.py: - frame = deep_dream.process_frame(frame) + out_frame = deep_dream.process_frame(in_frame) process2.stdin.write( - frame + in_frame .astype(np.uint8) .tobytes() ) + +process2.stdin.close() +process1.wait() +process2.wait() ``` deep dream streaming -## [FaceTime webcam input](https://github.com/kkroening/ffmpeg-python/blob/master/examples/facetime.py) +## [FaceTime webcam input (OS X)](https://github.com/kkroening/ffmpeg-python/blob/master/examples/facetime.py) ```python ( @@ -179,3 +183,25 @@ while True: .run() ) ``` + +## Stream from RTSP server to TCP socket + +```python +packet_size = 4096 + +process = ( + ffmpeg + .input('rtsp://%s:8554/default') + .output('-', format='h264') + .run_async(pipe_stdout=True) +) + +while process.poll() is None: + packet = process.stdout.read(packet_size) + try: + tcp_socket.send(packet) + except socket.error: + process.stdout.close() + process.wait() + break +``` diff --git a/examples/tensorflow_stream.py b/examples/tensorflow_stream.py index 066c7655..6c9c9c9d 100644 --- a/examples/tensorflow_stream.py +++ b/examples/tensorflow_stream.py @@ -58,7 +58,7 @@ def start_ffmpeg_process1(in_filename): args = ( ffmpeg .input(in_filename) - .output('pipe:', format='rawvideo', pix_fmt='rgb24', vframes=8) + .output('pipe:', format='rawvideo', pix_fmt='rgb24') .compile() ) return subprocess.Popen(args, stdout=subprocess.PIPE) @@ -113,14 +113,14 @@ def run(in_filename, out_filename, process_frame): process1 = start_ffmpeg_process1(in_filename) process2 = start_ffmpeg_process2(out_filename, width, height) while True: - frame = read_frame(process1, width, height) - if frame is None: + in_frame = read_frame(process1, width, height) + if in_frame is None: logger.info('End of input stream') break logger.debug('Processing frame') - frame = process_frame(frame) - write_frame(process2, frame) + out_frame = process_frame(in_frame) + write_frame(process2, out_frame) logger.info('Waiting for ffmpeg process1') process1.wait() diff --git a/ffmpeg/_run.py b/ffmpeg/_run.py index 87e44ff6..a0189be2 100644 --- a/ffmpeg/_run.py +++ b/ffmpeg/_run.py @@ -183,11 +183,100 @@ def compile(stream_spec, cmd='ffmpeg', overwrite_output=False): return cmd + get_args(stream_spec, overwrite_output=overwrite_output) +@output_operator() +def run_async( + stream_spec, cmd='ffmpeg', pipe_stdin=False, pipe_stdout=False, pipe_stderr=False, + quiet=False, overwrite_output=False): + """Asynchronously invoke ffmpeg for the supplied node graph. + + Args: + pipe_stdin: if True, connect pipe to subprocess stdin (to be + used with ``pipe:`` ffmpeg inputs). + pipe_stdout: if True, connect pipe to subprocess stdout (to be + used with ``pipe:`` ffmpeg outputs). + pipe_stderr: if True, connect pipe to subprocess stderr. + quiet: shorthand for setting ``capture_stdout`` and + ``capture_stderr``. + **kwargs: keyword-arguments passed to ``get_args()`` (e.g. + ``overwrite_output=True``). + + Returns: + A `subprocess Popen`_ object representing the child process. + + Examples: + Run and stream input:: + + process = ( + ffmpeg + .input('pipe:', format='rawvideo', pix_fmt='rgb24', s='{}x{}'.format(width, height)) + .output(out_filename, pix_fmt='yuv420p') + .overwrite_output() + .run_async(pipe_stdin=True) + ) + process.communicate(input=input_data) + + Run and capture output:: + + process = ( + ffmpeg + .input(in_filename) + .output('pipe':, format='rawvideo', pix_fmt='rgb24') + .run_async(pipe_stdout=True, pipe_stderr=True) + ) + out, err = process.communicate() + + Process video frame-by-frame using numpy:: + + process1 = ( + ffmpeg + .input(in_filename) + .output('pipe:', format='rawvideo', pix_fmt='rgb24') + .run_async(pipe_stdout=True) + ) + + process2 = ( + ffmpeg + .input('pipe:', format='rawvideo', pix_fmt='rgb24', s='{}x{}'.format(width, height)) + .output(out_filename, pix_fmt='yuv420p') + .overwrite_output() + .run_async(pipe_stdin=True) + ) + + while True: + in_bytes = process1.stdout.read(width * height * 3) + if not in_bytes: + break + in_frame = ( + np + .frombuffer(in_bytes, np.uint8) + .reshape([height, width, 3]) + ) + out_frame = in_frame * 0.3 + process2.stdin.write( + frame + .astype(np.uint8) + .tobytes() + ) + + process2.stdin.close() + process1.wait() + process2.wait() + + .. _subprocess Popen: https://docs.python.org/3/library/subprocess.html#popen-objects + """ + args = compile(stream_spec, cmd, overwrite_output=overwrite_output) + stdin_stream = subprocess.PIPE if pipe_stdin else None + stdout_stream = subprocess.PIPE if pipe_stdout or quiet else None + stderr_stream = subprocess.PIPE if pipe_stderr or quiet else None + return subprocess.Popen( + args, stdin=stdin_stream, stdout=stdout_stream, stderr=stderr_stream) + + @output_operator() def run( stream_spec, cmd='ffmpeg', capture_stdout=False, capture_stderr=False, input=None, quiet=False, overwrite_output=False): - """Ivoke ffmpeg for the supplied node graph. + """Invoke ffmpeg for the supplied node graph. Args: capture_stdout: if True, capture stdout (to be used with @@ -201,13 +290,17 @@ def run( Returns: (out, err) tuple containing captured stdout and stderr data. """ - args = compile(stream_spec, cmd, overwrite_output=overwrite_output) - stdin_stream = subprocess.PIPE if input else None - stdout_stream = subprocess.PIPE if capture_stdout or quiet else None - stderr_stream = subprocess.PIPE if capture_stderr or quiet else None - p = subprocess.Popen(args, stdin=stdin_stream, stdout=stdout_stream, stderr=stderr_stream) - out, err = p.communicate(input) - retcode = p.poll() + process = run_async( + stream_spec, + cmd, + pipe_stdin=input is not None, + pipe_stdout=capture_stdout, + pipe_stderr=capture_stderr, + quiet=quiet, + overwrite_output=overwrite_output, + ) + out, err = process.communicate(input) + retcode = process.poll() if retcode: raise Error('ffmpeg', out, err) return out, err @@ -218,4 +311,5 @@ def run( 'Error', 'get_args', 'run', + 'run_async', ] diff --git a/ffmpeg/tests/test_ffmpeg.py b/ffmpeg/tests/test_ffmpeg.py index b62f2efc..4f1d62e7 100644 --- a/ffmpeg/tests/test_ffmpeg.py +++ b/ffmpeg/tests/test_ffmpeg.py @@ -1,9 +1,9 @@ from __future__ import unicode_literals - -from builtins import str from builtins import bytes from builtins import range +from builtins import str import ffmpeg +import mock import os import pytest import random @@ -414,6 +414,25 @@ def test__compile(): assert out_file.compile(cmd='ffmpeg.old') == ['ffmpeg.old', '-i', 'dummy.mp4', 'dummy2.mp4'] +@pytest.mark.parametrize('pipe_stdin', [True, False]) +@pytest.mark.parametrize('pipe_stdout', [True, False]) +@pytest.mark.parametrize('pipe_stderr', [True, False]) +def test__run_async(mocker, pipe_stdin, pipe_stdout, pipe_stderr): + process__mock = mock.Mock() + popen__mock = mocker.patch.object(subprocess, 'Popen', return_value=process__mock) + stream = _get_simple_example() + process = ffmpeg.run_async( + stream, pipe_stdin=pipe_stdin, pipe_stdout=pipe_stdout, pipe_stderr=pipe_stderr) + assert process is process__mock + + expected_stdin = subprocess.PIPE if pipe_stdin else None + expected_stdout = subprocess.PIPE if pipe_stdout else None + expected_stderr = subprocess.PIPE if pipe_stderr else None + (args,), kwargs = popen__mock.call_args + assert args == ffmpeg.compile(stream) + assert kwargs == dict(stdin=expected_stdin, stdout=expected_stdout, stderr=expected_stderr) + + def test__run(): stream = _get_complex_filter_example() out, err = ffmpeg.run(stream) From e5e293fca4711d15c6559ac2a4c70567d853d509 Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Sun, 25 Nov 2018 21:42:43 -0600 Subject: [PATCH 06/60] Fix `mock` import for python3 --- ffmpeg/tests/test_ffmpeg.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ffmpeg/tests/test_ffmpeg.py b/ffmpeg/tests/test_ffmpeg.py index 4f1d62e7..f665e8ec 100644 --- a/ffmpeg/tests/test_ffmpeg.py +++ b/ffmpeg/tests/test_ffmpeg.py @@ -3,13 +3,17 @@ from builtins import range from builtins import str import ffmpeg -import mock import os import pytest import random import re import subprocess +try: + import mock # python 2 +except ImportError: + from unittest import mock # python 3 + TEST_DIR = os.path.dirname(__file__) SAMPLE_DATA_DIR = os.path.join(TEST_DIR, 'sample_data') From 413b71a4e8f52b59c873e86528a3e6fca258578c Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Sun, 25 Nov 2018 21:43:41 -0600 Subject: [PATCH 07/60] Fix RTSP/TCP socket example to use consistent indentation --- examples/README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/examples/README.md b/examples/README.md index 463f866d..0f603718 100644 --- a/examples/README.md +++ b/examples/README.md @@ -190,17 +190,17 @@ process2.wait() packet_size = 4096 process = ( - ffmpeg - .input('rtsp://%s:8554/default') - .output('-', format='h264') - .run_async(pipe_stdout=True) + ffmpeg + .input('rtsp://%s:8554/default') + .output('-', format='h264') + .run_async(pipe_stdout=True) ) while process.poll() is None: - packet = process.stdout.read(packet_size) - try: - tcp_socket.send(packet) - except socket.error: + packet = process.stdout.read(packet_size) + try: + tcp_socket.send(packet) + except socket.error: process.stdout.close() process.wait() break From 7ed9adf483fa1713301c7f7c0106fda6abbb4158 Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Sun, 25 Nov 2018 21:50:01 -0600 Subject: [PATCH 08/60] Fix example readme typo --- examples/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/README.md b/examples/README.md index 0f603718..208c7b55 100644 --- a/examples/README.md +++ b/examples/README.md @@ -144,7 +144,7 @@ process2 = ( .input('pipe:', format='rawvideo', pix_fmt='rgb24', s='{}x{}'.format(width, height)) .output(out_filename, pix_fmt='yuv420p') .overwrite_output() - .run_async(pipe_stdin=True() + .run_async(pipe_stdin=True) ) while True: From c53907acaf0003cfa3ad9bf091bc6e4eef85cba0 Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Sun, 25 Nov 2018 21:51:19 -0600 Subject: [PATCH 09/60] Update docs --- doc/html/genindex.html | 4 ++ doc/html/index.html | 91 +++++++++++++++++++++++++++++++++++++++- doc/html/objects.inv | Bin 429 -> 435 bytes doc/html/searchindex.js | 2 +- 4 files changed, 94 insertions(+), 3 deletions(-) diff --git a/doc/html/genindex.html b/doc/html/genindex.html index b4fba516..ee3fb4e9 100644 --- a/doc/html/genindex.html +++ b/doc/html/genindex.html @@ -170,6 +170,10 @@

R

+
diff --git a/doc/html/index.html b/doc/html/index.html index fc0b2f34..8a55c1af 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -569,7 +569,7 @@

ffmpeg-python: Python bindings for FFmpeg
ffmpeg.run(stream_spec, cmd='ffmpeg', capture_stdout=False, capture_stderr=False, input=None, quiet=False, overwrite_output=False)
-

Ivoke ffmpeg for the supplied node graph.

+

Invoke ffmpeg for the supplied node graph.

@@ -591,6 +591,93 @@

ffmpeg-python: Python bindings for FFmpeg +
+ffmpeg.run_async(stream_spec, cmd='ffmpeg', pipe_stdin=False, pipe_stdout=False, pipe_stderr=False, quiet=False, overwrite_output=False)
+

Asynchronously invoke ffmpeg for the supplied node graph.

+

+++ + + + + + +
Parameters:
    +
  • pipe_stdin – if True, connect pipe to subprocess stdin (to be +used with pipe: ffmpeg inputs).
  • +
  • pipe_stdout – if True, connect pipe to subprocess stdout (to be +used with pipe: ffmpeg outputs).
  • +
  • pipe_stderr – if True, connect pipe to subprocess stderr.
  • +
  • quiet – shorthand for setting capture_stdout and +capture_stderr.
  • +
  • **kwargs – keyword-arguments passed to get_args() (e.g. +overwrite_output=True).
  • +
+
Returns:

A subprocess Popen object representing the child process.

+
+

Examples

+

Run and stream input:

+
process = (
+    ffmpeg
+    .input('pipe:', format='rawvideo', pix_fmt='rgb24', s='{}x{}'.format(width, height))
+    .output(out_filename, pix_fmt='yuv420p')
+    .overwrite_output()
+    .run_async(pipe_stdin=True)
+)
+process.communicate(input=input_data)
+
+
+

Run and capture output:

+
process = (
+    ffmpeg
+    .input(in_filename)
+    .output('pipe':, format='rawvideo', pix_fmt='rgb24')
+    .run_async(pipe_stdout=True, pipe_stderr=True)
+)
+out, err = process.communicate()
+
+
+

Process video frame-by-frame using numpy:

+
process1 = (
+    ffmpeg
+    .input(in_filename)
+    .output('pipe:', format='rawvideo', pix_fmt='rgb24')
+    .run_async(pipe_stdout=True)
+)
+
+process2 = (
+    ffmpeg
+    .input('pipe:', format='rawvideo', pix_fmt='rgb24', s='{}x{}'.format(width, height))
+    .output(out_filename, pix_fmt='yuv420p')
+    .overwrite_output()
+    .run_async(pipe_stdin=True)
+)
+
+while True:
+    in_bytes = process1.stdout.read(width * height * 3)
+    if not in_bytes:
+        break
+    in_frame = (
+        np
+        .frombuffer(in_bytes, np.uint8)
+        .reshape([height, width, 3])
+    )
+    out_frame = in_frame * 0.3
+    process2.stdin.write(
+        frame
+        .astype(np.uint8)
+        .tobytes()
+    )
+
+process2.stdin.close()
+process1.wait()
+process2.wait()
+
+
+
+
ffmpeg.view(stream_spec, detail=False, filename=None, pipe=False, **kwargs)
@@ -598,7 +685,7 @@

ffmpeg-python: Python bindings for FFmpeg
-ffmpeg.probe(filename)
+ffmpeg.probe(filename, cmd='ffprobe')

Run ffprobe on the specified file and return a JSON representation of the output.

diff --git a/doc/html/objects.inv b/doc/html/objects.inv index e5afeacff1bee4c21abc78b5ea6e7f4f18a5f2a8..8957b965bc964f4f77cb343a7810676175eb0843 100644 GIT binary patch delta 320 zcmV-G0l)sO1G58=e1Fu`RH&ucEH>1`qFu0ap&Qf=DKKaolI@ zs0ucq8m0GOota@v)5)s`SuUDf2hVyXiAOO+7VJ@8yD+mY!GFxFKpRWU9u(R>V_mXj z+K?zFUO59$D{+`uc+}SL+BYWNr!$^gr~@3}=goN4KGB760km>q+bbG^XWASwbi9sW z@?6)-Y4M7sC!ok|8=-M5cwzqy7Xw!oyoG%1<%0$c;J1jFsBf(7z>4}P?$OPOkM*|t zWqnX9+KIAb9XS^ogKxxnyNWIgTVP9|^10 zNt5cHK;|?4`2ic_BMd4o2akPnpx%@XJ7H*}&a95z>mo+(BfELGAA| z?$8b$Qa9=lzI?XbaFp9vQ^rgjF%zrY>G6lvu7J5+7<{8!} z$F{-5G0Ef%z>TJ162YT!R%YLrWLIZ{RHz3U;OAsAwNJQ!XCS8+F?%7)@Qlrou$4JN zDTufUI0}tmvR(w9#rJ!*a1nu5%pX}lIMM)Ni>QhFgVQZIRqxd;x^e1bomRhCkKGF0 z5v5`s7alPj)H7)tRhtPL@&h-yVI7YvQssX3PrbO*w}rCdXK96{@&r0}vA-E5R^YF) Me$oR}-$tm~b8_LBr~m)} diff --git a/doc/html/searchindex.js b/doc/html/searchindex.js index 06ef010e..bdc9a7b0 100644 --- a/doc/html/searchindex.js +++ b/doc/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["index"],envversion:53,filenames:["index.rst"],objects:{"":{ffmpeg:[0,0,0,"-"]},ffmpeg:{Error:[0,1,1,""],colorchannelmixer:[0,2,1,""],compile:[0,2,1,""],concat:[0,2,1,""],crop:[0,2,1,""],drawbox:[0,2,1,""],drawtext:[0,2,1,""],filter:[0,2,1,""],filter_:[0,2,1,""],filter_multi_output:[0,2,1,""],get_args:[0,2,1,""],hflip:[0,2,1,""],hue:[0,2,1,""],input:[0,2,1,""],merge_outputs:[0,2,1,""],output:[0,2,1,""],overlay:[0,2,1,""],overwrite_output:[0,2,1,""],probe:[0,2,1,""],run:[0,2,1,""],setpts:[0,2,1,""],trim:[0,2,1,""],vflip:[0,2,1,""],view:[0,2,1,""],zoompan:[0,2,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","exception","Python exception"],"2":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:exception","2":"py:function"},terms:{"case":0,"default":0,"function":0,"return":0,"true":0,For:0,PTS:0,The:0,These:0,Used:0,accept:0,access:0,acodec:0,action:0,activ:0,adjust:0,after:0,alia:0,all:0,allow:0,alpha:0,also:0,altern:0,alwai:0,angl:0,ani:0,anoth:0,appli:0,arab:0,area:0,arg:0,argument:0,around:0,ascent:0,asetpt:0,ask:0,aspect:0,atom:0,attempt:0,audio:0,audio_bitr:0,author:0,automat:0,avoid:0,axi:0,background:0,base:0,baselin:0,basetim:0,befor:0,behavior:0,behind:0,below:0,between:0,black:0,blend:0,border:0,bordercolor:0,borderw:0,both:0,box:0,boxborderw:0,boxcolor:0,bracket:0,bright:0,build:0,built:0,call:0,can:0,captur:0,capture_stderr:0,capture_stdout:0,chang:0,channel:0,charact:0,check:0,chroma:0,clip:0,cmd:0,code:0,codec:0,collid:0,color:0,colorchannelmix:0,com:0,combin:0,command:0,commnad:0,common:0,compil:0,concat:0,concaten:0,configur:0,confus:0,constant:0,construct:0,consult:0,contain:0,continu:0,convert:0,coord:0,coordin:0,corner:0,correctli:0,correspond:0,count:0,crop:0,crop_bitmap:0,custom:0,dar:0,data:0,debug:0,degre:0,deprec:0,descent:0,detail:0,dictionari:0,differ:0,directli:0,disabl:0,displai:0,distanc:0,document:0,draw:0,drawbox:0,drawn:0,drawtext:0,drop:0,due:0,durat:0,dure:0,dynam:0,each:0,edg:0,effect:0,either:0,empti:0,emul:0,enabl:0,encod:0,encount:0,end:0,end_fram:0,end_pt:0,endal:0,eof:0,eof_act:0,equival:0,err:0,error:0,escape_text:0,etc:0,eval:0,evalu:0,even:0,exactli:0,exampl:0,except:0,exit:0,expand:0,expans:0,explicitli:0,expr:0,express:0,fail:0,fallback:0,fals:0,famili:0,ffmpeg_arg:0,ffprobe:0,file:0,filenam:0,filter:0,filter_:0,filter_multi_output:0,filter_nam:0,first:0,fix:0,fix_bound:0,flag:0,flip:0,fmpeg:0,follow:0,font:0,fontcolor:0,fontcolor_expr:0,fontconfig:0,fontfil:0,fontsiz:0,forc:0,force_autohint:0,format:0,fps:0,frame:0,frame_num:0,from:0,ft_load_:0,ft_load_flag:0,gbrp:0,gener:0,get_arg:0,github:0,given:0,glyph:0,graph:0,greater:0,grid:0,handl:0,has:0,have:0,hd720:0,height:0,heigth:0,hflip:0,higher:0,highest:0,horizont:0,hour:0,how:0,hsub:0,http:0,hue:0,huge:0,ignore_global_advance_width:0,ignore_transform:0,imag:0,immedi:0,implement:0,includ:0,incom:0,index:0,inform:0,init:0,initi:0,input:0,instead:0,interpret:0,invalid:0,invert:0,invok:0,its:0,ivok:0,join:0,json:0,just:0,kept:0,keyword:0,kkroen:0,kwarg:0,label:0,last:0,layout:0,left:0,level:0,libfontconfig:0,libfreetyp:0,libfribidi:0,librari:0,line:0,line_h:0,line_spac:0,linear_design:0,list:0,load:0,longest:0,lowest:0,luma:0,mai:0,main:0,main_h:0,main_parent_nod:0,main_w:0,mandatori:0,mani:0,manual:0,map:0,max:0,max_glyph_a:0,max_glyph_d:0,max_glyph_h:0,max_glyph_w:0,maximum:0,mean:0,merge_output:0,messag:0,microsecond:0,min:0,miss:0,mix:0,mode:0,modifi:0,modul:0,monochrom:0,more:0,most:0,mp4:0,multipl:0,must:0,name:0,nan:0,necessari:0,need:0,neg:0,no_autohint:0,no_bitmap:0,no_hint:0,no_recurs:0,no_scal:0,node:0,non:0,none:0,normal:0,number:0,obtain:0,offici:0,offset:0,onc:0,one:0,onli:0,oper:0,option:0,order:0,orient:0,other:0,otherwis:0,out:0,outlin:0,output:0,over:0,overlai:0,overlaid:0,overlay_parent_nod:0,overrid:0,overwrit:0,overwrite_output:0,pack:0,pad:0,page:0,pan:0,paramet:0,partial:0,pass:0,path:0,pcm:0,pedant:0,pipe:0,pixel:0,place:0,planar:0,pleas:0,point:0,posit:0,preced:0,present:0,probe:0,process:0,produc:0,properti:0,provid:0,pts:0,quiet:0,radian:0,rais:0,rand:0,random:0,rang:0,rate:0,ratio:0,rawvideo:0,read:0,reason:0,refer:0,rel:0,relat:0,reload:0,render:0,repeat:0,repeatlast:0,represent:0,resolut:0,respect:0,result:0,retriev:0,revers:0,rgb:0,right:0,run:0,same:0,sampl:0,san:0,sar:0,satur:0,search:0,second:0,secondari:0,section:0,see:0,segment:0,select:0,sent:0,sequenc:0,set:0,setpt:0,shadow:0,shadowcolor:0,shadowi:0,shadowx:0,shape:0,shorter:0,shortest:0,shorthand:0,should:0,shown:0,silenc:0,singl:0,size:0,sloppi:0,some:0,space:0,special:0,specifi:0,split0:0,split1:0,split:0,standard:0,start:0,start_fram:0,start_numb:0,start_pt:0,stderr:0,stdin:0,stdout:0,stream1:0,stream2:0,stream3:0,stream:0,stream_spec:0,streams_and_filenam:0,strftime:0,string:0,subpart:0,subsampl:0,suffix:0,suppli:0,support:0,sure:0,synchron:0,synopsi:0,syntax:0,system:0,tab:0,tabsiz:0,take:0,tc24hmax:0,tell:0,termin:0,text:0,text_h:0,text_shap:0,text_w:0,textfil:0,than:0,thei:0,them:0,thi:0,thick:0,through:0,thrown:0,time:0,timebas:0,timecod:0,timecode_r:0,timestamp:0,togeth:0,top:0,track:0,trim:0,tupl:0,type:0,unit:0,unknown:0,unsaf:0,until:0,updat:0,upper:0,upward:0,url:0,use:0,used:0,useful:0,user:0,uses:0,using:0,utf:0,util:0,valu:0,variabl:0,variou:0,vcodec:0,verbatim:0,vertic:0,vertical_layout:0,vflip:0,video:0,video_bitr:0,view:0,visibl:0,vsub:0,wai:0,well:0,whatev:0,when:0,where:0,which:0,white:0,width:0,within:0,without:0,work:0,wrap:0,write:0,you:0,yuv420:0,yuv422:0,yuv422p:0,yuv444:0,zero:0,zoom:0,zoompan:0},titles:["ffmpeg-python: Python bindings for FFmpeg"],titleterms:{bind:0,ffmpeg:0,indic:0,python:0,tabl:0}}) \ No newline at end of file +Search.setIndex({docnames:["index"],envversion:53,filenames:["index.rst"],objects:{"":{ffmpeg:[0,0,0,"-"]},ffmpeg:{Error:[0,1,1,""],colorchannelmixer:[0,2,1,""],compile:[0,2,1,""],concat:[0,2,1,""],crop:[0,2,1,""],drawbox:[0,2,1,""],drawtext:[0,2,1,""],filter:[0,2,1,""],filter_:[0,2,1,""],filter_multi_output:[0,2,1,""],get_args:[0,2,1,""],hflip:[0,2,1,""],hue:[0,2,1,""],input:[0,2,1,""],merge_outputs:[0,2,1,""],output:[0,2,1,""],overlay:[0,2,1,""],overwrite_output:[0,2,1,""],probe:[0,2,1,""],run:[0,2,1,""],run_async:[0,2,1,""],setpts:[0,2,1,""],trim:[0,2,1,""],vflip:[0,2,1,""],view:[0,2,1,""],zoompan:[0,2,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","exception","Python exception"],"2":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:exception","2":"py:function"},terms:{"break":0,"case":0,"default":0,"function":0,"return":0,"true":0,"while":0,For:0,PTS:0,The:0,These:0,Used:0,accept:0,access:0,acodec:0,action:0,activ:0,adjust:0,after:0,alia:0,all:0,allow:0,alpha:0,also:0,altern:0,alwai:0,angl:0,ani:0,anoth:0,appli:0,arab:0,area:0,arg:0,argument:0,around:0,ascent:0,asetpt:0,ask:0,aspect:0,astyp:0,asynchron:0,atom:0,attempt:0,audio:0,audio_bitr:0,author:0,automat:0,avoid:0,axi:0,background:0,base:0,baselin:0,basetim:0,befor:0,behavior:0,behind:0,below:0,between:0,black:0,blend:0,border:0,bordercolor:0,borderw:0,both:0,box:0,boxborderw:0,boxcolor:0,bracket:0,bright:0,build:0,built:0,call:0,can:0,captur:0,capture_stderr:0,capture_stdout:0,chang:0,channel:0,charact:0,check:0,child:0,chroma:0,clip:0,close:0,cmd:0,code:0,codec:0,collid:0,color:0,colorchannelmix:0,com:0,combin:0,command:0,commnad:0,common:0,commun:0,compil:0,concat:0,concaten:0,configur:0,confus:0,connect:0,constant:0,construct:0,consult:0,contain:0,continu:0,convert:0,coord:0,coordin:0,corner:0,correctli:0,correspond:0,count:0,crop:0,crop_bitmap:0,custom:0,dar:0,data:0,debug:0,degre:0,deprec:0,descent:0,detail:0,dictionari:0,differ:0,directli:0,disabl:0,displai:0,distanc:0,document:0,draw:0,drawbox:0,drawn:0,drawtext:0,drop:0,due:0,durat:0,dure:0,dynam:0,each:0,edg:0,effect:0,either:0,empti:0,emul:0,enabl:0,encod:0,encount:0,end:0,end_fram:0,end_pt:0,endal:0,eof:0,eof_act:0,equival:0,err:0,error:0,escape_text:0,etc:0,eval:0,evalu:0,even:0,exactli:0,exampl:0,except:0,exit:0,expand:0,expans:0,explicitli:0,expr:0,express:0,fail:0,fallback:0,fals:0,famili:0,ffmpeg_arg:0,ffprobe:0,file:0,filenam:0,filter:0,filter_:0,filter_multi_output:0,filter_nam:0,first:0,fix:0,fix_bound:0,flag:0,flip:0,fmpeg:0,follow:0,font:0,fontcolor:0,fontcolor_expr:0,fontconfig:0,fontfil:0,fontsiz:0,forc:0,force_autohint:0,format:0,fps:0,frame:0,frame_num:0,from:0,frombuff:0,ft_load_:0,ft_load_flag:0,gbrp:0,gener:0,get_arg:0,github:0,given:0,glyph:0,graph:0,greater:0,grid:0,handl:0,has:0,have:0,hd720:0,height:0,heigth:0,hflip:0,higher:0,highest:0,horizont:0,hour:0,how:0,hsub:0,http:0,hue:0,huge:0,ignore_global_advance_width:0,ignore_transform:0,imag:0,immedi:0,implement:0,in_byt:0,in_filenam:0,in_fram:0,includ:0,incom:0,index:0,inform:0,init:0,initi:0,input:0,input_data:0,instead:0,interpret:0,invalid:0,invert:0,invok:0,its:0,join:0,json:0,just:0,kept:0,keyword:0,kkroen:0,kwarg:0,label:0,last:0,layout:0,left:0,level:0,libfontconfig:0,libfreetyp:0,libfribidi:0,librari:0,line:0,line_h:0,line_spac:0,linear_design:0,list:0,load:0,longest:0,lowest:0,luma:0,mai:0,main:0,main_h:0,main_parent_nod:0,main_w:0,mandatori:0,mani:0,manual:0,map:0,max:0,max_glyph_a:0,max_glyph_d:0,max_glyph_h:0,max_glyph_w:0,maximum:0,mean:0,merge_output:0,messag:0,microsecond:0,min:0,miss:0,mix:0,mode:0,modifi:0,modul:0,monochrom:0,more:0,most:0,mp4:0,multipl:0,must:0,name:0,nan:0,necessari:0,need:0,neg:0,no_autohint:0,no_bitmap:0,no_hint:0,no_recurs:0,no_scal:0,node:0,non:0,none:0,normal:0,number:0,numpi:0,object:0,obtain:0,offici:0,offset:0,onc:0,one:0,onli:0,oper:0,option:0,order:0,orient:0,other:0,otherwis:0,out:0,out_filenam:0,out_fram:0,outlin:0,output:0,over:0,overlai:0,overlaid:0,overlay_parent_nod:0,overrid:0,overwrit:0,overwrite_output:0,pack:0,pad:0,page:0,pan:0,paramet:0,partial:0,pass:0,path:0,pcm:0,pedant:0,pipe:0,pipe_stderr:0,pipe_stdin:0,pipe_stdout:0,pix_fmt:0,pixel:0,place:0,planar:0,pleas:0,point:0,popen:0,posit:0,preced:0,present:0,probe:0,process1:0,process2:0,process:0,produc:0,properti:0,provid:0,pts:0,quiet:0,radian:0,rais:0,rand:0,random:0,rang:0,rate:0,ratio:0,rawvideo:0,read:0,reason:0,refer:0,rel:0,relat:0,reload:0,render:0,repeat:0,repeatlast:0,repres:0,represent:0,reshap:0,resolut:0,respect:0,result:0,retriev:0,revers:0,rgb24:0,rgb:0,right:0,run:0,run_async:0,same:0,sampl:0,san:0,sar:0,satur:0,search:0,second:0,secondari:0,section:0,see:0,segment:0,select:0,sent:0,sequenc:0,set:0,setpt:0,shadow:0,shadowcolor:0,shadowi:0,shadowx:0,shape:0,shorter:0,shortest:0,shorthand:0,should:0,shown:0,silenc:0,singl:0,size:0,sloppi:0,some:0,space:0,special:0,specifi:0,split0:0,split1:0,split:0,standard:0,start:0,start_fram:0,start_numb:0,start_pt:0,stderr:0,stdin:0,stdout:0,stream1:0,stream2:0,stream3:0,stream:0,stream_spec:0,streams_and_filenam:0,strftime:0,string:0,subpart:0,subprocess:0,subsampl:0,suffix:0,suppli:0,support:0,sure:0,synchron:0,synopsi:0,syntax:0,system:0,tab:0,tabsiz:0,take:0,tc24hmax:0,tell:0,termin:0,text:0,text_h:0,text_shap:0,text_w:0,textfil:0,than:0,thei:0,them:0,thi:0,thick:0,through:0,thrown:0,time:0,timebas:0,timecod:0,timecode_r:0,timestamp:0,tobyt:0,togeth:0,top:0,track:0,trim:0,tupl:0,type:0,uint8:0,unit:0,unknown:0,unsaf:0,until:0,updat:0,upper:0,upward:0,url:0,use:0,used:0,useful:0,user:0,uses:0,using:0,utf:0,util:0,valu:0,variabl:0,variou:0,vcodec:0,verbatim:0,vertic:0,vertical_layout:0,vflip:0,video:0,video_bitr:0,view:0,visibl:0,vsub:0,wai:0,wait:0,well:0,whatev:0,when:0,where:0,which:0,white:0,width:0,within:0,without:0,work:0,wrap:0,write:0,you:0,yuv420:0,yuv420p:0,yuv422:0,yuv422p:0,yuv444:0,zero:0,zoom:0,zoompan:0},titles:["ffmpeg-python: Python bindings for FFmpeg"],titleterms:{bind:0,ffmpeg:0,indic:0,python:0,tabl:0}}) \ No newline at end of file From 8de06a2d7a104a37977f6dfb13a1b2d94fa0d37a Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Sun, 25 Nov 2018 21:51:48 -0600 Subject: [PATCH 10/60] Release 0.1.17 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index d551e987..367b74e9 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup from textwrap import dedent -version = '0.1.16' +version = '0.1.17' download_url = 'https://github.com/kkroening/ffmpeg-python/archive/v{}.zip'.format(version) long_description = dedent("""\ From efae32583459ce7181fd5bce7d2f512d1d5e9d5b Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Sun, 25 Nov 2018 21:57:32 -0600 Subject: [PATCH 11/60] Add another example link in the main readme --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index c2843549..10ccbb60 100644 --- a/README.md +++ b/README.md @@ -100,6 +100,10 @@ Here are a few: - [Convert video to numpy array](https://github.com/kkroening/ffmpeg-python/blob/master/examples/README.md#convert-video-to-numpy-array) - [Generate thumbnail for video](https://github.com/kkroening/ffmpeg-python/blob/master/examples/README.md#generate-thumbnail-for-video) - [Read raw PCM audio via pipe](https://github.com/kkroening/ffmpeg-python/blob/master/examples/README.md#convert-sound-to-raw-pcm-audio) +- [Tensorflow/DeepDream streaming](https://github.com/kkroening/ffmpeg-python/blob/master/examples/README.md#tensorflow-streaming) + +deep dream streaming + - [JupyterLab/Notebook stream editor](https://github.com/kkroening/ffmpeg-python/blob/master/examples/README.md#jupyter-stream-editor) jupyter demo From eef4da1b270eae56f2367ef0af7356d684604a64 Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Sun, 25 Nov 2018 21:59:33 -0600 Subject: [PATCH 12/60] Slight reordering in readme --- README.md | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 10ccbb60..8d716cd8 100644 --- a/README.md +++ b/README.md @@ -100,14 +100,15 @@ Here are a few: - [Convert video to numpy array](https://github.com/kkroening/ffmpeg-python/blob/master/examples/README.md#convert-video-to-numpy-array) - [Generate thumbnail for video](https://github.com/kkroening/ffmpeg-python/blob/master/examples/README.md#generate-thumbnail-for-video) - [Read raw PCM audio via pipe](https://github.com/kkroening/ffmpeg-python/blob/master/examples/README.md#convert-sound-to-raw-pcm-audio) -- [Tensorflow/DeepDream streaming](https://github.com/kkroening/ffmpeg-python/blob/master/examples/README.md#tensorflow-streaming) - -deep dream streaming - [JupyterLab/Notebook stream editor](https://github.com/kkroening/ffmpeg-python/blob/master/examples/README.md#jupyter-stream-editor) jupyter demo +- [Tensorflow/DeepDream streaming](https://github.com/kkroening/ffmpeg-python/blob/master/examples/README.md#tensorflow-streaming) + +deep dream streaming + See the [Examples README](https://github.com/kkroening/ffmpeg-python/tree/master/examples) for additional examples. ## [API Reference](https://kkroening.github.io/ffmpeg-python/) From 3ddc5f04bfc9f0f5e7da05e48546b5d91cac62c9 Mon Sep 17 00:00:00 2001 From: Andrey Kolpakov Date: Thu, 11 Apr 2019 10:52:26 +0200 Subject: [PATCH 13/60] Ability to accept extra arguments for ffmpeg.probe command (Issue #187) --- ffmpeg/_probe.py | 8 ++++++-- ffmpeg/_run.py | 16 +++------------- ffmpeg/_utils.py | 11 +++++++++++ ffmpeg/tests/test_ffmpeg.py | 5 +++++ 4 files changed, 25 insertions(+), 15 deletions(-) diff --git a/ffmpeg/_probe.py b/ffmpeg/_probe.py index 2bcf6368..61db84bb 100644 --- a/ffmpeg/_probe.py +++ b/ffmpeg/_probe.py @@ -1,9 +1,10 @@ import json import subprocess from ._run import Error +from ._utils import convert_kwargs_to_cmd_line_args -def probe(filename, cmd='ffprobe'): +def probe(filename, cmd='ffprobe', **kwargs): """Run ffprobe on the specified file and return a JSON representation of the output. Raises: @@ -12,7 +13,10 @@ def probe(filename, cmd='ffprobe'): The stderr output can be retrieved by accessing the ``stderr`` property of the exception. """ - args = [cmd, '-show_format', '-show_streams', '-of', 'json', filename] + args = [cmd, '-show_format', '-show_streams', '-of', 'json'] + args += convert_kwargs_to_cmd_line_args(kwargs) + args += [filename] + p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) out, err = p.communicate() if p.returncode != 0: diff --git a/ffmpeg/_run.py b/ffmpeg/_run.py index a0189be2..f820c1ca 100644 --- a/ffmpeg/_run.py +++ b/ffmpeg/_run.py @@ -1,6 +1,6 @@ from __future__ import unicode_literals from .dag import get_outgoing_edges, topo_sort -from ._utils import basestring +from ._utils import basestring, convert_kwargs_to_cmd_line_args from builtins import str from functools import reduce import collections @@ -29,16 +29,6 @@ def __init__(self, cmd, stdout, stderr): self.stderr = stderr -def _convert_kwargs_to_cmd_line_args(kwargs): - args = [] - for k in sorted(kwargs.keys()): - v = kwargs[k] - args.append('-{}'.format(k)) - if v is not None: - args.append('{}'.format(v)) - return args - - def _get_input_args(input_node): if input_node.name == input.__name__: kwargs = copy.copy(input_node.kwargs) @@ -50,7 +40,7 @@ def _get_input_args(input_node): args += ['-f', fmt] if video_size: args += ['-video_size', '{}x{}'.format(video_size[0], video_size[1])] - args += _convert_kwargs_to_cmd_line_args(kwargs) + args += convert_kwargs_to_cmd_line_args(kwargs) args += ['-i', filename] else: raise ValueError('Unsupported input node: {}'.format(input_node)) @@ -136,7 +126,7 @@ def _get_output_args(node, stream_name_map): if not isinstance(video_size, basestring) and isinstance(video_size, collections.Iterable): video_size = '{}x{}'.format(video_size[0], video_size[1]) args += ['-video_size', video_size] - args += _convert_kwargs_to_cmd_line_args(kwargs) + args += convert_kwargs_to_cmd_line_args(kwargs) args += [filename] return args diff --git a/ffmpeg/_utils.py b/ffmpeg/_utils.py index 3514409d..0c1df622 100644 --- a/ffmpeg/_utils.py +++ b/ffmpeg/_utils.py @@ -78,3 +78,14 @@ def escape_chars(text, chars): for ch in chars: text = text.replace(ch, '\\' + ch) return text + + +def convert_kwargs_to_cmd_line_args(kwargs): + """Helper function to build command line arguments out of dict.""" + args = [] + for k in sorted(kwargs.keys()): + v = kwargs[k] + args.append('-{}'.format(k)) + if v is not None: + args.append('{}'.format(v)) + return args diff --git a/ffmpeg/tests/test_ffmpeg.py b/ffmpeg/tests/test_ffmpeg.py index f665e8ec..b9e5d3a2 100644 --- a/ffmpeg/tests/test_ffmpeg.py +++ b/ffmpeg/tests/test_ffmpeg.py @@ -650,3 +650,8 @@ def test__probe__exception(): ffmpeg.probe(BOGUS_INPUT_FILE) assert str(excinfo.value) == 'ffprobe error (see stderr output for detail)' assert 'No such file or directory'.encode() in excinfo.value.stderr + + +def test__probe__extra_args(): + data = ffmpeg.probe(TEST_INPUT_FILE1, show_frames=None) + assert set(data.keys()) == {'format', 'streams', 'frames'} From 754d2b7227619d8cd512b025a16f72d0b56c05eb Mon Sep 17 00:00:00 2001 From: apatsekin Date: Mon, 15 Apr 2019 13:52:29 -0400 Subject: [PATCH 14/60] Update README.md non-existing parameter --- examples/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/README.md b/examples/README.md index 208c7b55..8ceade8c 100644 --- a/examples/README.md +++ b/examples/README.md @@ -51,7 +51,7 @@ out, _ = ( .input(in_filename) .filter('select', 'gte(n,{})'.format(frame_num)) .output('pipe:', vframes=1, format='image2', vcodec='mjpeg') - .run(capture_output=True) + .run(capture_stdout=True) ) ``` From f641413ed88dd0068201b224eac7a291cbefd0c5 Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Thu, 18 Apr 2019 01:56:29 -0500 Subject: [PATCH 15/60] Fix CI issue with ffmpeg download link --- .travis.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 67b1a892..c58274b8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,9 +2,9 @@ language: python before_install: - > [ -f ffmpeg-release/ffmpeg ] || ( - curl -O https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-64bit-static.tar.xz && + curl -O https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz && mkdir -p ffmpeg-release && - tar Jxf ffmpeg-release-64bit-static.tar.xz --strip-components=1 -C ffmpeg-release + tar Jxf ffmpeg-release-amd64-static.tar.xz --strip-components=1 -C ffmpeg-release ) matrix: include: From 35695d93d4d3b1bf3b189d417b6a8962035d4909 Mon Sep 17 00:00:00 2001 From: Jim DeLaHunt Date: Sat, 18 May 2019 00:13:04 -0700 Subject: [PATCH 16/60] Fix typo "fmpeg-python" to read "ffmpeg-python" --- ffmpeg/_filters.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ffmpeg/_filters.py b/ffmpeg/_filters.py index 6ba30d34..2cbdb362 100644 --- a/ffmpeg/_filters.py +++ b/ffmpeg/_filters.py @@ -29,7 +29,7 @@ def filter(stream_spec, filter_name, *args, **kwargs): """Apply custom filter. ``filter_`` is normally used by higher-level filter functions such as ``hflip``, but if a filter implementation - is missing from ``fmpeg-python``, you can call ``filter_`` directly to have ``fmpeg-python`` pass the filter name + is missing from ``ffmpeg-python``, you can call ``filter_`` directly to have ``ffmpeg-python`` pass the filter name and arguments to ffmpeg verbatim. Args: From 881ae4efff9e3c0d987217f9437a254730315b87 Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Mon, 3 Jun 2019 01:11:48 -0500 Subject: [PATCH 17/60] Add `.audio` + `.video` operators --- examples/README.md | 8 +++--- ffmpeg/nodes.py | 54 +++++++++++++++++++++++++++++++++++-- ffmpeg/tests/test_ffmpeg.py | 15 +++++++---- setup.py | 7 +++++ 4 files changed, 73 insertions(+), 11 deletions(-) diff --git a/examples/README.md b/examples/README.md index 8ceade8c..4ec816e2 100644 --- a/examples/README.md +++ b/examples/README.md @@ -104,10 +104,10 @@ With additional filtering: ```python in1 = ffmpeg.input('in1.mp4') in2 = ffmpeg.input('in2.mp4') -v1 = in1['v'].hflip() -a1 = in1['a'] -v2 = in2['v'].filter('reverse').filter('hue', s=0) -a2 = in2['a'].filter('areverse').filter('aphaser') +v1 = in1.video.hflip() +a1 = in1.audio +v2 = in2.video.filter('reverse').filter('hue', s=0) +a2 = in2.audio.filter('areverse').filter('aphaser') joined = ffmpeg.concat(v1, a1, v2, a2, v=1, a=1).node v3 = joined[0] a3 = joined[1].filter('volume', 0.8) diff --git a/ffmpeg/nodes.py b/ffmpeg/nodes.py index ae507633..d558e223 100644 --- a/ffmpeg/nodes.py +++ b/ffmpeg/nodes.py @@ -53,8 +53,8 @@ def __getitem__(self, index): Process the audio and video portions of a stream independently:: input = ffmpeg.input('in.mp4') - audio = input[:'a'].filter("aecho", 0.8, 0.9, 1000, 0.3) - video = input[:'v'].hflip() + audio = input['a'].filter("aecho", 0.8, 0.9, 1000, 0.3) + video = input['v'].hflip() out = ffmpeg.output(audio, video, 'out.mp4') """ if self.selector is not None: @@ -63,6 +63,56 @@ def __getitem__(self, index): raise TypeError("Expected string index (e.g. 'a'); got {!r}".format(index)) return self.node.stream(label=self.label, selector=index) + @property + def audio(self): + """Select the audio-portion of a stream. + + Some ffmpeg filters drop audio streams, and care must be taken + to preserve the audio in the final output. The ``.audio`` and + ``.video`` operators can be used to reference the audio/video + portions of a stream so that they can be processed separately + and then re-combined later in the pipeline. This dilemma is + intrinsic to ffmpeg, and ffmpeg-python tries to stay out of the + way while users may refer to the official ffmpeg documentation + as to why certain filters drop audio. + + ``stream.audio`` is a shorthand for ``stream['a']``. + + Example: + Process the audio and video portions of a stream independently:: + + input = ffmpeg.input('in.mp4') + audio = input.audio.filter("aecho", 0.8, 0.9, 1000, 0.3) + video = input.video.hflip() + out = ffmpeg.output(audio, video, 'out.mp4') + """ + return self['a'] + + @property + def video(self): + """Select the video-portion of a stream. + + Some ffmpeg filters drop audio streams, and care must be taken + to preserve the audio in the final output. The ``.audio`` and + ``.video`` operators can be used to reference the audio/video + portions of a stream so that they can be processed separately + and then re-combined later in the pipeline. This dilemma is + intrinsic to ffmpeg, and ffmpeg-python tries to stay out of the + way while users may refer to the official ffmpeg documentation + as to why certain filters drop audio. + + ``stream.video`` is a shorthand for ``stream['v']``. + + Example: + Process the audio and video portions of a stream independently:: + + input = ffmpeg.input('in.mp4') + audio = input.audio.filter("aecho", 0.8, 0.9, 1000, 0.3) + video = input.video.hflip() + out = ffmpeg.output(audio, video, 'out.mp4') + """ + return self['v'] + def get_stream_map(stream_spec): if stream_spec is None: diff --git a/ffmpeg/tests/test_ffmpeg.py b/ffmpeg/tests/test_ffmpeg.py index b9e5d3a2..8bb3975e 100644 --- a/ffmpeg/tests/test_ffmpeg.py +++ b/ffmpeg/tests/test_ffmpeg.py @@ -175,10 +175,15 @@ def test_combined_output(): ] -def test_filter_with_selector(): +@pytest.mark.parametrize('use_shorthand', [True, False]) +def test_filter_with_selector(use_shorthand): i = ffmpeg.input(TEST_INPUT_FILE1) - v1 = i['v'].hflip() - a1 = i['a'].filter('aecho', 0.8, 0.9, 1000, 0.3) + if use_shorthand: + v1 = i.video.hflip() + a1 = i.audio.filter('aecho', 0.8, 0.9, 1000, 0.3) + else: + v1 = i['v'].hflip() + a1 = i['a'].filter('aecho', 0.8, 0.9, 1000, 0.3) out = ffmpeg.output(a1, v1, TEST_OUTPUT_FILE1) assert out.get_args() == [ '-i', TEST_INPUT_FILE1, @@ -273,7 +278,7 @@ def test_filter_concat__audio_only(): def test_filter_concat__audio_video(): in1 = ffmpeg.input('in1.mp4') in2 = ffmpeg.input('in2.mp4') - joined = ffmpeg.concat(in1['v'], in1['a'], in2.hflip(), in2['a'], v=1, a=1).node + joined = ffmpeg.concat(in1.video, in1.audio, in2.hflip(), in2['a'], v=1, a=1).node args = ( ffmpeg .output(joined[0], joined[1], 'out.mp4') @@ -298,7 +303,7 @@ def test_filter_concat__wrong_stream_count(): in1 = ffmpeg.input('in1.mp4') in2 = ffmpeg.input('in2.mp4') with pytest.raises(ValueError) as excinfo: - ffmpeg.concat(in1['v'], in1['a'], in2.hflip(), v=1, a=1).node + ffmpeg.concat(in1.video, in1.audio, in2.hflip(), v=1, a=1).node assert str(excinfo.value) == \ 'Expected concat input streams to have length multiple of 2 (v=1, a=1); got 3' diff --git a/setup.py b/setup.py index 367b74e9..9ec29ddc 100644 --- a/setup.py +++ b/setup.py @@ -67,6 +67,13 @@ keywords=keywords, long_description=long_description, install_requires=['future'], + extras_require={ + 'dev': [ + 'future', + 'pytest', + 'pytest-mock', + ], + }, classifiers=[ 'Intended Audience :: Developers', 'License :: OSI Approved :: Apache Software License', From 5c4a5c720fe84a9770403beb2959cd35a4232d31 Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Mon, 3 Jun 2019 01:32:44 -0500 Subject: [PATCH 18/60] Include `Stream` class in API docs --- ffmpeg/__init__.py | 22 +++++++++++---- ffmpeg/_filters.py | 2 +- ffmpeg/nodes.py | 5 ++++ requirements-base.txt | 6 ---- requirements.txt | 66 +++++++++++++++++++++++-------------------- setup.py | 8 ++++-- 6 files changed, 64 insertions(+), 45 deletions(-) delete mode 100644 requirements-base.txt diff --git a/ffmpeg/__init__.py b/ffmpeg/__init__.py index 7e913d37..a88d344d 100644 --- a/ffmpeg/__init__.py +++ b/ffmpeg/__init__.py @@ -1,10 +1,22 @@ from __future__ import unicode_literals - -from . import _filters, _ffmpeg, _run, _probe -from ._filters import * +from . import nodes +from . import _ffmpeg +from . import _filters +from . import _probe +from . import _run +from . import _view +from .nodes import * from ._ffmpeg import * +from ._filters import * +from ._probe import * from ._run import * from ._view import * -from ._probe import * -__all__ = _filters.__all__ + _ffmpeg.__all__ + _run.__all__ + _view.__all__ + _probe.__all__ +__all__ = ( + nodes.__all__ + + _ffmpeg.__all__ + + _probe.__all__ + + _run.__all__ + + _view.__all__ + + _filters.__all__ +) diff --git a/ffmpeg/_filters.py b/ffmpeg/_filters.py index 2cbdb362..cc550bfc 100644 --- a/ffmpeg/_filters.py +++ b/ffmpeg/_filters.py @@ -8,7 +8,7 @@ def filter_multi_output(stream_spec, filter_name, *args, **kwargs): """Apply custom filter with one or more outputs. - This is the same as ``filter_`` except that the filter can produce more than one output. + This is the same as ``filter`` except that the filter can produce more than one output. To reference an output stream, use either the ``.stream`` operator or bracket shorthand: diff --git a/ffmpeg/nodes.py b/ffmpeg/nodes.py index d558e223..34d1e44a 100644 --- a/ffmpeg/nodes.py +++ b/ffmpeg/nodes.py @@ -336,3 +336,8 @@ def filter_operator(name=None): def output_operator(name=None): return stream_operator(stream_classes={OutputStream}, name=name) + + +__all__ = [ + 'Stream', +] diff --git a/requirements-base.txt b/requirements-base.txt deleted file mode 100644 index 6afd1528..00000000 --- a/requirements-base.txt +++ /dev/null @@ -1,6 +0,0 @@ -future -pytest -pytest-mock -pytest-runner -sphinx -tox diff --git a/requirements.txt b/requirements.txt index dfec4a10..bf565e9a 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,33 +1,39 @@ -alabaster==0.7.10 -apipkg==1.4 -Babel==2.5.1 -certifi==2017.7.27.1 +alabaster==0.7.12 +atomicwrites==1.3.0 +attrs==19.1.0 +Babel==2.7.0 +certifi==2019.3.9 chardet==3.0.4 docutils==0.14 -execnet==1.5.0 -funcsigs==1.0.2 -future==0.16.0 -idna==2.6 -imagesize==0.7.1 -Jinja2==2.9.6 -MarkupSafe==1.0 -mock==2.0.0 -pbr==4.0.3 -pluggy==0.5.2 -py==1.4.34 -Pygments==2.2.0 -pytest==3.2.3 -pytest-forked==0.2 -pytest-mock==1.10.0 -pytest-runner==3.0 -pytest-xdist==1.22.2 -pytz==2017.3 -requests==2.18.4 -six==1.11.0 +filelock==3.0.12 +future==0.17.1 +idna==2.8 +imagesize==1.1.0 +importlib-metadata==0.17 +Jinja2==2.10.1 +MarkupSafe==1.1.1 +more-itertools==7.0.0 +packaging==19.0 +pluggy==0.12.0 +py==1.8.0 +Pygments==2.4.2 +pyparsing==2.4.0 +pytest==4.6.1 +pytest-mock==1.10.4 +pytz==2019.1 +requests==2.22.0 +six==1.12.0 snowballstemmer==1.2.1 -Sphinx==1.6.5 -sphinxcontrib-websupport==1.0.1 -tox==2.9.1 -typing==3.6.2 -urllib3==1.22 -virtualenv==15.1.0 +Sphinx==2.1.0 +sphinxcontrib-applehelp==1.0.1 +sphinxcontrib-devhelp==1.0.1 +sphinxcontrib-htmlhelp==1.0.2 +sphinxcontrib-jsmath==1.0.1 +sphinxcontrib-qthelp==1.0.2 +sphinxcontrib-serializinghtml==1.1.3 +toml==0.10.0 +tox==3.12.1 +urllib3==1.25.3 +virtualenv==16.6.0 +wcwidth==0.1.7 +zipp==0.5.1 diff --git a/setup.py b/setup.py index 9ec29ddc..8d54b9dc 100644 --- a/setup.py +++ b/setup.py @@ -69,9 +69,11 @@ install_requires=['future'], extras_require={ 'dev': [ - 'future', - 'pytest', - 'pytest-mock', + 'future==0.17.1', + 'pytest-mock==1.10.4', + 'pytest==4.6.1', + 'Sphinx==2.1.0', + 'tox==3.12.1', ], }, classifiers=[ From 995cf67d7d0ab2efdc7817c2c7351a3cd3c60800 Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Mon, 3 Jun 2019 01:54:35 -0500 Subject: [PATCH 19/60] Update docs --- doc/html/.buildinfo | 2 +- doc/html/_static/ajax-loader.gif | Bin 673 -> 0 bytes doc/html/_static/basic.css | 102 +- doc/html/_static/comment-bright.png | Bin 756 -> 0 bytes doc/html/_static/comment-close.png | Bin 829 -> 0 bytes doc/html/_static/comment.png | Bin 641 -> 0 bytes doc/html/_static/doctools.js | 13 +- doc/html/_static/documentation_options.js | 5 +- doc/html/_static/down-pressed.png | Bin 222 -> 0 bytes doc/html/_static/down.png | Bin 202 -> 0 bytes doc/html/_static/language_data.js | 297 ++++++ doc/html/_static/nature.css | 2 +- doc/html/_static/searchtools.js | 401 ++------ doc/html/_static/up-pressed.png | Bin 214 -> 0 bytes doc/html/_static/up.png | Bin 203 -> 0 bytes doc/html/_static/websupport.js | 808 ---------------- doc/html/genindex.html | 40 +- doc/html/index.html | 1037 ++++++++++----------- doc/html/objects.inv | Bin 435 -> 466 bytes doc/html/py-modindex.html | 17 +- doc/html/search.html | 18 +- doc/html/searchindex.js | 2 +- 22 files changed, 1042 insertions(+), 1702 deletions(-) delete mode 100644 doc/html/_static/ajax-loader.gif delete mode 100644 doc/html/_static/comment-bright.png delete mode 100644 doc/html/_static/comment-close.png delete mode 100644 doc/html/_static/comment.png delete mode 100644 doc/html/_static/down-pressed.png delete mode 100644 doc/html/_static/down.png create mode 100644 doc/html/_static/language_data.js delete mode 100644 doc/html/_static/up-pressed.png delete mode 100644 doc/html/_static/up.png delete mode 100644 doc/html/_static/websupport.js diff --git a/doc/html/.buildinfo b/doc/html/.buildinfo index d6bd9a86..c4716546 100644 --- a/doc/html/.buildinfo +++ b/doc/html/.buildinfo @@ -1,4 +1,4 @@ # Sphinx build info version 1 # This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. -config: ddab88374862866bf6c9e1a22614e4c7 +config: f3635c9edf6e9bff1735d57d26069ada tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/doc/html/_static/ajax-loader.gif b/doc/html/_static/ajax-loader.gif deleted file mode 100644 index 61faf8cab23993bd3e1560bff0668bd628642330..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 673 zcmZ?wbhEHb6krfw_{6~Q|Nno%(3)e{?)x>&1u}A`t?OF7Z|1gRivOgXi&7IyQd1Pl zGfOfQ60;I3a`F>X^fL3(@);C=vM_KlFfb_o=k{|A33hf2a5d61U}gjg=>Rd%XaNQW zW@Cw{|b%Y*pl8F?4B9 zlo4Fz*0kZGJabY|>}Okf0}CCg{u4`zEPY^pV?j2@h+|igy0+Kz6p;@SpM4s6)XEMg z#3Y4GX>Hjlml5ftdH$4x0JGdn8~MX(U~_^d!Hi)=HU{V%g+mi8#UGbE-*ao8f#h+S z2a0-5+vc7MU$e-NhmBjLIC1v|)9+Im8x1yacJ7{^tLX(ZhYi^rpmXm0`@ku9b53aN zEXH@Y3JaztblgpxbJt{AtE1ad1Ca>{v$rwwvK(>{m~Gf_=-Ro7Fk{#;i~+{{>QtvI yb2P8Zac~?~=sRA>$6{!(^3;ZP0TPFR(G_-UDU(8Jl0?(IXu$~#4A!880|o%~Al1tN diff --git a/doc/html/_static/basic.css b/doc/html/_static/basic.css index 19ced105..c41d718e 100644 --- a/doc/html/_static/basic.css +++ b/doc/html/_static/basic.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- basic theme. * - * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -81,6 +81,10 @@ div.sphinxsidebar input { font-size: 1em; } +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + div.sphinxsidebar #searchbox input[type="text"] { float: left; width: 80%; @@ -227,6 +231,16 @@ a.headerlink { visibility: hidden; } +a.brackets:before, +span.brackets > a:before{ + content: "["; +} + +a.brackets:after, +span.brackets > a:after { + content: "]"; +} + h1:hover > a.headerlink, h2:hover > a.headerlink, h3:hover > a.headerlink, @@ -275,6 +289,12 @@ img.align-center, .figure.align-center, object.align-center { margin-right: auto; } +img.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + .align-left { text-align: left; } @@ -283,6 +303,10 @@ img.align-center, .figure.align-center, object.align-center { text-align: center; } +.align-default { + text-align: center; +} + .align-right { text-align: right; } @@ -354,6 +378,11 @@ table.align-center { margin-right: auto; } +table.align-default { + margin-left: auto; + margin-right: auto; +} + table caption span.caption-number { font-style: italic; } @@ -387,6 +416,16 @@ table.citation td { border-bottom: none; } +th > p:first-child, +td > p:first-child { + margin-top: 0px; +} + +th > p:last-child, +td > p:last-child { + margin-bottom: 0px; +} + /* -- figures --------------------------------------------------------------- */ div.figure { @@ -427,6 +466,13 @@ table.field-list td, table.field-list th { hyphens: manual; } +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist td { + vertical-align: top; +} + + /* -- other body styles ----------------------------------------------------- */ ol.arabic { @@ -449,11 +495,57 @@ ol.upperroman { list-style: upper-roman; } +li > p:first-child { + margin-top: 0px; +} + +li > p:last-child { + margin-bottom: 0px; +} + +dl.footnote > dt, +dl.citation > dt { + float: left; +} + +dl.footnote > dd, +dl.citation > dd { + margin-bottom: 0em; +} + +dl.footnote > dd:after, +dl.citation > dd:after { + content: ""; + clear: both; +} + +dl.field-list { + display: flex; + flex-wrap: wrap; +} + +dl.field-list > dt { + flex-basis: 20%; + font-weight: bold; + word-break: break-word; +} + +dl.field-list > dt:after { + content: ":"; +} + +dl.field-list > dd { + flex-basis: 70%; + padding-left: 1em; + margin-left: 0em; + margin-bottom: 0em; +} + dl { margin-bottom: 15px; } -dd p { +dd > p:first-child { margin-top: 0px; } @@ -526,6 +618,12 @@ dl.glossary dt { font-style: oblique; } +.classifier:before { + font-style: normal; + margin: 0.5em; + content: ":"; +} + abbr, acronym { border-bottom: dotted 1px; cursor: help; diff --git a/doc/html/_static/comment-bright.png b/doc/html/_static/comment-bright.png deleted file mode 100644 index 15e27edb12ac25701ac0ac21b97b52bb4e45415e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 756 zcmVgfIX78 z$8Pzv({A~p%??+>KickCb#0FM1rYN=mBmQ&Nwp<#JXUhU;{|)}%&s>suq6lXw*~s{ zvHx}3C%<;wE5CH!BR{p5@ml9ws}y)=QN-kL2?#`S5d*6j zk`h<}j1>tD$b?4D^N9w}-k)bxXxFg>+#kme^xx#qg6FI-%iv2U{0h(Y)cs%5a|m%Pn_K3X_bDJ>EH#(Fb73Z zfUt2Q3B>N+ot3qb*DqbTZpFIn4a!#_R-}{?-~Hs=xSS6p&$sZ-k1zDdtqU`Y@`#qL z&zv-~)Q#JCU(dI)Hf;$CEnK=6CK50}q7~wdbI->?E07bJ0R;!GSQTs5Am`#;*WHjvHRvY?&$Lm-vq1a_BzocI^ULXV!lbMd%|^B#fY;XX)n<&R^L z=84u1e_3ziq;Hz-*k5~zwY3*oDKt0;bM@M@@89;@m*4RFgvvM_4;5LB!@OB@^WbVT zjl{t;a8_>od-~P4 m{5|DvB&z#xT;*OnJqG}gk~_7HcNkCr0000W zanA~u9RIXo;n7c96&U)YLgs-FGlx~*_c{Jgvesu1E5(8YEf&5wF=YFPcRe@1=MJmi zag(L*xc2r0(slpcN!vC5CUju;vHJkHc*&70_n2OZsK%O~A=!+YIw z7zLLl7~Z+~RgWOQ=MI6$#0pvpu$Q43 zP@36QAmu6!_9NPM?o<1_!+stoVRRZbW9#SPe!n;#A_6m8f}|xN1;H{`0RoXQ2LM47 zt(g;iZ6|pCb@h2xk&(}S3=EVBUO0e90m2Lp5CB<(SPIaB;n4))3JB87Or#XPOPcum z?<^(g+m9}VNn4Y&B`g8h{t_$+RB1%HKRY6fjtd-<7&EsU;vs0GM(Lmbhi%Gwcfs0FTF}T zL{_M6Go&E0Eg8FuB*(Yn+Z*RVTBE@10eIOb3El^MhO`GabDll(V0&FlJi2k^;q8af zkENdk2}x2)_KVp`5OAwXZM;dG0?M-S)xE1IKDi6BY@5%Or?#aZ9$gcX)dPZ&wA1a< z$rFXHPn|TBf`e?>Are8sKtKrKcjF$i^lp!zkL?C|y^vlHr1HXeVJd;1I~g&Ob-q)& z(fn7s-KI}G{wnKzg_U5G(V%bX6uk zIa+<@>rdmZYd!9Y=C0cuchrbIjuRB_Wq{-RXlic?flu1*_ux}x%(HDH&nT`k^xCeC ziHi1!ChH*sQ6|UqJpTTzX$aw8e(UfcS^f;6yBWd+(1-70zU(rtxtqR%j z-lsH|CKQJXqD{+F7V0OTv8@{~(wp(`oIP^ZykMWgR>&|RsklFMCnOo&Bd{le} zV5F6424Qzl;o2G%oVvmHgRDP9!=rK8fy^!yV8y*4p=??uIRrrr0?>O!(z*g5AvL2!4z0{sq%vhG*Po}`a<6%kTK5TNhtC8}rXNu&h^QH4A&Sk~Autm*s~45(H7+0bi^MraaRVzr05hQ3iK?j` zR#U@^i0WhkIHTg29u~|ypU?sXCQEQgXfObPW;+0YAF;|5XyaMAEM0sQ@4-xCZe=0e z7r$ofiAxn@O5#RodD8rh5D@nKQ;?lcf@tg4o+Wp44aMl~c47azN_(im0N)7OqdPBC zGw;353_o$DqGRDhuhU$Eaj!@m000000NkvXXu0mjfjZ7Z_ diff --git a/doc/html/_static/doctools.js b/doc/html/_static/doctools.js index d8928926..b33f87fc 100644 --- a/doc/html/_static/doctools.js +++ b/doc/html/_static/doctools.js @@ -4,7 +4,7 @@ * * Sphinx JavaScript utilities for all documentation. * - * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ @@ -87,14 +87,13 @@ jQuery.fn.highlightText = function(text, className) { node.nextSibling)); node.nodeValue = val.substr(0, pos); if (isInSVG) { - var bbox = span.getBBox(); var rect = document.createElementNS("http://www.w3.org/2000/svg", "rect"); - rect.x.baseVal.value = bbox.x; + var bbox = node.parentElement.getBBox(); + rect.x.baseVal.value = bbox.x; rect.y.baseVal.value = bbox.y; rect.width.baseVal.value = bbox.width; rect.height.baseVal.value = bbox.height; rect.setAttribute('class', className); - var parentOfText = node.parentNode.parentNode; addItems.push({ "parent": node.parentNode, "target": rect}); @@ -150,7 +149,9 @@ var Documentation = { this.fixFirefoxAnchorBug(); this.highlightSearchWords(); this.initIndexTable(); - + if (DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) { + this.initOnKeyListeners(); + } }, /** @@ -310,4 +311,4 @@ _ = Documentation.gettext; $(document).ready(function() { Documentation.init(); -}); \ No newline at end of file +}); diff --git a/doc/html/_static/documentation_options.js b/doc/html/_static/documentation_options.js index d0b0ed27..6d865102 100644 --- a/doc/html/_static/documentation_options.js +++ b/doc/html/_static/documentation_options.js @@ -1,9 +1,10 @@ var DOCUMENTATION_OPTIONS = { - URL_ROOT: '', + URL_ROOT: document.getElementById("documentation_options").getAttribute('data-url_root'), VERSION: '', LANGUAGE: 'None', COLLAPSE_INDEX: false, FILE_SUFFIX: '.html', HAS_SOURCE: true, - SOURCELINK_SUFFIX: '.txt' + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false }; \ No newline at end of file diff --git a/doc/html/_static/down-pressed.png b/doc/html/_static/down-pressed.png deleted file mode 100644 index 5756c8cad8854722893dc70b9eb4bb0400343a39..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 222 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`OFdm2Ln;`PZ^+1>KjR?B@S0W7 z%OS_REiHONoJ6{+Ks@6k3590|7k9F+ddB6!zw3#&!aw#S`x}3V3&=A(a#84O-&F7T z^k3tZB;&iR9siw0|F|E|DAL<8r-F4!1H-;1{e*~yAKZN5f0|Ei6yUmR#Is)EM(Po_ zi`qJR6|P<~+)N+kSDgL7AjdIC_!O7Q?eGb+L+qOjm{~LLinM4NHn7U%HcK%uoMYO5 VJ~8zD2B3o(JYD@<);T3K0RV0%P>BEl diff --git a/doc/html/_static/down.png b/doc/html/_static/down.png deleted file mode 100644 index 1b3bdad2ceffae91cee61b32f3295f9bbe646e48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 202 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6CVIL!hEy=F?b*7pIY7kW{q%Rg zx!yQ<9v8bmJwa`TQk7YSw}WVQ()mRdQ;TC;* diff --git a/doc/html/_static/language_data.js b/doc/html/_static/language_data.js new file mode 100644 index 00000000..5266fb19 --- /dev/null +++ b/doc/html/_static/language_data.js @@ -0,0 +1,297 @@ +/* + * language_data.js + * ~~~~~~~~~~~~~~~~ + * + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + * + * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +var stopwords = ["a","and","are","as","at","be","but","by","for","if","in","into","is","it","near","no","not","of","on","or","such","that","the","their","then","there","these","they","this","to","was","will","with"]; + + +/* Non-minified version JS is _stemmer.js if file is provided */ +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + + + + + +var splitChars = (function() { + var result = {}; + var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648, + 1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702, + 2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971, + 2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345, + 3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761, + 3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823, + 4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125, + 8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695, + 11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587, + 43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141]; + var i, j, start, end; + for (i = 0; i < singles.length; i++) { + result[singles[i]] = true; + } + var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709], + [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161], + [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568], + [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807], + [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047], + [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383], + [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450], + [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547], + [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673], + [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820], + [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946], + [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023], + [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173], + [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332], + [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481], + [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718], + [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791], + [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095], + [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205], + [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687], + [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968], + [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869], + [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102], + [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271], + [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592], + [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822], + [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167], + [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959], + [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143], + [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318], + [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483], + [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101], + [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567], + [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292], + [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444], + [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783], + [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311], + [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511], + [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774], + [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071], + [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263], + [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519], + [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647], + [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967], + [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295], + [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274], + [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007], + [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381], + [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]]; + for (i = 0; i < ranges.length; i++) { + start = ranges[i][0]; + end = ranges[i][1]; + for (j = start; j <= end; j++) { + result[j] = true; + } + } + return result; +})(); + +function splitQuery(query) { + var result = []; + var start = -1; + for (var i = 0; i < query.length; i++) { + if (splitChars[query.charCodeAt(i)]) { + if (start !== -1) { + result.push(query.slice(start, i)); + start = -1; + } + } else if (start === -1) { + start = i; + } + } + if (start !== -1) { + result.push(query.slice(start)); + } + return result; +} + + diff --git a/doc/html/_static/nature.css b/doc/html/_static/nature.css index 10c05a3c..5fb55b12 100644 --- a/doc/html/_static/nature.css +++ b/doc/html/_static/nature.css @@ -4,7 +4,7 @@ * * Sphinx stylesheet -- nature theme. * - * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ diff --git a/doc/html/_static/searchtools.js b/doc/html/_static/searchtools.js index 41b83367..6031f991 100644 --- a/doc/html/_static/searchtools.js +++ b/doc/html/_static/searchtools.js @@ -1,331 +1,54 @@ /* - * searchtools.js_t + * searchtools.js * ~~~~~~~~~~~~~~~~ * * Sphinx JavaScript utilities for the full-text search. * - * :copyright: Copyright 2007-2018 by the Sphinx team, see AUTHORS. + * :copyright: Copyright 2007-2019 by the Sphinx team, see AUTHORS. * :license: BSD, see LICENSE for details. * */ - -/* Non-minified version JS is _stemmer.js if file is provided */ -/** - * Porter Stemmer - */ -var Stemmer = function() { - - var step2list = { - ational: 'ate', - tional: 'tion', - enci: 'ence', - anci: 'ance', - izer: 'ize', - bli: 'ble', - alli: 'al', - entli: 'ent', - eli: 'e', - ousli: 'ous', - ization: 'ize', - ation: 'ate', - ator: 'ate', - alism: 'al', - iveness: 'ive', - fulness: 'ful', - ousness: 'ous', - aliti: 'al', - iviti: 'ive', - biliti: 'ble', - logi: 'log' - }; - - var step3list = { - icate: 'ic', - ative: '', - alize: 'al', - iciti: 'ic', - ical: 'ic', - ful: '', - ness: '' +if (!Scorer) { + /** + * Simple result scoring code. + */ + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [filename, title, anchor, descr, score] + // and returns the new score. + /* + score: function(result) { + return result[4]; + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: {0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5}, // used to be unimportantResults + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2 }; - - var c = "[^aeiou]"; // consonant - var v = "[aeiouy]"; // vowel - var C = c + "[^aeiouy]*"; // consonant sequence - var V = v + "[aeiou]*"; // vowel sequence - - var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 - var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 - var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 - var s_v = "^(" + C + ")?" + v; // vowel in stem - - this.stemWord = function (w) { - var stem; - var suffix; - var firstch; - var origword = w; - - if (w.length < 3) - return w; - - var re; - var re2; - var re3; - var re4; - - firstch = w.substr(0,1); - if (firstch == "y") - w = firstch.toUpperCase() + w.substr(1); - - // Step 1a - re = /^(.+?)(ss|i)es$/; - re2 = /^(.+?)([^s])s$/; - - if (re.test(w)) - w = w.replace(re,"$1$2"); - else if (re2.test(w)) - w = w.replace(re2,"$1$2"); - - // Step 1b - re = /^(.+?)eed$/; - re2 = /^(.+?)(ed|ing)$/; - if (re.test(w)) { - var fp = re.exec(w); - re = new RegExp(mgr0); - if (re.test(fp[1])) { - re = /.$/; - w = w.replace(re,""); - } - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1]; - re2 = new RegExp(s_v); - if (re2.test(stem)) { - w = stem; - re2 = /(at|bl|iz)$/; - re3 = new RegExp("([^aeiouylsz])\\1$"); - re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re2.test(w)) - w = w + "e"; - else if (re3.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - else if (re4.test(w)) - w = w + "e"; - } - } - - // Step 1c - re = /^(.+?)y$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(s_v); - if (re.test(stem)) - w = stem + "i"; - } - - // Step 2 - re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step2list[suffix]; - } - - // Step 3 - re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - suffix = fp[2]; - re = new RegExp(mgr0); - if (re.test(stem)) - w = stem + step3list[suffix]; - } - - // Step 4 - re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; - re2 = /^(.+?)(s|t)(ion)$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - if (re.test(stem)) - w = stem; - } - else if (re2.test(w)) { - var fp = re2.exec(w); - stem = fp[1] + fp[2]; - re2 = new RegExp(mgr1); - if (re2.test(stem)) - w = stem; - } - - // Step 5 - re = /^(.+?)e$/; - if (re.test(w)) { - var fp = re.exec(w); - stem = fp[1]; - re = new RegExp(mgr1); - re2 = new RegExp(meq1); - re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); - if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) - w = stem; - } - re = /ll$/; - re2 = new RegExp(mgr1); - if (re.test(w) && re2.test(w)) { - re = /.$/; - w = w.replace(re,""); - } - - // and turn initial Y back to y - if (firstch == "y") - w = firstch.toLowerCase() + w.substr(1); - return w; - } } - - -/** - * Simple result scoring code. - */ -var Scorer = { - // Implement the following function to further tweak the score for each result - // The function takes a result array [filename, title, anchor, descr, score] - // and returns the new score. - /* - score: function(result) { - return result[4]; - }, - */ - - // query matches the full name of an object - objNameMatch: 11, - // or matches in the last dotted part of the object name - objPartialMatch: 6, - // Additive scores depending on the priority of the object - objPrio: {0: 15, // used to be importantResults - 1: 5, // used to be objectResults - 2: -5}, // used to be unimportantResults - // Used when the priority is not in the mapping. - objPrioDefault: 0, - - // query found in title - title: 15, - // query found in terms - term: 5 -}; - - - - - -var splitChars = (function() { - var result = {}; - var singles = [96, 180, 187, 191, 215, 247, 749, 885, 903, 907, 909, 930, 1014, 1648, - 1748, 1809, 2416, 2473, 2481, 2526, 2601, 2609, 2612, 2615, 2653, 2702, - 2706, 2729, 2737, 2740, 2857, 2865, 2868, 2910, 2928, 2948, 2961, 2971, - 2973, 3085, 3089, 3113, 3124, 3213, 3217, 3241, 3252, 3295, 3341, 3345, - 3369, 3506, 3516, 3633, 3715, 3721, 3736, 3744, 3748, 3750, 3756, 3761, - 3781, 3912, 4239, 4347, 4681, 4695, 4697, 4745, 4785, 4799, 4801, 4823, - 4881, 5760, 5901, 5997, 6313, 7405, 8024, 8026, 8028, 8030, 8117, 8125, - 8133, 8181, 8468, 8485, 8487, 8489, 8494, 8527, 11311, 11359, 11687, 11695, - 11703, 11711, 11719, 11727, 11735, 12448, 12539, 43010, 43014, 43019, 43587, - 43696, 43713, 64286, 64297, 64311, 64317, 64319, 64322, 64325, 65141]; - var i, j, start, end; - for (i = 0; i < singles.length; i++) { - result[singles[i]] = true; - } - var ranges = [[0, 47], [58, 64], [91, 94], [123, 169], [171, 177], [182, 184], [706, 709], - [722, 735], [741, 747], [751, 879], [888, 889], [894, 901], [1154, 1161], - [1318, 1328], [1367, 1368], [1370, 1376], [1416, 1487], [1515, 1519], [1523, 1568], - [1611, 1631], [1642, 1645], [1750, 1764], [1767, 1773], [1789, 1790], [1792, 1807], - [1840, 1868], [1958, 1968], [1970, 1983], [2027, 2035], [2038, 2041], [2043, 2047], - [2070, 2073], [2075, 2083], [2085, 2087], [2089, 2307], [2362, 2364], [2366, 2383], - [2385, 2391], [2402, 2405], [2419, 2424], [2432, 2436], [2445, 2446], [2449, 2450], - [2483, 2485], [2490, 2492], [2494, 2509], [2511, 2523], [2530, 2533], [2546, 2547], - [2554, 2564], [2571, 2574], [2577, 2578], [2618, 2648], [2655, 2661], [2672, 2673], - [2677, 2692], [2746, 2748], [2750, 2767], [2769, 2783], [2786, 2789], [2800, 2820], - [2829, 2830], [2833, 2834], [2874, 2876], [2878, 2907], [2914, 2917], [2930, 2946], - [2955, 2957], [2966, 2968], [2976, 2978], [2981, 2983], [2987, 2989], [3002, 3023], - [3025, 3045], [3059, 3076], [3130, 3132], [3134, 3159], [3162, 3167], [3170, 3173], - [3184, 3191], [3199, 3204], [3258, 3260], [3262, 3293], [3298, 3301], [3312, 3332], - [3386, 3388], [3390, 3423], [3426, 3429], [3446, 3449], [3456, 3460], [3479, 3481], - [3518, 3519], [3527, 3584], [3636, 3647], [3655, 3663], [3674, 3712], [3717, 3718], - [3723, 3724], [3726, 3731], [3752, 3753], [3764, 3772], [3774, 3775], [3783, 3791], - [3802, 3803], [3806, 3839], [3841, 3871], [3892, 3903], [3949, 3975], [3980, 4095], - [4139, 4158], [4170, 4175], [4182, 4185], [4190, 4192], [4194, 4196], [4199, 4205], - [4209, 4212], [4226, 4237], [4250, 4255], [4294, 4303], [4349, 4351], [4686, 4687], - [4702, 4703], [4750, 4751], [4790, 4791], [4806, 4807], [4886, 4887], [4955, 4968], - [4989, 4991], [5008, 5023], [5109, 5120], [5741, 5742], [5787, 5791], [5867, 5869], - [5873, 5887], [5906, 5919], [5938, 5951], [5970, 5983], [6001, 6015], [6068, 6102], - [6104, 6107], [6109, 6111], [6122, 6127], [6138, 6159], [6170, 6175], [6264, 6271], - [6315, 6319], [6390, 6399], [6429, 6469], [6510, 6511], [6517, 6527], [6572, 6592], - [6600, 6607], [6619, 6655], [6679, 6687], [6741, 6783], [6794, 6799], [6810, 6822], - [6824, 6916], [6964, 6980], [6988, 6991], [7002, 7042], [7073, 7085], [7098, 7167], - [7204, 7231], [7242, 7244], [7294, 7400], [7410, 7423], [7616, 7679], [7958, 7959], - [7966, 7967], [8006, 8007], [8014, 8015], [8062, 8063], [8127, 8129], [8141, 8143], - [8148, 8149], [8156, 8159], [8173, 8177], [8189, 8303], [8306, 8307], [8314, 8318], - [8330, 8335], [8341, 8449], [8451, 8454], [8456, 8457], [8470, 8472], [8478, 8483], - [8506, 8507], [8512, 8516], [8522, 8525], [8586, 9311], [9372, 9449], [9472, 10101], - [10132, 11263], [11493, 11498], [11503, 11516], [11518, 11519], [11558, 11567], - [11622, 11630], [11632, 11647], [11671, 11679], [11743, 11822], [11824, 12292], - [12296, 12320], [12330, 12336], [12342, 12343], [12349, 12352], [12439, 12444], - [12544, 12548], [12590, 12592], [12687, 12689], [12694, 12703], [12728, 12783], - [12800, 12831], [12842, 12880], [12896, 12927], [12938, 12976], [12992, 13311], - [19894, 19967], [40908, 40959], [42125, 42191], [42238, 42239], [42509, 42511], - [42540, 42559], [42592, 42593], [42607, 42622], [42648, 42655], [42736, 42774], - [42784, 42785], [42889, 42890], [42893, 43002], [43043, 43055], [43062, 43071], - [43124, 43137], [43188, 43215], [43226, 43249], [43256, 43258], [43260, 43263], - [43302, 43311], [43335, 43359], [43389, 43395], [43443, 43470], [43482, 43519], - [43561, 43583], [43596, 43599], [43610, 43615], [43639, 43641], [43643, 43647], - [43698, 43700], [43703, 43704], [43710, 43711], [43715, 43738], [43742, 43967], - [44003, 44015], [44026, 44031], [55204, 55215], [55239, 55242], [55292, 55295], - [57344, 63743], [64046, 64047], [64110, 64111], [64218, 64255], [64263, 64274], - [64280, 64284], [64434, 64466], [64830, 64847], [64912, 64913], [64968, 65007], - [65020, 65135], [65277, 65295], [65306, 65312], [65339, 65344], [65371, 65381], - [65471, 65473], [65480, 65481], [65488, 65489], [65496, 65497]]; - for (i = 0; i < ranges.length; i++) { - start = ranges[i][0]; - end = ranges[i][1]; - for (j = start; j <= end; j++) { - result[j] = true; - } - } - return result; -})(); - -function splitQuery(query) { - var result = []; - var start = -1; - for (var i = 0; i < query.length; i++) { - if (splitChars[query.charCodeAt(i)]) { - if (start !== -1) { - result.push(query.slice(start, i)); - start = -1; - } - } else if (start === -1) { - start = i; - } - } - if (start !== -1) { - result.push(query.slice(start)); - } - return result; +if (!splitQuery) { + function splitQuery(query) { + return query.split(/\s+/); + } } - - - /** * Search Module */ @@ -335,6 +58,14 @@ var Search = { _queued_query : null, _pulse_status : -1, + htmlToText : function(htmlString) { + var htmlElement = document.createElement('span'); + htmlElement.innerHTML = htmlString; + $(htmlElement).find('.headerlink').remove(); + docContent = $(htmlElement).find('[role=main]')[0]; + return docContent.textContent || docContent.innerText; + }, + init : function() { var params = $.getQueryParameters(); if (params.q) { @@ -399,7 +130,7 @@ var Search = { this.out = $('#search-results'); this.title = $('

' + _('Searching') + '

').appendTo(this.out); this.dots = $('').appendTo(this.title); - this.status = $('

').appendTo(this.out); + this.status = $('

 

').appendTo(this.out); this.output = $('
+ +
+

C

    @@ -182,6 +190,10 @@

    S

    +
    @@ -198,11 +210,17 @@

    V

    @@ -222,13 +240,11 @@

    Z

    \ No newline at end of file diff --git a/doc/html/objects.inv b/doc/html/objects.inv index 8957b965bc964f4f77cb343a7810676175eb0843..053a659fa274e19b46850756012493d3f8ea4f70 100644 GIT binary patch delta 348 zcmV-i0i*u21JVPKe}9A^5C`zPPeIaN-E^;e?pHCKLHo#t(b`qw;n5=oKW9>6*8@0m2YX}$?4wC?%G&**CT=76Z zQUGojD-4fu!yR~*8rMP~jVQPHRZG~#;YQE`4F)lC=fGG!!GC&Gm7VzaqynwiB|DmR zf+rdc=t)ope(P}}+XNG>0;NqNW>9Ij$J%U??l32xY2^%%Iv$2d!lN>p7T=g@uTDE^ zp%%gb-zTG0yCVg>LNI(L+gs2H_QdQ1_OwJoc2w8#I6Fbo5t1jymV&k>^~(Apv@5@Z uDlPeZUPx0q_8BB(Ub`@}Ey2vIKz|!c%pMflK4V?7WZIA@ zCSExMP%CkmSa{Ud@Y**f-lsF3Tc`sZ;OEVF)jrXMZ~?S(VcRPjf@j(sF?76+VDeno z%4zY6r6-`sY#X6*EO=r64HpAf7QBUg?B#<74B)qjn5b{8?7)ipDDKhCiI4TR`el7k zE82;&V;vV7gEnu(dAo`(3*+-~(0RO_PAjSM^!sPOxYYNB^1#nBILpox$UO7@W|UaL PUuFF)2dKUQK8EU>6eOKa diff --git a/doc/html/py-modindex.html b/doc/html/py-modindex.html index ac323611..00af8197 100644 --- a/doc/html/py-modindex.html +++ b/doc/html/py-modindex.html @@ -1,18 +1,17 @@ - + - - + Python Module Index — ffmpeg-python documentation - + + @@ -66,13 +65,11 @@

    Python Module Index

    \ No newline at end of file diff --git a/doc/html/searchindex.js b/doc/html/searchindex.js index bdc9a7b0..a8825d29 100644 --- a/doc/html/searchindex.js +++ b/doc/html/searchindex.js @@ -1 +1 @@ -Search.setIndex({docnames:["index"],envversion:53,filenames:["index.rst"],objects:{"":{ffmpeg:[0,0,0,"-"]},ffmpeg:{Error:[0,1,1,""],colorchannelmixer:[0,2,1,""],compile:[0,2,1,""],concat:[0,2,1,""],crop:[0,2,1,""],drawbox:[0,2,1,""],drawtext:[0,2,1,""],filter:[0,2,1,""],filter_:[0,2,1,""],filter_multi_output:[0,2,1,""],get_args:[0,2,1,""],hflip:[0,2,1,""],hue:[0,2,1,""],input:[0,2,1,""],merge_outputs:[0,2,1,""],output:[0,2,1,""],overlay:[0,2,1,""],overwrite_output:[0,2,1,""],probe:[0,2,1,""],run:[0,2,1,""],run_async:[0,2,1,""],setpts:[0,2,1,""],trim:[0,2,1,""],vflip:[0,2,1,""],view:[0,2,1,""],zoompan:[0,2,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","exception","Python exception"],"2":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:exception","2":"py:function"},terms:{"break":0,"case":0,"default":0,"function":0,"return":0,"true":0,"while":0,For:0,PTS:0,The:0,These:0,Used:0,accept:0,access:0,acodec:0,action:0,activ:0,adjust:0,after:0,alia:0,all:0,allow:0,alpha:0,also:0,altern:0,alwai:0,angl:0,ani:0,anoth:0,appli:0,arab:0,area:0,arg:0,argument:0,around:0,ascent:0,asetpt:0,ask:0,aspect:0,astyp:0,asynchron:0,atom:0,attempt:0,audio:0,audio_bitr:0,author:0,automat:0,avoid:0,axi:0,background:0,base:0,baselin:0,basetim:0,befor:0,behavior:0,behind:0,below:0,between:0,black:0,blend:0,border:0,bordercolor:0,borderw:0,both:0,box:0,boxborderw:0,boxcolor:0,bracket:0,bright:0,build:0,built:0,call:0,can:0,captur:0,capture_stderr:0,capture_stdout:0,chang:0,channel:0,charact:0,check:0,child:0,chroma:0,clip:0,close:0,cmd:0,code:0,codec:0,collid:0,color:0,colorchannelmix:0,com:0,combin:0,command:0,commnad:0,common:0,commun:0,compil:0,concat:0,concaten:0,configur:0,confus:0,connect:0,constant:0,construct:0,consult:0,contain:0,continu:0,convert:0,coord:0,coordin:0,corner:0,correctli:0,correspond:0,count:0,crop:0,crop_bitmap:0,custom:0,dar:0,data:0,debug:0,degre:0,deprec:0,descent:0,detail:0,dictionari:0,differ:0,directli:0,disabl:0,displai:0,distanc:0,document:0,draw:0,drawbox:0,drawn:0,drawtext:0,drop:0,due:0,durat:0,dure:0,dynam:0,each:0,edg:0,effect:0,either:0,empti:0,emul:0,enabl:0,encod:0,encount:0,end:0,end_fram:0,end_pt:0,endal:0,eof:0,eof_act:0,equival:0,err:0,error:0,escape_text:0,etc:0,eval:0,evalu:0,even:0,exactli:0,exampl:0,except:0,exit:0,expand:0,expans:0,explicitli:0,expr:0,express:0,fail:0,fallback:0,fals:0,famili:0,ffmpeg_arg:0,ffprobe:0,file:0,filenam:0,filter:0,filter_:0,filter_multi_output:0,filter_nam:0,first:0,fix:0,fix_bound:0,flag:0,flip:0,fmpeg:0,follow:0,font:0,fontcolor:0,fontcolor_expr:0,fontconfig:0,fontfil:0,fontsiz:0,forc:0,force_autohint:0,format:0,fps:0,frame:0,frame_num:0,from:0,frombuff:0,ft_load_:0,ft_load_flag:0,gbrp:0,gener:0,get_arg:0,github:0,given:0,glyph:0,graph:0,greater:0,grid:0,handl:0,has:0,have:0,hd720:0,height:0,heigth:0,hflip:0,higher:0,highest:0,horizont:0,hour:0,how:0,hsub:0,http:0,hue:0,huge:0,ignore_global_advance_width:0,ignore_transform:0,imag:0,immedi:0,implement:0,in_byt:0,in_filenam:0,in_fram:0,includ:0,incom:0,index:0,inform:0,init:0,initi:0,input:0,input_data:0,instead:0,interpret:0,invalid:0,invert:0,invok:0,its:0,join:0,json:0,just:0,kept:0,keyword:0,kkroen:0,kwarg:0,label:0,last:0,layout:0,left:0,level:0,libfontconfig:0,libfreetyp:0,libfribidi:0,librari:0,line:0,line_h:0,line_spac:0,linear_design:0,list:0,load:0,longest:0,lowest:0,luma:0,mai:0,main:0,main_h:0,main_parent_nod:0,main_w:0,mandatori:0,mani:0,manual:0,map:0,max:0,max_glyph_a:0,max_glyph_d:0,max_glyph_h:0,max_glyph_w:0,maximum:0,mean:0,merge_output:0,messag:0,microsecond:0,min:0,miss:0,mix:0,mode:0,modifi:0,modul:0,monochrom:0,more:0,most:0,mp4:0,multipl:0,must:0,name:0,nan:0,necessari:0,need:0,neg:0,no_autohint:0,no_bitmap:0,no_hint:0,no_recurs:0,no_scal:0,node:0,non:0,none:0,normal:0,number:0,numpi:0,object:0,obtain:0,offici:0,offset:0,onc:0,one:0,onli:0,oper:0,option:0,order:0,orient:0,other:0,otherwis:0,out:0,out_filenam:0,out_fram:0,outlin:0,output:0,over:0,overlai:0,overlaid:0,overlay_parent_nod:0,overrid:0,overwrit:0,overwrite_output:0,pack:0,pad:0,page:0,pan:0,paramet:0,partial:0,pass:0,path:0,pcm:0,pedant:0,pipe:0,pipe_stderr:0,pipe_stdin:0,pipe_stdout:0,pix_fmt:0,pixel:0,place:0,planar:0,pleas:0,point:0,popen:0,posit:0,preced:0,present:0,probe:0,process1:0,process2:0,process:0,produc:0,properti:0,provid:0,pts:0,quiet:0,radian:0,rais:0,rand:0,random:0,rang:0,rate:0,ratio:0,rawvideo:0,read:0,reason:0,refer:0,rel:0,relat:0,reload:0,render:0,repeat:0,repeatlast:0,repres:0,represent:0,reshap:0,resolut:0,respect:0,result:0,retriev:0,revers:0,rgb24:0,rgb:0,right:0,run:0,run_async:0,same:0,sampl:0,san:0,sar:0,satur:0,search:0,second:0,secondari:0,section:0,see:0,segment:0,select:0,sent:0,sequenc:0,set:0,setpt:0,shadow:0,shadowcolor:0,shadowi:0,shadowx:0,shape:0,shorter:0,shortest:0,shorthand:0,should:0,shown:0,silenc:0,singl:0,size:0,sloppi:0,some:0,space:0,special:0,specifi:0,split0:0,split1:0,split:0,standard:0,start:0,start_fram:0,start_numb:0,start_pt:0,stderr:0,stdin:0,stdout:0,stream1:0,stream2:0,stream3:0,stream:0,stream_spec:0,streams_and_filenam:0,strftime:0,string:0,subpart:0,subprocess:0,subsampl:0,suffix:0,suppli:0,support:0,sure:0,synchron:0,synopsi:0,syntax:0,system:0,tab:0,tabsiz:0,take:0,tc24hmax:0,tell:0,termin:0,text:0,text_h:0,text_shap:0,text_w:0,textfil:0,than:0,thei:0,them:0,thi:0,thick:0,through:0,thrown:0,time:0,timebas:0,timecod:0,timecode_r:0,timestamp:0,tobyt:0,togeth:0,top:0,track:0,trim:0,tupl:0,type:0,uint8:0,unit:0,unknown:0,unsaf:0,until:0,updat:0,upper:0,upward:0,url:0,use:0,used:0,useful:0,user:0,uses:0,using:0,utf:0,util:0,valu:0,variabl:0,variou:0,vcodec:0,verbatim:0,vertic:0,vertical_layout:0,vflip:0,video:0,video_bitr:0,view:0,visibl:0,vsub:0,wai:0,wait:0,well:0,whatev:0,when:0,where:0,which:0,white:0,width:0,within:0,without:0,work:0,wrap:0,write:0,you:0,yuv420:0,yuv420p:0,yuv422:0,yuv422p:0,yuv444:0,zero:0,zoom:0,zoompan:0},titles:["ffmpeg-python: Python bindings for FFmpeg"],titleterms:{bind:0,ffmpeg:0,indic:0,python:0,tabl:0}}) \ No newline at end of file +Search.setIndex({docnames:["index"],envversion:{"sphinx.domains.c":1,"sphinx.domains.changeset":1,"sphinx.domains.citation":1,"sphinx.domains.cpp":1,"sphinx.domains.javascript":1,"sphinx.domains.math":2,"sphinx.domains.python":1,"sphinx.domains.rst":1,"sphinx.domains.std":1,sphinx:56},filenames:["index.rst"],objects:{"":{ffmpeg:[0,0,0,"-"]},"ffmpeg.Stream":{audio:[0,3,1,""],video:[0,3,1,""],view:[0,3,1,""]},ffmpeg:{Error:[0,1,1,""],Stream:[0,2,1,""],colorchannelmixer:[0,4,1,""],compile:[0,4,1,""],concat:[0,4,1,""],crop:[0,4,1,""],drawbox:[0,4,1,""],drawtext:[0,4,1,""],filter:[0,4,1,""],filter_:[0,4,1,""],filter_multi_output:[0,4,1,""],get_args:[0,4,1,""],hflip:[0,4,1,""],hue:[0,4,1,""],input:[0,4,1,""],merge_outputs:[0,4,1,""],output:[0,4,1,""],overlay:[0,4,1,""],overwrite_output:[0,4,1,""],probe:[0,4,1,""],run:[0,4,1,""],run_async:[0,4,1,""],setpts:[0,4,1,""],trim:[0,4,1,""],vflip:[0,4,1,""],view:[0,4,1,""],zoompan:[0,4,1,""]}},objnames:{"0":["py","module","Python module"],"1":["py","exception","Python exception"],"2":["py","class","Python class"],"3":["py","method","Python method"],"4":["py","function","Python function"]},objtypes:{"0":"py:module","1":"py:exception","2":"py:class","3":"py:method","4":"py:function"},terms:{"break":0,"case":0,"class":0,"default":0,"final":0,"function":0,"return":0,"true":0,"while":0,For:0,PTS:0,The:0,These:0,Used:0,accept:0,access:0,acodec:0,action:0,activ:0,adjust:0,aecho:0,after:0,alia:0,all:0,allow:0,alpha:0,also:0,altern:0,alwai:0,angl:0,ani:0,anoth:0,appli:0,arab:0,area:0,arg:0,argument:0,around:0,ascent:0,asetpt:0,ask:0,aspect:0,astyp:0,asynchron:0,atom:0,attempt:0,audio:0,audio_bitr:0,author:0,automat:0,avoid:0,axi:0,background:0,base:0,baselin:0,basetim:0,befor:0,behavior:0,behind:0,below:0,between:0,black:0,blend:0,border:0,bordercolor:0,borderw:0,both:0,box:0,boxborderw:0,boxcolor:0,bracket:0,bright:0,build:0,built:0,call:0,can:0,captur:0,capture_stderr:0,capture_stdout:0,care:0,certain:0,chang:0,channel:0,charact:0,check:0,child:0,chroma:0,clip:0,close:0,cmd:0,code:0,codec:0,collid:0,color:0,colorchannelmix:0,com:0,combin:0,command:0,commnad:0,common:0,commun:0,compil:0,concat:0,concaten:0,configur:0,confus:0,connect:0,constant:0,construct:0,consult:0,contain:0,continu:0,convert:0,coord:0,coordin:0,corner:0,correctli:0,correspond:0,count:0,creat:0,crop:0,crop_bitmap:0,custom:0,dar:0,data:0,debug:0,degre:0,deprec:0,descent:0,detail:0,dictionari:0,differ:0,dilemma:0,directli:0,disabl:0,displai:0,distanc:0,document:0,downstream:0,draw:0,drawbox:0,drawn:0,drawtext:0,drop:0,due:0,durat:0,dure:0,dynam:0,each:0,edg:0,effect:0,either:0,empti:0,emul:0,enabl:0,encod:0,encount:0,end:0,end_fram:0,end_pt:0,endal:0,eof:0,eof_act:0,equival:0,err:0,error:0,escape_text:0,etc:0,eval:0,evalu:0,even:0,exactli:0,exampl:0,except:0,exit:0,expand:0,expans:0,explicitli:0,expr:0,express:0,fail:0,fallback:0,fals:0,famili:0,ffmpeg_arg:0,ffprobe:0,file:0,filenam:0,filter:0,filter_:0,filter_multi_output:0,filter_nam:0,first:0,fix:0,fix_bound:0,flag:0,flip:0,follow:0,font:0,fontcolor:0,fontcolor_expr:0,fontconfig:0,fontfil:0,fontsiz:0,forc:0,force_autohint:0,format:0,fps:0,frame:0,frame_num:0,from:0,frombuff:0,ft_load_:0,ft_load_flag:0,gbrp:0,gener:0,get_arg:0,github:0,given:0,glyph:0,graph:0,greater:0,grid:0,handl:0,has:0,have:0,hd720:0,height:0,heigth:0,hflip:0,higher:0,highest:0,horizont:0,hour:0,how:0,hsub:0,http:0,hue:0,huge:0,ignore_global_advance_width:0,ignore_transform:0,imag:0,immedi:0,implement:0,in_byt:0,in_filenam:0,in_fram:0,includ:0,incom:0,independ:0,index:0,inform:0,init:0,initi:0,input:0,input_data:0,instead:0,interpret:0,intrins:0,invalid:0,invert:0,invok:0,its:0,join:0,json:0,just:0,kept:0,keyword:0,kkroen:0,kwarg:0,label:0,last:0,later:0,layout:0,left:0,level:0,libfontconfig:0,libfreetyp:0,libfribidi:0,librari:0,line:0,line_h:0,line_spac:0,linear_design:0,list:0,load:0,longest:0,lowest:0,luma:0,mai:0,main:0,main_h:0,main_parent_nod:0,main_w:0,mandatori:0,mani:0,manual:0,map:0,max:0,max_glyph_a:0,max_glyph_d:0,max_glyph_h:0,max_glyph_w:0,maximum:0,mean:0,merge_output:0,messag:0,microsecond:0,min:0,miss:0,mix:0,mode:0,modifi:0,modul:0,monochrom:0,more:0,most:0,mp4:0,multipl:0,must:0,name:0,nan:0,necessari:0,need:0,neg:0,no_autohint:0,no_bitmap:0,no_hint:0,no_recurs:0,no_scal:0,node:0,node_typ:0,non:0,none:0,normal:0,number:0,numpi:0,object:0,obtain:0,offici:0,offset:0,onc:0,one:0,onli:0,oper:0,option:0,order:0,orient:0,other:0,otherwis:0,out:0,out_filenam:0,out_fram:0,outgo:0,outlin:0,output:0,over:0,overlai:0,overlaid:0,overlay_parent_nod:0,overrid:0,overwrit:0,overwrite_output:0,pack:0,pad:0,page:0,pan:0,paramet:0,partial:0,pass:0,path:0,pcm:0,pedant:0,pipe:0,pipe_stderr:0,pipe_stdin:0,pipe_stdout:0,pipelin:0,pix_fmt:0,pixel:0,place:0,planar:0,pleas:0,point:0,popen:0,portion:0,posit:0,preced:0,present:0,preserv:0,probe:0,process1:0,process2:0,process:0,produc:0,properti:0,provid:0,pts:0,quiet:0,radian:0,rais:0,rand:0,random:0,rang:0,rate:0,ratio:0,rawvideo:0,read:0,reason:0,refer:0,rel:0,relat:0,reload:0,render:0,repeat:0,repeatlast:0,repres:0,represent:0,reshap:0,resolut:0,respect:0,result:0,retriev:0,revers:0,rgb24:0,rgb:0,right:0,run:0,run_async:0,same:0,sampl:0,san:0,sar:0,satur:0,search:0,second:0,secondari:0,section:0,see:0,segment:0,select:0,sent:0,separ:0,sequenc:0,set:0,setpt:0,shadow:0,shadowcolor:0,shadowi:0,shadowx:0,shape:0,shorter:0,shortest:0,shorthand:0,should:0,shown:0,silenc:0,singl:0,size:0,sloppi:0,some:0,space:0,special:0,specifi:0,split0:0,split1:0,split:0,stai:0,standard:0,start:0,start_fram:0,start_numb:0,start_pt:0,stderr:0,stdin:0,stdout:0,stream1:0,stream2:0,stream3:0,stream:0,stream_spec:0,streams_and_filenam:0,strftime:0,string:0,subpart:0,subprocess:0,subsampl:0,suffix:0,suppli:0,support:0,sure:0,synchron:0,synopsi:0,syntax:0,system:0,tab:0,tabsiz:0,take:0,taken:0,tc24hmax:0,tell:0,termin:0,text:0,text_h:0,text_shap:0,text_w:0,textfil:0,than:0,thei:0,them:0,thi:0,thick:0,through:0,thrown:0,time:0,timebas:0,timecod:0,timecode_r:0,timestamp:0,tobyt:0,togeth:0,top:0,track:0,tri:0,trim:0,tupl:0,type:0,uint8:0,unit:0,unknown:0,unsaf:0,until:0,updat:0,upper:0,upstream:0,upstream_label:0,upstream_nod:0,upstream_selector:0,upward:0,url:0,use:0,used:0,useful:0,user:0,uses:0,using:0,utf:0,util:0,valu:0,variabl:0,variou:0,vcodec:0,verbatim:0,vertic:0,vertical_layout:0,vflip:0,video:0,video_bitr:0,view:0,visibl:0,vsub:0,wai:0,wait:0,well:0,whatev:0,when:0,where:0,which:0,white:0,why:0,width:0,within:0,without:0,work:0,wrap:0,write:0,you:0,yuv420:0,yuv420p:0,yuv422:0,yuv422p:0,yuv444:0,zero:0,zoom:0,zoompan:0},titles:["ffmpeg-python: Python bindings for FFmpeg"],titleterms:{bind:0,ffmpeg:0,indic:0,python:0,tabl:0}}) \ No newline at end of file From 49c877eec6169d7074791851912891f95a6046c7 Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Mon, 3 Jun 2019 02:42:29 -0500 Subject: [PATCH 20/60] Update README.md --- README.md | 49 +++++++++++++++++++++++++++++++++---------------- 1 file changed, 33 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 8d716cd8..c146c7e4 100644 --- a/README.md +++ b/README.md @@ -32,8 +32,10 @@ import ffmpeg ) ``` +## [[API reference]](https://kkroening.github.io/ffmpeg-python/) + ## Complex filter graphs -FFmpeg is extremely powerful, but its command-line interface gets really complicated really quickly - especially when working with signal graphs and doing anything more than trivial. +FFmpeg is extremely powerful, but its command-line interface gets really complicated rather quickly - especially when working with signal graphs and doing anything more than trivial. Take for example a signal graph that looks like this: @@ -111,17 +113,6 @@ Here are a few: See the [Examples README](https://github.com/kkroening/ffmpeg-python/tree/master/examples) for additional examples. -## [API Reference](https://kkroening.github.io/ffmpeg-python/) - -API documentation is automatically generated from python docstrings and hosted on github pages: https://kkroening.github.io/ffmpeg-python/ - -Alternatively, standard python help is available, such as at the python REPL prompt as follows: - -```python ->>> import ffmpeg ->>> help(ffmpeg) -``` - ## Custom Filters Don't see the filter you're looking for? `ffmpeg-python` includes shorthand notation for some of the most commonly used filters (such as `concat`), but it's easy to use any arbitrary ffmpeg filter: @@ -155,15 +146,39 @@ Arguments with special names such as `-qscale:v` can be specified as a keyword-a When in doubt, refer to the [existing filters](https://github.com/kkroening/ffmpeg-python/blob/master/ffmpeg/_filters.py), [examples](https://github.com/kkroening/ffmpeg-python/tree/master/examples), and/or the [official ffmpeg documentation](https://ffmpeg.org/ffmpeg-filters.html). +## Frequently asked questions + +**Why do I get an import/attribute/etc error from `import ffmpeg`?* + +Make sure you ran `pip install ffmpeg-python` and not `pip install ffmpeg` or `pip install python-ffmpeg`. + +**How do I do XYZ?** + +Take a look at each of the links in the [Additional Resources](https://kkroening.github.io/ffmpeg-python/) section at the end of this README. If you look everywhere and can't find what you're looking for and have a question that may be relevant to other users, you may open an issue asking how to do it, while providing a thorough explanation of what you're trying to do and what you've tried so far. + +Issues not directly related to `ffmpeg-python` or issues asking others to write your code for you or how to do the work of solving a complex signal processing problem for you that's not relevant to other users will be closed. + +That said, we hope to continue improving our documentation and provide a community of support for people using `ffmpeg-python` to do cool and exciting things. + +**Why did my audio stream get dropped?** + +Some ffmpeg filters drop audio streams, and care must be taken to preserve the audio in the final output. The ``.audio`` and ``.video`` operators can be used to reference the audio/video portions of a stream so that they can be processed separately and then re-combined later in the pipeline. + +This dilemma is intrinsic to ffmpeg, and ffmpeg-python tries to stay out of the way while users may refer to the official ffmpeg documentation as to why certain filters drop audio. + +As usual, take a look at the [Examples](https://github.com/kkroening/ffmpeg-python/tree/master/examples#audiovideo-pipeline) (the "Audio/video pipeline" example in particular). + ## Contributing ffmpeg-python logo -Feel free to report any bugs or submit feature requests. +One of the best things you can do to help make `ffmpeg-python` better is to answer [open questions](https://github.com/kkroening/ffmpeg-python/labels/question) in the issue tracker. The questions that are answered will be tagged and eventually incorporated into the documentation, examples, and other learning resources. + +If you notice things that could be better in the documentation or overall development experience, please say so in the [issue tracker](https://github.com/kkroening/ffmpeg-python/issues). And of course, feel free to report any bugs or submit feature requests. -It's generally straightforward to use filters that aren't explicitly built into `ffmpeg-python` but if there's a feature you'd like to see included in the library, head over to the [issue tracker](https://github.com/kkroening/ffmpeg-python/issues). +Pull requests are welcome as well, but it wouldn't hurt to touch base in the issue tracker or hop on the [Matrix chat channel](https://riot.im/app/#/room/#ffmpeg-python:matrix.org) first. -Pull requests are welcome as well. +Anyone who fixes any of the [open bugs](https://github.com/kkroening/ffmpeg-python/labels/bug) or implements [requested enhancements](https://github.com/kkroening/ffmpeg-python/labels/enhancement) is a hero, but changes should include passing tests.
    @@ -177,9 +192,11 @@ Pull requests are welcome as well. ## Additional Resources - [API Reference](https://kkroening.github.io/ffmpeg-python/) +- [Examples](https://github.com/kkroening/ffmpeg-python/tree/master/examples) - [Filters](https://github.com/kkroening/ffmpeg-python/blob/master/ffmpeg/_filters.py) -- [Tests](https://github.com/kkroening/ffmpeg-python/blob/master/ffmpeg/tests/test_ffmpeg.py) - [FFmpeg Homepage](https://ffmpeg.org/) - [FFmpeg Documentation](https://ffmpeg.org/ffmpeg.html) - [FFmpeg Filters Documentation](https://ffmpeg.org/ffmpeg-filters.html) +- [Test cases](https://github.com/kkroening/ffmpeg-python/blob/master/ffmpeg/tests/test_ffmpeg.py) +- [Issue tracker](https://github.com/kkroening/ffmpeg-python/issues) - Matrix Chat: [#ffmpeg-python:matrix.org](https://riot.im/app/#/room/#ffmpeg-python:matrix.org) From 411b0a14ffdd7999e1984bfa53de966e3a2ac81a Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Mon, 3 Jun 2019 02:43:04 -0500 Subject: [PATCH 21/60] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index c146c7e4..9f28f408 100644 --- a/README.md +++ b/README.md @@ -148,7 +148,7 @@ When in doubt, refer to the [existing filters](https://github.com/kkroening/ffmp ## Frequently asked questions -**Why do I get an import/attribute/etc error from `import ffmpeg`?* +**Why do I get an import/attribute/etc error from `import ffmpeg`?** Make sure you ran `pip install ffmpeg-python` and not `pip install ffmpeg` or `pip install python-ffmpeg`. From bde72f4124af50a82d8c6d1609d54beb722748ff Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Mon, 3 Jun 2019 03:09:27 -0500 Subject: [PATCH 22/60] Update README.md --- README.md | 34 +++++++++++++++++++++------------- 1 file changed, 21 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 9f28f408..7cf367b9 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ import ffmpeg ) ``` -## [[API reference]](https://kkroening.github.io/ffmpeg-python/) +## [API reference](https://kkroening.github.io/ffmpeg-python/) ## Complex filter graphs FFmpeg is extremely powerful, but its command-line interface gets really complicated rather quickly - especially when working with signal graphs and doing anything more than trivial. @@ -51,7 +51,7 @@ ffmpeg -i input.mp4 -i overlay.png -filter_complex "[0]trim=start_frame=10:end_f Maybe this looks great to you, but if you're not an FFmpeg command-line expert, it probably looks alien. -If you're like me and find Python to be powerful and readable, it's easy with `ffmpeg-python`: +If you're like me and find Python to be powerful and readable, it's easier with `ffmpeg-python`: ```python import ffmpeg @@ -70,28 +70,24 @@ overlay_file = ffmpeg.input('overlay.png') ) ``` -`ffmpeg-python` takes care of running `ffmpeg` with the command-line arguments that correspond to the above filter diagram, and it's easy to see what's going on and make changes as needed. +`ffmpeg-python` takes care of running `ffmpeg` with the command-line arguments that correspond to the above filter diagram, in familiar Python terms. Screenshot -Real-world signal graphs can get a heck of a lot more complex, but `ffmpeg-python` handles them with ease. - +Real-world signal graphs can get a heck of a lot more complex, but `ffmpeg-python` handles arbitrarily large (directed-acyclic) signal graphs. ## Installation -The latest version of `ffmpeg-python` can be acquired via pip: +The latest version of `ffmpeg-python` can be acquired via a typical pip install: ``` pip install ffmpeg-python ``` -It's also possible to clone the source and put it on your python path (`$PYTHONPATH`, `sys.path`, etc.): - +Or clone the source and install locally: ```bash -$ git clone git@github.com:kkroening/ffmpeg-python.git -$ export PYTHONPATH=${PYTHONPATH}:ffmpeg-python -$ python ->>> import ffmpeg +git clone git@github.com:kkroening/ffmpeg-python.git +pip install -e ./ffmpeg-python ``` ## [Examples](https://github.com/kkroening/ffmpeg-python/tree/master/examples) @@ -166,7 +162,7 @@ Some ffmpeg filters drop audio streams, and care must be taken to preserve the a This dilemma is intrinsic to ffmpeg, and ffmpeg-python tries to stay out of the way while users may refer to the official ffmpeg documentation as to why certain filters drop audio. -As usual, take a look at the [Examples](https://github.com/kkroening/ffmpeg-python/tree/master/examples#audiovideo-pipeline) (the "Audio/video pipeline" example in particular). +As usual, take a look at the [examples](https://github.com/kkroening/ffmpeg-python/tree/master/examples#audiovideo-pipeline) (*Audio/video pipeline* in particular). ## Contributing @@ -180,6 +176,18 @@ Pull requests are welcome as well, but it wouldn't hurt to touch base in the iss Anyone who fixes any of the [open bugs](https://github.com/kkroening/ffmpeg-python/labels/bug) or implements [requested enhancements](https://github.com/kkroening/ffmpeg-python/labels/enhancement) is a hero, but changes should include passing tests. +### Running tests + +```bash +git clone git@github.com:kkroening/ffmpeg-python.git +cd ffmpeg-python +virtualenv venv +. venv/bin/activate # (OS X / Linux) +venv\bin\activate # (Windows) +pip install -e .[dev] +pytest +``` +
    ### Special thanks From 2db3c4a3ce18151bb6c86db4f0b45ad30387dd60 Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Mon, 3 Jun 2019 03:30:04 -0500 Subject: [PATCH 23/60] Update README.md --- README.md | 20 ++++++++++++++++---- 1 file changed, 16 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 7cf367b9..7d5de40f 100644 --- a/README.md +++ b/README.md @@ -84,7 +84,7 @@ The latest version of `ffmpeg-python` can be acquired via a typical pip install: pip install ffmpeg-python ``` -Or clone the source and install locally: +Or the source can be cloned and installed from locally: ```bash git clone git@github.com:kkroening/ffmpeg-python.git pip install -e ./ffmpeg-python @@ -111,7 +111,7 @@ See the [Examples README](https://github.com/kkroening/ffmpeg-python/tree/master ## Custom Filters -Don't see the filter you're looking for? `ffmpeg-python` includes shorthand notation for some of the most commonly used filters (such as `concat`), but it's easy to use any arbitrary ffmpeg filter: +Don't see the filter you're looking for? While `ffmpeg-python` includes shorthand notation for some of the most commonly used filters (such as `concat`), all filters can be referenced via the `.filter` operator: ```python stream = ffmpeg.input('dummy.mp4') stream = ffmpeg.filter(stream, 'fps', fps=25, round='up') @@ -140,11 +140,23 @@ Arguments with special names such as `-qscale:v` can be specified as a keyword-a ) ``` +Filters that take multiple input streams can be specified by passing the input streams as an array to `ffmpeg.filter`: +```python +main = ffmpeg.input('main.mp4') +logo = ffmpeg.input('logo.png') +stream = ( + ffmpeg + .filter([main, logo], 'overlay', 10, 10) + .output('out.mp4') + .run() +) +``` + When in doubt, refer to the [existing filters](https://github.com/kkroening/ffmpeg-python/blob/master/ffmpeg/_filters.py), [examples](https://github.com/kkroening/ffmpeg-python/tree/master/examples), and/or the [official ffmpeg documentation](https://ffmpeg.org/ffmpeg-filters.html). ## Frequently asked questions -**Why do I get an import/attribute/etc error from `import ffmpeg`?** +**Why do I get an import/attribute/etc. error from `import ffmpeg`?** Make sure you ran `pip install ffmpeg-python` and not `pip install ffmpeg` or `pip install python-ffmpeg`. @@ -168,7 +180,7 @@ As usual, take a look at the [examples](https://github.com/kkroening/ffmpeg-pyth ffmpeg-python logo -One of the best things you can do to help make `ffmpeg-python` better is to answer [open questions](https://github.com/kkroening/ffmpeg-python/labels/question) in the issue tracker. The questions that are answered will be tagged and eventually incorporated into the documentation, examples, and other learning resources. +One of the best things you can do to help make `ffmpeg-python` better is to answer [open questions](https://github.com/kkroening/ffmpeg-python/labels/question) in the issue tracker. The questions that are answered will be tagged and incorporated into the documentation, examples, and other learning resources. If you notice things that could be better in the documentation or overall development experience, please say so in the [issue tracker](https://github.com/kkroening/ffmpeg-python/issues). And of course, feel free to report any bugs or submit feature requests. From a1e1f30a9933212f29f0333a6a6e6ba107e99707 Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Mon, 3 Jun 2019 03:52:07 -0500 Subject: [PATCH 24/60] Update README.md --- README.md | 62 +++++++++++++++++++++++++++++++++++++++++++------------ 1 file changed, 49 insertions(+), 13 deletions(-) diff --git a/README.md b/README.md index 7d5de40f..d6efba4b 100644 --- a/README.md +++ b/README.md @@ -130,21 +130,25 @@ Or fluently: ) ``` -Arguments with special names such as `-qscale:v` can be specified as a keyword-args dictionary as follows: +**Special option names:** + +Arguments with special names such as `-qscale:v` (variable bitrate), `-b:v` (constant bitrate), etc. can be specified as a keyword-args dictionary as follows: ```python ( ffmpeg - .input('dummy.mp4') - .output('dummy2.mp4', **{'qscale:v': 3}) + .input('in.mp4') + .output('out.mp4', **{'qscale:v': 3}) .run() ) ``` -Filters that take multiple input streams can be specified by passing the input streams as an array to `ffmpeg.filter`: +**Multiple inputs:** + +Filters that take multiple input streams can be used by passing the input streams as an array to `ffmpeg.filter`: ```python main = ffmpeg.input('main.mp4') logo = ffmpeg.input('logo.png') -stream = ( +( ffmpeg .filter([main, logo], 'overlay', 10, 10) .output('out.mp4') @@ -152,21 +156,45 @@ stream = ( ) ``` -When in doubt, refer to the [existing filters](https://github.com/kkroening/ffmpeg-python/blob/master/ffmpeg/_filters.py), [examples](https://github.com/kkroening/ffmpeg-python/tree/master/examples), and/or the [official ffmpeg documentation](https://ffmpeg.org/ffmpeg-filters.html). +**Multiple outputs:** -## Frequently asked questions +Filters that produce multiple outputs can be used with `.filter_multi_output`: +```python +split = ( + ffmpeg + .input('in.mp4') + .filter_multi_output('split') # or `.split()` +) +( + ffmpeg + .concat(split[0], split[1].reverse()) + .output('out.mp4') + .run() +) +``` +(In this particular case, `.split()` is the equivalent shorthand, but the general approach works for other multi-output filters) -**Why do I get an import/attribute/etc. error from `import ffmpeg`?** +**String expressions:** -Make sure you ran `pip install ffmpeg-python` and not `pip install ffmpeg` or `pip install python-ffmpeg`. +Expressions to be interpreted by ffmpeg can be included as string parameters and reference any special ffmpeg variable names: +```python +( + ffmpeg + .input('in.mp4') + .filter('crop', 'in_w-2*10', 'in_h-2*20') + .input('out.mp4') +) +``` -**How do I do XYZ?** +
    -Take a look at each of the links in the [Additional Resources](https://kkroening.github.io/ffmpeg-python/) section at the end of this README. If you look everywhere and can't find what you're looking for and have a question that may be relevant to other users, you may open an issue asking how to do it, while providing a thorough explanation of what you're trying to do and what you've tried so far. +When in doubt, refer to the [existing filters](https://github.com/kkroening/ffmpeg-python/blob/master/ffmpeg/_filters.py), [examples](https://github.com/kkroening/ffmpeg-python/tree/master/examples), and/or the [official ffmpeg documentation](https://ffmpeg.org/ffmpeg-filters.html). -Issues not directly related to `ffmpeg-python` or issues asking others to write your code for you or how to do the work of solving a complex signal processing problem for you that's not relevant to other users will be closed. +## Frequently asked questions -That said, we hope to continue improving our documentation and provide a community of support for people using `ffmpeg-python` to do cool and exciting things. +**Why do I get an import/attribute/etc. error from `import ffmpeg`?** + +Make sure you ran `pip install ffmpeg-python` and not `pip install ffmpeg` or `pip install python-ffmpeg`. **Why did my audio stream get dropped?** @@ -176,6 +204,14 @@ This dilemma is intrinsic to ffmpeg, and ffmpeg-python tries to stay out of the As usual, take a look at the [examples](https://github.com/kkroening/ffmpeg-python/tree/master/examples#audiovideo-pipeline) (*Audio/video pipeline* in particular). +**How do I do XYZ?** + +Take a look at each of the links in the [Additional Resources](https://kkroening.github.io/ffmpeg-python/) section at the end of this README. If you look everywhere and can't find what you're looking for and have a question that may be relevant to other users, you may open an issue asking how to do it, while providing a thorough explanation of what you're trying to do and what you've tried so far. + +Issues not directly related to `ffmpeg-python` or issues asking others to write your code for you or how to do the work of solving a complex signal processing problem for you that's not relevant to other users will be closed. + +That said, we hope to continue improving our documentation and provide a community of support for people using `ffmpeg-python` to do cool and exciting things. + ## Contributing ffmpeg-python logo From 8ea0f4ca4b3531f90d141b1eea9db73d98ff62b9 Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Mon, 3 Jun 2019 04:03:37 -0500 Subject: [PATCH 25/60] Use Black formatter --- ffmpeg/_ffmpeg.py | 7 +- ffmpeg/_filters.py | 26 ++- ffmpeg/_probe.py | 4 +- ffmpeg/_run.py | 74 ++++--- ffmpeg/_utils.py | 8 +- ffmpeg/_view.py | 28 ++- ffmpeg/dag.py | 77 ++++++-- ffmpeg/nodes.py | 80 +++++--- ffmpeg/tests/test_ffmpeg.py | 376 +++++++++++++++++++++--------------- requirements.txt | 1 + setup.py | 15 +- 11 files changed, 441 insertions(+), 255 deletions(-) diff --git a/ffmpeg/_ffmpeg.py b/ffmpeg/_ffmpeg.py index 30e8e712..31e2b906 100644 --- a/ffmpeg/_ffmpeg.py +++ b/ffmpeg/_ffmpeg.py @@ -94,9 +94,4 @@ def output(*streams_and_filename, **kwargs): return OutputNode(streams, output.__name__, kwargs=kwargs).stream() -__all__ = [ - 'input', - 'merge_outputs', - 'output', - 'overwrite_output', -] +__all__ = ['input', 'merge_outputs', 'output', 'overwrite_output'] diff --git a/ffmpeg/_filters.py b/ffmpeg/_filters.py index cc550bfc..2691220a 100644 --- a/ffmpeg/_filters.py +++ b/ffmpeg/_filters.py @@ -21,7 +21,9 @@ def filter_multi_output(stream_spec, filter_name, *args, **kwargs): ffmpeg.concat(split0, split1).output('out.mp4').run() ``` """ - return FilterNode(stream_spec, filter_name, args=args, kwargs=kwargs, max_inputs=None) + return FilterNode( + stream_spec, filter_name, args=args, kwargs=kwargs, max_inputs=None + ) @filter_operator() @@ -144,7 +146,12 @@ def overlay(main_parent_node, overlay_parent_node, eof_action='repeat', **kwargs Official documentation: `overlay `__ """ kwargs['eof_action'] = eof_action - return FilterNode([main_parent_node, overlay_parent_node], overlay.__name__, kwargs=kwargs, max_inputs=2).stream() + return FilterNode( + [main_parent_node, overlay_parent_node], + overlay.__name__, + kwargs=kwargs, + max_inputs=2, + ).stream() @filter_operator() @@ -180,10 +187,7 @@ def crop(stream, x, y, width, height, **kwargs): Official documentation: `crop `__ """ return FilterNode( - stream, - crop.__name__, - args=[width, height, x, y], - kwargs=kwargs + stream, crop.__name__, args=[width, height, x, y], kwargs=kwargs ).stream() @@ -209,7 +213,9 @@ def drawbox(stream, x, y, width, height, color, thickness=None, **kwargs): """ if thickness: kwargs['t'] = thickness - return FilterNode(stream, drawbox.__name__, args=[x, y, width, height, color], kwargs=kwargs).stream() + return FilterNode( + stream, drawbox.__name__, args=[x, y, width, height, color], kwargs=kwargs + ).stream() @filter_operator() @@ -385,8 +391,10 @@ def concat(*streams, **kwargs): stream_count = video_stream_count + audio_stream_count if len(streams) % stream_count != 0: raise ValueError( - 'Expected concat input streams to have length multiple of {} (v={}, a={}); got {}' - .format(stream_count, video_stream_count, audio_stream_count, len(streams))) + 'Expected concat input streams to have length multiple of {} (v={}, a={}); got {}'.format( + stream_count, video_stream_count, audio_stream_count, len(streams) + ) + ) kwargs['n'] = int(len(streams) / stream_count) return FilterNode(streams, concat.__name__, kwargs=kwargs, max_inputs=None).stream() diff --git a/ffmpeg/_probe.py b/ffmpeg/_probe.py index 61db84bb..41e81680 100644 --- a/ffmpeg/_probe.py +++ b/ffmpeg/_probe.py @@ -24,6 +24,4 @@ def probe(filename, cmd='ffprobe', **kwargs): return json.loads(out.decode('utf-8')) -__all__ = [ - 'probe', -] +__all__ = ['probe'] diff --git a/ffmpeg/_run.py b/ffmpeg/_run.py index f820c1ca..3167634d 100644 --- a/ffmpeg/_run.py +++ b/ffmpeg/_run.py @@ -8,10 +8,7 @@ import operator import subprocess -from ._ffmpeg import ( - input, - output, -) +from ._ffmpeg import input, output from .nodes import ( get_stream_spec_nodes, FilterNode, @@ -24,7 +21,9 @@ class Error(Exception): def __init__(self, cmd, stdout, stderr): - super(Error, self).__init__('{} error (see stderr output for detail)'.format(cmd)) + super(Error, self).__init__( + '{} error (see stderr output for detail)'.format(cmd) + ) self.stdout = stdout self.stderr = stderr @@ -69,9 +68,15 @@ def _format_output_stream_name(stream_name_map, edge): def _get_filter_spec(node, outgoing_edge_map, stream_name_map): incoming_edges = node.incoming_edges outgoing_edges = get_outgoing_edges(node, outgoing_edge_map) - inputs = [_format_input_stream_name(stream_name_map, edge) for edge in incoming_edges] - outputs = [_format_output_stream_name(stream_name_map, edge) for edge in outgoing_edges] - filter_spec = '{}{}{}'.format(''.join(inputs), node._get_filter(outgoing_edges), ''.join(outputs)) + inputs = [ + _format_input_stream_name(stream_name_map, edge) for edge in incoming_edges + ] + outputs = [ + _format_output_stream_name(stream_name_map, edge) for edge in outgoing_edges + ] + filter_spec = '{}{}{}'.format( + ''.join(inputs), node._get_filter(outgoing_edges), ''.join(outputs) + ) return filter_spec @@ -84,14 +89,20 @@ def _allocate_filter_stream_names(filter_nodes, outgoing_edge_maps, stream_name_ # TODO: automatically insert `splits` ahead of time via graph transformation. raise ValueError( 'Encountered {} with multiple outgoing edges with same upstream label {!r}; a ' - '`split` filter is probably required'.format(upstream_node, upstream_label)) + '`split` filter is probably required'.format( + upstream_node, upstream_label + ) + ) stream_name_map[upstream_node, upstream_label] = 's{}'.format(stream_count) stream_count += 1 def _get_filter_arg(filter_nodes, outgoing_edge_maps, stream_name_map): _allocate_filter_stream_names(filter_nodes, outgoing_edge_maps, stream_name_map) - filter_specs = [_get_filter_spec(node, outgoing_edge_maps[node], stream_name_map) for node in filter_nodes] + filter_specs = [ + _get_filter_spec(node, outgoing_edge_maps[node], stream_name_map) + for node in filter_nodes + ] return ';'.join(filter_specs) @@ -109,7 +120,9 @@ def _get_output_args(node, stream_name_map): for edge in node.incoming_edges: # edge = node.incoming_edges[0] - stream_name = _format_input_stream_name(stream_name_map, edge, is_final_arg=True) + stream_name = _format_input_stream_name( + stream_name_map, edge, is_final_arg=True + ) if stream_name != '0' or len(node.incoming_edges) > 1: args += ['-map', stream_name] @@ -123,7 +136,9 @@ def _get_output_args(node, stream_name_map): args += ['-b:a', str(kwargs.pop('audio_bitrate'))] if 'video_size' in kwargs: video_size = kwargs.pop('video_size') - if not isinstance(video_size, basestring) and isinstance(video_size, collections.Iterable): + if not isinstance(video_size, basestring) and isinstance( + video_size, collections.Iterable + ): video_size = '{}x{}'.format(video_size[0], video_size[1]) args += ['-video_size', video_size] args += convert_kwargs_to_cmd_line_args(kwargs) @@ -147,7 +162,9 @@ def get_args(stream_spec, overwrite_output=False): args += reduce(operator.add, [_get_input_args(node) for node in input_nodes]) if filter_arg: args += ['-filter_complex', filter_arg] - args += reduce(operator.add, [_get_output_args(node, stream_name_map) for node in output_nodes]) + args += reduce( + operator.add, [_get_output_args(node, stream_name_map) for node in output_nodes] + ) args += reduce(operator.add, [_get_global_args(node) for node in global_nodes], []) if overwrite_output: args += ['-y'] @@ -175,8 +192,14 @@ def compile(stream_spec, cmd='ffmpeg', overwrite_output=False): @output_operator() def run_async( - stream_spec, cmd='ffmpeg', pipe_stdin=False, pipe_stdout=False, pipe_stderr=False, - quiet=False, overwrite_output=False): + stream_spec, + cmd='ffmpeg', + pipe_stdin=False, + pipe_stdout=False, + pipe_stderr=False, + quiet=False, + overwrite_output=False, +): """Asynchronously invoke ffmpeg for the supplied node graph. Args: @@ -259,13 +282,20 @@ def run_async( stdout_stream = subprocess.PIPE if pipe_stdout or quiet else None stderr_stream = subprocess.PIPE if pipe_stderr or quiet else None return subprocess.Popen( - args, stdin=stdin_stream, stdout=stdout_stream, stderr=stderr_stream) + args, stdin=stdin_stream, stdout=stdout_stream, stderr=stderr_stream + ) @output_operator() def run( - stream_spec, cmd='ffmpeg', capture_stdout=False, capture_stderr=False, input=None, - quiet=False, overwrite_output=False): + stream_spec, + cmd='ffmpeg', + capture_stdout=False, + capture_stderr=False, + input=None, + quiet=False, + overwrite_output=False, +): """Invoke ffmpeg for the supplied node graph. Args: @@ -296,10 +326,4 @@ def run( return out, err -__all__ = [ - 'compile', - 'Error', - 'get_args', - 'run', - 'run_async', -] +__all__ = ['compile', 'Error', 'get_args', 'run', 'run_async'] diff --git a/ffmpeg/_utils.py b/ffmpeg/_utils.py index 0c1df622..d41f2fd7 100644 --- a/ffmpeg/_utils.py +++ b/ffmpeg/_utils.py @@ -34,8 +34,11 @@ def __new__(cls, name, this_bases, d): if sys.version_info.major >= 3: + class basestring(with_metaclass(BaseBaseString)): pass + + else: # noinspection PyUnresolvedReferences,PyCompatibility from builtins import basestring @@ -52,7 +55,10 @@ def _recursive_repr(item): elif isinstance(item, list): result = '[{}]'.format(', '.join([_recursive_repr(x) for x in item])) elif isinstance(item, dict): - kv_pairs = ['{}: {}'.format(_recursive_repr(k), _recursive_repr(item[k])) for k in sorted(item)] + kv_pairs = [ + '{}: {}'.format(_recursive_repr(k), _recursive_repr(item[k])) + for k in sorted(item) + ] result = '{' + ', '.join(kv_pairs) + '}' else: result = repr(item) diff --git a/ffmpeg/_view.py b/ffmpeg/_view.py index 06e6ff4c..fb129fa8 100644 --- a/ffmpeg/_view.py +++ b/ffmpeg/_view.py @@ -34,8 +34,10 @@ def view(stream_spec, detail=False, filename=None, pipe=False, **kwargs): try: import graphviz except ImportError: - raise ImportError('failed to import graphviz; please make sure graphviz is installed (e.g. `pip install ' - 'graphviz`)') + raise ImportError( + 'failed to import graphviz; please make sure graphviz is installed (e.g. `pip install ' + 'graphviz`)' + ) show_labels = kwargs.pop('show_labels', True) if pipe and filename is not None: @@ -49,7 +51,9 @@ def view(stream_spec, detail=False, filename=None, pipe=False, **kwargs): graph = graphviz.Digraph(format='png') graph.attr(rankdir='LR') if len(list(kwargs.keys())) != 0: - raise ValueError('Invalid kwargs key(s): {}'.format(', '.join(list(kwargs.keys())))) + raise ValueError( + 'Invalid kwargs key(s): {}'.format(', '.join(list(kwargs.keys()))) + ) for node in sorted_nodes: color = _get_node_color(node) @@ -57,11 +61,15 @@ def view(stream_spec, detail=False, filename=None, pipe=False, **kwargs): if detail: lines = [node.short_repr] lines += ['{!r}'.format(arg) for arg in node.args] - lines += ['{}={!r}'.format(key, node.kwargs[key]) for key in sorted(node.kwargs)] + lines += [ + '{}={!r}'.format(key, node.kwargs[key]) for key in sorted(node.kwargs) + ] node_text = '\n'.join(lines) else: node_text = node.short_repr - graph.node(str(hash(node)), node_text, shape='box', style='filled', fillcolor=color) + graph.node( + str(hash(node)), node_text, shape='box', style='filled', fillcolor=color + ) outgoing_edge_map = outgoing_edge_maps.get(node, {}) for edge in get_outgoing_edges(node, outgoing_edge_map): @@ -70,7 +78,11 @@ def view(stream_spec, detail=False, filename=None, pipe=False, **kwargs): down_label = edge.downstream_label up_selector = edge.upstream_selector - if show_labels and (up_label is not None or down_label is not None or up_selector is not None): + if show_labels and ( + up_label is not None + or down_label is not None + or up_selector is not None + ): if up_label is None: up_label = '' if up_selector is not None: @@ -93,6 +105,4 @@ def view(stream_spec, detail=False, filename=None, pipe=False, **kwargs): return stream_spec -__all__ = [ - 'view', -] +__all__ = ['view'] diff --git a/ffmpeg/dag.py b/ffmpeg/dag.py index fb51c6a1..a56a3ad5 100644 --- a/ffmpeg/dag.py +++ b/ffmpeg/dag.py @@ -70,14 +70,31 @@ def incoming_edge_map(self): raise NotImplementedError() -DagEdge = namedtuple('DagEdge', ['downstream_node', 'downstream_label', 'upstream_node', 'upstream_label', 'upstream_selector']) +DagEdge = namedtuple( + "DagEdge", + [ + "downstream_node", + "downstream_label", + "upstream_node", + "upstream_label", + "upstream_selector", + ], +) def get_incoming_edges(downstream_node, incoming_edge_map): edges = [] for downstream_label, upstream_info in list(incoming_edge_map.items()): upstream_node, upstream_label, upstream_selector = upstream_info - edges += [DagEdge(downstream_node, downstream_label, upstream_node, upstream_label, upstream_selector)] + edges += [ + DagEdge( + downstream_node, + downstream_label, + upstream_node, + upstream_label, + upstream_selector, + ) + ] return edges @@ -86,7 +103,15 @@ def get_outgoing_edges(upstream_node, outgoing_edge_map): for upstream_label, downstream_infos in list(outgoing_edge_map.items()): for downstream_info in downstream_infos: downstream_node, downstream_label, downstream_selector = downstream_info - edges += [DagEdge(downstream_node, downstream_label, upstream_node, upstream_label, downstream_selector)] + edges += [ + DagEdge( + downstream_node, + downstream_label, + upstream_node, + upstream_label, + downstream_selector, + ) + ] return edges @@ -99,12 +124,20 @@ def __upstream_hashes(self): hashes = [] for downstream_label, upstream_info in list(self.incoming_edge_map.items()): upstream_node, upstream_label, upstream_selector = upstream_info - hashes += [hash(x) for x in [downstream_label, upstream_node, upstream_label, upstream_selector]] + hashes += [ + hash(x) + for x in [ + downstream_label, + upstream_node, + upstream_label, + upstream_selector, + ] + ] return hashes @property def __inner_hash(self): - props = {'args': self.args, 'kwargs': self.kwargs} + props = {"args": self.args, "kwargs": self.kwargs} return get_hash(props) def __get_hash(self): @@ -126,14 +159,16 @@ def __eq__(self, other): @property def short_hash(self): - return '{:x}'.format(abs(hash(self)))[:12] + return "{:x}".format(abs(hash(self)))[:12] def long_repr(self, include_hash=True): - formatted_props = ['{!r}'.format(arg) for arg in self.args] - formatted_props += ['{}={!r}'.format(key, self.kwargs[key]) for key in sorted(self.kwargs)] - out = '{}({})'.format(self.name, ', '.join(formatted_props)) + formatted_props = ["{!r}".format(arg) for arg in self.args] + formatted_props += [ + "{}={!r}".format(key, self.kwargs[key]) for key in sorted(self.kwargs) + ] + out = "{}({})".format(self.name, ", ".join(formatted_props)) if include_hash: - out += ' <{}>'.format(self.short_hash) + out += " <{}>".format(self.short_hash) return out def __repr__(self): @@ -157,21 +192,35 @@ def topo_sort(downstream_nodes): sorted_nodes = [] outgoing_edge_maps = {} - def visit(upstream_node, upstream_label, downstream_node, downstream_label, downstream_selector=None): + def visit( + upstream_node, + upstream_label, + downstream_node, + downstream_label, + downstream_selector=None, + ): if upstream_node in marked_nodes: - raise RuntimeError('Graph is not a DAG') + raise RuntimeError("Graph is not a DAG") if downstream_node is not None: outgoing_edge_map = outgoing_edge_maps.get(upstream_node, {}) outgoing_edge_infos = outgoing_edge_map.get(upstream_label, []) - outgoing_edge_infos += [(downstream_node, downstream_label, downstream_selector)] + outgoing_edge_infos += [ + (downstream_node, downstream_label, downstream_selector) + ] outgoing_edge_map[upstream_label] = outgoing_edge_infos outgoing_edge_maps[upstream_node] = outgoing_edge_map if upstream_node not in sorted_nodes: marked_nodes.append(upstream_node) for edge in upstream_node.incoming_edges: - visit(edge.upstream_node, edge.upstream_label, edge.downstream_node, edge.downstream_label, edge.upstream_selector) + visit( + edge.upstream_node, + edge.upstream_label, + edge.downstream_node, + edge.downstream_label, + edge.upstream_selector, + ) marked_nodes.remove(upstream_node) sorted_nodes.append(upstream_node) diff --git a/ffmpeg/nodes.py b/ffmpeg/nodes.py index 34d1e44a..cacab8ee 100644 --- a/ffmpeg/nodes.py +++ b/ffmpeg/nodes.py @@ -23,10 +23,15 @@ def _get_types_str(types): class Stream(object): """Represents the outgoing edge of an upstream node; may be used to create more downstream nodes.""" - def __init__(self, upstream_node, upstream_label, node_types, upstream_selector=None): + def __init__( + self, upstream_node, upstream_label, node_types, upstream_selector=None + ): if not _is_of_types(upstream_node, node_types): - raise TypeError('Expected upstream node to be of one of the following type(s): {}; got {}'.format( - _get_types_str(node_types), type(upstream_node))) + raise TypeError( + 'Expected upstream node to be of one of the following type(s): {}; got {}'.format( + _get_types_str(node_types), type(upstream_node) + ) + ) self.node = upstream_node self.label = upstream_label self.selector = upstream_selector @@ -42,7 +47,9 @@ def __repr__(self): selector = '' if self.selector: selector = ':{}'.format(self.selector) - out = '{}[{!r}{}] <{}>'.format(node_repr, self.label, selector, self.node.short_hash) + out = '{}[{!r}{}] <{}>'.format( + node_repr, self.label, selector, self.node.short_hash + ) return out def __getitem__(self, index): @@ -146,26 +153,50 @@ class Node(KwargReprNode): @classmethod def __check_input_len(cls, stream_map, min_inputs, max_inputs): if min_inputs is not None and len(stream_map) < min_inputs: - raise ValueError('Expected at least {} input stream(s); got {}'.format(min_inputs, len(stream_map))) + raise ValueError( + 'Expected at least {} input stream(s); got {}'.format( + min_inputs, len(stream_map) + ) + ) elif max_inputs is not None and len(stream_map) > max_inputs: - raise ValueError('Expected at most {} input stream(s); got {}'.format(max_inputs, len(stream_map))) + raise ValueError( + 'Expected at most {} input stream(s); got {}'.format( + max_inputs, len(stream_map) + ) + ) @classmethod def __check_input_types(cls, stream_map, incoming_stream_types): for stream in list(stream_map.values()): if not _is_of_types(stream, incoming_stream_types): - raise TypeError('Expected incoming stream(s) to be of one of the following types: {}; got {}' - .format(_get_types_str(incoming_stream_types), type(stream))) + raise TypeError( + 'Expected incoming stream(s) to be of one of the following types: {}; got {}'.format( + _get_types_str(incoming_stream_types), type(stream) + ) + ) @classmethod def __get_incoming_edge_map(cls, stream_map): incoming_edge_map = {} for downstream_label, upstream in list(stream_map.items()): - incoming_edge_map[downstream_label] = (upstream.node, upstream.label, upstream.selector) + incoming_edge_map[downstream_label] = ( + upstream.node, + upstream.label, + upstream.selector, + ) return incoming_edge_map - def __init__(self, stream_spec, name, incoming_stream_types, outgoing_stream_type, min_inputs, - max_inputs, args=[], kwargs={}): + def __init__( + self, + stream_spec, + name, + incoming_stream_types, + outgoing_stream_type, + min_inputs, + max_inputs, + args=[], + kwargs={}, + ): stream_map = get_stream_map(stream_spec) self.__check_input_len(stream_map, min_inputs, max_inputs) self.__check_input_types(stream_map, incoming_stream_types) @@ -203,8 +234,9 @@ def __getitem__(self, item): class FilterableStream(Stream): def __init__(self, upstream_node, upstream_label, upstream_selector=None): - super(FilterableStream, self).__init__(upstream_node, upstream_label, {InputNode, FilterNode}, - upstream_selector) + super(FilterableStream, self).__init__( + upstream_node, upstream_label, {InputNode, FilterNode}, upstream_selector + ) # noinspection PyMethodOverriding @@ -220,7 +252,7 @@ def __init__(self, name, args=[], kwargs={}): min_inputs=0, max_inputs=0, args=args, - kwargs=kwargs + kwargs=kwargs, ) @property @@ -239,7 +271,7 @@ def __init__(self, stream_spec, name, max_inputs=1, args=[], kwargs={}): min_inputs=1, max_inputs=max_inputs, args=args, - kwargs=kwargs + kwargs=kwargs, ) """FilterNode""" @@ -279,7 +311,7 @@ def __init__(self, stream, name, args=[], kwargs={}): min_inputs=1, max_inputs=None, args=args, - kwargs=kwargs + kwargs=kwargs, ) @property @@ -289,8 +321,12 @@ def short_repr(self): class OutputStream(Stream): def __init__(self, upstream_node, upstream_label, upstream_selector=None): - super(OutputStream, self).__init__(upstream_node, upstream_label, {OutputNode, GlobalNode, MergeOutputsNode}, - upstream_selector=upstream_selector) + super(OutputStream, self).__init__( + upstream_node, + upstream_label, + {OutputNode, GlobalNode, MergeOutputsNode}, + upstream_selector=upstream_selector, + ) # noinspection PyMethodOverriding @@ -302,7 +338,7 @@ def __init__(self, streams, name): incoming_stream_types={OutputStream}, outgoing_stream_type=OutputStream, min_inputs=1, - max_inputs=None + max_inputs=None, ) @@ -317,7 +353,7 @@ def __init__(self, stream, name, args=[], kwargs={}): min_inputs=1, max_inputs=1, args=args, - kwargs=kwargs + kwargs=kwargs, ) @@ -338,6 +374,4 @@ def output_operator(name=None): return stream_operator(stream_classes={OutputStream}, name=name) -__all__ = [ - 'Stream', -] +__all__ = ['Stream'] diff --git a/ffmpeg/tests/test_ffmpeg.py b/ffmpeg/tests/test_ffmpeg.py index 8bb3975e..97638121 100644 --- a/ffmpeg/tests/test_ffmpeg.py +++ b/ffmpeg/tests/test_ffmpeg.py @@ -30,7 +30,10 @@ def test_escape_chars(): assert ffmpeg._utils.escape_chars('a:b', ':') == 'a\:b' assert ffmpeg._utils.escape_chars('a\\:b', ':\\') == 'a\\\\\\:b' - assert ffmpeg._utils.escape_chars('a:b,c[d]e%{}f\'g\'h\\i', '\\\':,[]%') == 'a\\:b\\,c\\[d\\]e\\%{}f\\\'g\\\'h\\\\i' + assert ( + ffmpeg._utils.escape_chars('a:b,c[d]e%{}f\'g\'h\\i', '\\\':,[]%') + == 'a\\:b\\,c\\[d\\]e\\%{}f\\\'g\\\'h\\\\i' + ) assert ffmpeg._utils.escape_chars(123, ':\\') == '123' @@ -62,23 +65,16 @@ def test_fluent_concat(): def test_fluent_output(): - (ffmpeg - .input('dummy.mp4') - .trim(start_frame=10, end_frame=20) - .output('dummy2.mp4') - ) + ffmpeg.input('dummy.mp4').trim(start_frame=10, end_frame=20).output('dummy2.mp4') def test_fluent_complex_filter(): in_file = ffmpeg.input('dummy.mp4') - return (ffmpeg - .concat( - in_file.trim(start_frame=10, end_frame=20), - in_file.trim(start_frame=30, end_frame=40), - in_file.trim(start_frame=50, end_frame=60) - ) - .output('dummy2.mp4') - ) + return ffmpeg.concat( + in_file.trim(start_frame=10, end_frame=20), + in_file.trim(start_frame=30, end_frame=40), + in_file.trim(start_frame=50, end_frame=60), + ).output('dummy2.mp4') def test_node_repr(): @@ -88,21 +84,35 @@ def test_node_repr(): trim3 = ffmpeg.trim(in_file, start_frame=50, end_frame=60) concatted = ffmpeg.concat(trim1, trim2, trim3) output = ffmpeg.output(concatted, 'dummy2.mp4') - assert repr(in_file.node) == 'input(filename={!r}) <{}>'.format('dummy.mp4', in_file.node.short_hash) - assert repr(trim1.node) == 'trim(end_frame=20, start_frame=10) <{}>'.format(trim1.node.short_hash) - assert repr(trim2.node) == 'trim(end_frame=40, start_frame=30) <{}>'.format(trim2.node.short_hash) - assert repr(trim3.node) == 'trim(end_frame=60, start_frame=50) <{}>'.format(trim3.node.short_hash) + assert repr(in_file.node) == 'input(filename={!r}) <{}>'.format( + 'dummy.mp4', in_file.node.short_hash + ) + assert repr(trim1.node) == 'trim(end_frame=20, start_frame=10) <{}>'.format( + trim1.node.short_hash + ) + assert repr(trim2.node) == 'trim(end_frame=40, start_frame=30) <{}>'.format( + trim2.node.short_hash + ) + assert repr(trim3.node) == 'trim(end_frame=60, start_frame=50) <{}>'.format( + trim3.node.short_hash + ) assert repr(concatted.node) == 'concat(n=3) <{}>'.format(concatted.node.short_hash) - assert repr(output.node) == 'output(filename={!r}) <{}>'.format('dummy2.mp4', output.node.short_hash) + assert repr(output.node) == 'output(filename={!r}) <{}>'.format( + 'dummy2.mp4', output.node.short_hash + ) def test_stream_repr(): in_file = ffmpeg.input('dummy.mp4') - assert repr(in_file) == 'input(filename={!r})[None] <{}>'.format('dummy.mp4', in_file.node.short_hash) + assert repr(in_file) == 'input(filename={!r})[None] <{}>'.format( + 'dummy.mp4', in_file.node.short_hash + ) split0 = in_file.filter_multi_output('split')[0] assert repr(split0) == 'split()[0] <{}>'.format(split0.node.short_hash) dummy_out = in_file.filter_multi_output('dummy')['out'] - assert repr(dummy_out) == 'dummy()[{!r}] <{}>'.format(dummy_out.label, dummy_out.node.short_hash) + assert repr(dummy_out) == 'dummy()[{!r}] <{}>'.format( + dummy_out.label, dummy_out.node.short_hash + ) def test__get_args__simple(): @@ -111,8 +121,18 @@ def test__get_args__simple(): def test_global_args(): - out_file = ffmpeg.input('dummy.mp4').output('dummy2.mp4').global_args('-progress', 'someurl') - assert out_file.get_args() == ['-i', 'dummy.mp4', 'dummy2.mp4', '-progress', 'someurl'] + out_file = ( + ffmpeg.input('dummy.mp4') + .output('dummy2.mp4') + .global_args('-progress', 'someurl') + ) + assert out_file.get_args() == [ + '-i', + 'dummy.mp4', + 'dummy2.mp4', + '-progress', + 'someurl', + ] def _get_simple_example(): @@ -120,18 +140,14 @@ def _get_simple_example(): def _get_complex_filter_example(): - split = (ffmpeg - .input(TEST_INPUT_FILE1) - .vflip() - .split() - ) + split = ffmpeg.input(TEST_INPUT_FILE1).vflip().split() split0 = split[0] split1 = split[1] overlay_file = ffmpeg.input(TEST_OVERLAY_FILE) overlay_file = ffmpeg.crop(overlay_file, 10, 10, 158, 112) - return (ffmpeg - .concat( + return ( + ffmpeg.concat( split0.trim(start_frame=10, end_frame=20), split1.trim(start_frame=30, end_frame=40), ) @@ -145,20 +161,25 @@ def _get_complex_filter_example(): def test__get_args__complex_filter(): out = _get_complex_filter_example() args = ffmpeg.get_args(out) - assert args == ['-i', TEST_INPUT_FILE1, - '-i', TEST_OVERLAY_FILE, + assert args == [ + '-i', + TEST_INPUT_FILE1, + '-i', + TEST_OVERLAY_FILE, '-filter_complex', - '[0]vflip[s0];' \ - '[s0]split=2[s1][s2];' \ - '[s1]trim=end_frame=20:start_frame=10[s3];' \ - '[s2]trim=end_frame=40:start_frame=30[s4];' \ - '[s3][s4]concat=n=2[s5];' \ - '[1]crop=158:112:10:10[s6];' \ - '[s6]hflip[s7];' \ - '[s5][s7]overlay=eof_action=repeat[s8];' \ - '[s8]drawbox=50:50:120:120:red:t=5[s9]', - '-map', '[s9]', TEST_OUTPUT_FILE1, - '-y' + '[0]vflip[s0];' + '[s0]split=2[s1][s2];' + '[s1]trim=end_frame=20:start_frame=10[s3];' + '[s2]trim=end_frame=40:start_frame=30[s4];' + '[s3][s4]concat=n=2[s5];' + '[1]crop=158:112:10:10[s6];' + '[s6]hflip[s7];' + '[s5][s7]overlay=eof_action=repeat[s8];' + '[s8]drawbox=50:50:120:120:red:t=5[s9]', + '-map', + '[s9]', + TEST_OUTPUT_FILE1, + '-y', ] @@ -167,11 +188,15 @@ def test_combined_output(): i2 = ffmpeg.input(TEST_OVERLAY_FILE) out = ffmpeg.output(i1, i2, TEST_OUTPUT_FILE1) assert out.get_args() == [ - '-i', TEST_INPUT_FILE1, - '-i', TEST_OVERLAY_FILE, - '-map', '0', - '-map', '1', - TEST_OUTPUT_FILE1 + '-i', + TEST_INPUT_FILE1, + '-i', + TEST_OVERLAY_FILE, + '-map', + '0', + '-map', + '1', + TEST_OUTPUT_FILE1, ] @@ -186,16 +211,18 @@ def test_filter_with_selector(use_shorthand): a1 = i['a'].filter('aecho', 0.8, 0.9, 1000, 0.3) out = ffmpeg.output(a1, v1, TEST_OUTPUT_FILE1) assert out.get_args() == [ - '-i', TEST_INPUT_FILE1, + '-i', + TEST_INPUT_FILE1, '-filter_complex', - '[0:a]aecho=0.8:0.9:1000:0.3[s0];' \ - '[0:v]hflip[s1]', - '-map', '[s0]', '-map', '[s1]', - TEST_OUTPUT_FILE1 + '[0:a]aecho=0.8:0.9:1000:0.3[s0];' '[0:v]hflip[s1]', + '-map', + '[s0]', + '-map', + '[s1]', + TEST_OUTPUT_FILE1, ] - def test_get_item_with_bad_selectors(): input = ffmpeg.input(TEST_INPUT_FILE1) @@ -213,16 +240,12 @@ def test_get_item_with_bad_selectors(): def _get_complex_filter_asplit_example(): - split = (ffmpeg - .input(TEST_INPUT_FILE1) - .vflip() - .asplit() - ) + split = ffmpeg.input(TEST_INPUT_FILE1).vflip().asplit() split0 = split[0] split1 = split[1] - return (ffmpeg - .concat( + return ( + ffmpeg.concat( split0.filter('atrim', start=10, end=20), split1.filter('atrim', start=30, end=40), ) @@ -234,12 +257,7 @@ def _get_complex_filter_asplit_example(): def test_filter_concat__video_only(): in1 = ffmpeg.input('in1.mp4') in2 = ffmpeg.input('in2.mp4') - args = ( - ffmpeg - .concat(in1, in2) - .output('out.mp4') - .get_args() - ) + args = ffmpeg.concat(in1, in2).output('out.mp4').get_args() assert args == [ '-i', 'in1.mp4', @@ -256,12 +274,7 @@ def test_filter_concat__video_only(): def test_filter_concat__audio_only(): in1 = ffmpeg.input('in1.mp4') in2 = ffmpeg.input('in2.mp4') - args = ( - ffmpeg - .concat(in1, in2, v=0, a=1) - .output('out.mp4') - .get_args() - ) + args = ffmpeg.concat(in1, in2, v=0, a=1).output('out.mp4').get_args() assert args == [ '-i', 'in1.mp4', @@ -271,7 +284,7 @@ def test_filter_concat__audio_only(): '[0][1]concat=a=1:n=2:v=0[s0]', '-map', '[s0]', - 'out.mp4' + 'out.mp4', ] @@ -279,11 +292,7 @@ def test_filter_concat__audio_video(): in1 = ffmpeg.input('in1.mp4') in2 = ffmpeg.input('in2.mp4') joined = ffmpeg.concat(in1.video, in1.audio, in2.hflip(), in2['a'], v=1, a=1).node - args = ( - ffmpeg - .output(joined[0], joined[1], 'out.mp4') - .get_args() - ) + args = ffmpeg.output(joined[0], joined[1], 'out.mp4').get_args() assert args == [ '-i', 'in1.mp4', @@ -304,8 +313,10 @@ def test_filter_concat__wrong_stream_count(): in2 = ffmpeg.input('in2.mp4') with pytest.raises(ValueError) as excinfo: ffmpeg.concat(in1.video, in1.audio, in2.hflip(), v=1, a=1).node - assert str(excinfo.value) == \ - 'Expected concat input streams to have length multiple of 2 (v=1, a=1); got 3' + assert ( + str(excinfo.value) + == 'Expected concat input streams to have length multiple of 2 (v=1, a=1); got 3' + ) def test_filter_asplit(): @@ -320,14 +331,13 @@ def test_filter_asplit(): '-map', '[s5]', TEST_OUTPUT_FILE1, - '-y' + '-y', ] def test__output__bitrate(): args = ( - ffmpeg - .input('in') + ffmpeg.input('in') .output('out', video_bitrate=1000, audio_bitrate=200) .get_args() ) @@ -336,28 +346,26 @@ def test__output__bitrate(): @pytest.mark.parametrize('video_size', [(320, 240), '320x240']) def test__output__video_size(video_size): - args = ( - ffmpeg - .input('in') - .output('out', video_size=video_size) - .get_args() - ) + args = ffmpeg.input('in').output('out', video_size=video_size).get_args() assert args == ['-i', 'in', '-video_size', '320x240', 'out'] def test_filter_normal_arg_escape(): """Test string escaping of normal filter args (e.g. ``font`` param of ``drawtext`` filter).""" + def _get_drawtext_font_repr(font): """Build a command-line arg using drawtext ``font`` param and extract the ``-filter_complex`` arg.""" - args = (ffmpeg - .input('in') + args = ( + ffmpeg.input('in') .drawtext('test', font='a{}b'.format(font)) .output('out') .get_args() ) assert args[:3] == ['-i', 'in', '-filter_complex'] assert args[4:] == ['-map', '[s0]', 'out'] - match = re.match(r'\[0\]drawtext=font=a((.|\n)*)b:text=test\[s0\]', args[3], re.MULTILINE) + match = re.match( + r'\[0\]drawtext=font=a((.|\n)*)b:text=test\[s0\]', args[3], re.MULTILINE + ) assert match is not None, 'Invalid -filter_complex arg: {!r}'.format(args[3]) return match.group(1) @@ -381,14 +389,10 @@ def _get_drawtext_font_repr(font): def test_filter_text_arg_str_escape(): """Test string escaping of normal filter args (e.g. ``text`` param of ``drawtext`` filter).""" + def _get_drawtext_text_repr(text): """Build a command-line arg using drawtext ``text`` param and extract the ``-filter_complex`` arg.""" - args = (ffmpeg - .input('in') - .drawtext('a{}b'.format(text)) - .output('out') - .get_args() - ) + args = ffmpeg.input('in').drawtext('a{}b'.format(text)).output('out').get_args() assert args[:3] == ['-i', 'in', '-filter_complex'] assert args[4:] == ['-map', '[s0]', 'out'] match = re.match(r'\[0\]drawtext=text=a((.|\n)*)b\[s0\]', args[3], re.MULTILINE) @@ -413,14 +417,19 @@ def _get_drawtext_text_repr(text): assert expected == actual -#def test_version(): +# def test_version(): # subprocess.check_call(['ffmpeg', '-version']) def test__compile(): out_file = ffmpeg.input('dummy.mp4').output('dummy2.mp4') assert out_file.compile() == ['ffmpeg', '-i', 'dummy.mp4', 'dummy2.mp4'] - assert out_file.compile(cmd='ffmpeg.old') == ['ffmpeg.old', '-i', 'dummy.mp4', 'dummy2.mp4'] + assert out_file.compile(cmd='ffmpeg.old') == [ + 'ffmpeg.old', + '-i', + 'dummy.mp4', + 'dummy2.mp4', + ] @pytest.mark.parametrize('pipe_stdin', [True, False]) @@ -431,15 +440,18 @@ def test__run_async(mocker, pipe_stdin, pipe_stdout, pipe_stderr): popen__mock = mocker.patch.object(subprocess, 'Popen', return_value=process__mock) stream = _get_simple_example() process = ffmpeg.run_async( - stream, pipe_stdin=pipe_stdin, pipe_stdout=pipe_stdout, pipe_stderr=pipe_stderr) + stream, pipe_stdin=pipe_stdin, pipe_stdout=pipe_stdout, pipe_stderr=pipe_stderr + ) assert process is process__mock expected_stdin = subprocess.PIPE if pipe_stdin else None expected_stdout = subprocess.PIPE if pipe_stdout else None expected_stderr = subprocess.PIPE if pipe_stderr else None - (args,), kwargs = popen__mock.call_args + (args,), kwargs = popen__mock.call_args assert args == ffmpeg.compile(stream) - assert kwargs == dict(stdin=expected_stdin, stdout=expected_stdout, stderr=expected_stderr) + assert kwargs == dict( + stdin=expected_stdin, stdout=expected_stdout, stderr=expected_stderr + ) def test__run(): @@ -454,7 +466,9 @@ def test__run(): def test__run__capture_out(mocker, capture_stdout, capture_stderr): mocker.patch.object(ffmpeg._run, 'compile', return_value=['echo', 'test']) stream = _get_simple_example() - out, err = ffmpeg.run(stream, capture_stdout=capture_stdout, capture_stderr=capture_stderr) + out, err = ffmpeg.run( + stream, capture_stdout=capture_stdout, capture_stderr=capture_stderr + ) if capture_stdout: assert out == 'test\n'.encode() else: @@ -479,7 +493,9 @@ def test__run__error(mocker, capture_stdout, capture_stderr): mocker.patch.object(ffmpeg._run, 'compile', return_value=['ffmpeg']) stream = _get_complex_filter_example() with pytest.raises(ffmpeg.Error) as excinfo: - out, err = ffmpeg.run(stream, capture_stdout=capture_stdout, capture_stderr=capture_stderr) + out, err = ffmpeg.run( + stream, capture_stdout=capture_stdout, capture_stderr=capture_stderr + ) assert str(excinfo.value) == 'ffmpeg error (see stderr output for detail)' out = excinfo.value.stdout err = excinfo.value.stderr @@ -515,24 +531,30 @@ def test__filter__custom(): stream = ffmpeg.filter(stream, 'custom_filter', 'a', 'b', kwarg1='c') stream = ffmpeg.output(stream, 'dummy2.mp4') assert stream.get_args() == [ - '-i', 'dummy.mp4', - '-filter_complex', '[0]custom_filter=a:b:kwarg1=c[s0]', - '-map', '[s0]', - 'dummy2.mp4' + '-i', + 'dummy.mp4', + '-filter_complex', + '[0]custom_filter=a:b:kwarg1=c[s0]', + '-map', + '[s0]', + 'dummy2.mp4', ] def test__filter__custom_fluent(): - stream = (ffmpeg - .input('dummy.mp4') + stream = ( + ffmpeg.input('dummy.mp4') .filter('custom_filter', 'a', 'b', kwarg1='c') .output('dummy2.mp4') ) assert stream.get_args() == [ - '-i', 'dummy.mp4', - '-filter_complex', '[0]custom_filter=a:b:kwarg1=c[s0]', - '-map', '[s0]', - 'dummy2.mp4' + '-i', + 'dummy.mp4', + '-filter_complex', + '[0]custom_filter=a:b:kwarg1=c[s0]', + '-map', + '[s0]', + 'dummy2.mp4', ] @@ -541,16 +563,29 @@ def test__merge_outputs(): out1 = in_.output('out1.mp4') out2 = in_.output('out2.mp4') assert ffmpeg.merge_outputs(out1, out2).get_args() == [ - '-i', 'in.mp4', 'out1.mp4', 'out2.mp4' - ] - assert ffmpeg.get_args([out1, out2]) == [ - '-i', 'in.mp4', 'out2.mp4', 'out1.mp4' + '-i', + 'in.mp4', + 'out1.mp4', + 'out2.mp4', ] + assert ffmpeg.get_args([out1, out2]) == ['-i', 'in.mp4', 'out2.mp4', 'out1.mp4'] def test__input__start_time(): - assert ffmpeg.input('in', ss=10.5).output('out').get_args() == ['-ss', '10.5', '-i', 'in', 'out'] - assert ffmpeg.input('in', ss=0.0).output('out').get_args() == ['-ss', '0.0', '-i', 'in', 'out'] + assert ffmpeg.input('in', ss=10.5).output('out').get_args() == [ + '-ss', + '10.5', + '-i', + 'in', + 'out', + ] + assert ffmpeg.input('in', ss=0.0).output('out').get_args() == [ + '-ss', + '0.0', + '-i', + 'in', + 'out', + ] def test_multi_passthrough(): @@ -558,49 +593,53 @@ def test_multi_passthrough(): out2 = ffmpeg.input('in2.mp4').output('out2.mp4') out = ffmpeg.merge_outputs(out1, out2) assert ffmpeg.get_args(out) == [ - '-i', 'in1.mp4', - '-i', 'in2.mp4', + '-i', + 'in1.mp4', + '-i', + 'in2.mp4', 'out1.mp4', - '-map', '1', - 'out2.mp4' + '-map', + '1', + 'out2.mp4', ] assert ffmpeg.get_args([out1, out2]) == [ - '-i', 'in2.mp4', - '-i', 'in1.mp4', + '-i', + 'in2.mp4', + '-i', + 'in1.mp4', 'out2.mp4', - '-map', '1', - 'out1.mp4' + '-map', + '1', + 'out1.mp4', ] def test_passthrough_selectors(): i1 = ffmpeg.input(TEST_INPUT_FILE1) - args = ( - ffmpeg - .output(i1['1'], i1['2'], TEST_OUTPUT_FILE1) - .get_args() - ) + args = ffmpeg.output(i1['1'], i1['2'], TEST_OUTPUT_FILE1).get_args() assert args == [ - '-i', TEST_INPUT_FILE1, - '-map', '0:1', - '-map', '0:2', + '-i', + TEST_INPUT_FILE1, + '-map', + '0:1', + '-map', + '0:2', TEST_OUTPUT_FILE1, ] def test_mixed_passthrough_selectors(): i1 = ffmpeg.input(TEST_INPUT_FILE1) - args = ( - ffmpeg - .output(i1['1'].hflip(), i1['2'], TEST_OUTPUT_FILE1) - .get_args() - ) + args = ffmpeg.output(i1['1'].hflip(), i1['2'], TEST_OUTPUT_FILE1).get_args() assert args == [ - '-i', TEST_INPUT_FILE1, + '-i', + TEST_INPUT_FILE1, '-filter_complex', '[0:1]hflip[s0]', - '-map', '[s0]', - '-map', '0:2', + '-map', + '[s0]', + '-map', + '0:2', TEST_OUTPUT_FILE1, ] @@ -612,36 +651,53 @@ def test_pipe(): frame_count = 10 start_frame = 2 - out = (ffmpeg - .input('pipe:0', format='rawvideo', pixel_format='rgb24', video_size=(width, height), framerate=10) + out = ( + ffmpeg.input( + 'pipe:0', + format='rawvideo', + pixel_format='rgb24', + video_size=(width, height), + framerate=10, + ) .trim(start_frame=start_frame) .output('pipe:1', format='rawvideo') ) args = out.get_args() assert args == [ - '-f', 'rawvideo', - '-video_size', '{}x{}'.format(width, height), - '-framerate', '10', - '-pixel_format', 'rgb24', - '-i', 'pipe:0', + '-f', + 'rawvideo', + '-video_size', + '{}x{}'.format(width, height), + '-framerate', + '10', + '-pixel_format', + 'rgb24', + '-i', + 'pipe:0', '-filter_complex', - '[0]trim=start_frame=2[s0]', - '-map', '[s0]', - '-f', 'rawvideo', - 'pipe:1' + '[0]trim=start_frame=2[s0]', + '-map', + '[s0]', + '-f', + 'rawvideo', + 'pipe:1', ] cmd = ['ffmpeg'] + args - p = subprocess.Popen(cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE) + p = subprocess.Popen( + cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE + ) - in_data = bytes(bytearray([random.randint(0,255) for _ in range(frame_size * frame_count)])) + in_data = bytes( + bytearray([random.randint(0, 255) for _ in range(frame_size * frame_count)]) + ) p.stdin.write(in_data) # note: this could block, in which case need to use threads p.stdin.close() out_data = p.stdout.read() assert len(out_data) == frame_size * (frame_count - start_frame) - assert out_data == in_data[start_frame*frame_size:] + assert out_data == in_data[start_frame * frame_size :] def test__probe(): diff --git a/requirements.txt b/requirements.txt index bf565e9a..f8b347e9 100644 --- a/requirements.txt +++ b/requirements.txt @@ -13,6 +13,7 @@ importlib-metadata==0.17 Jinja2==2.10.1 MarkupSafe==1.1.1 more-itertools==7.0.0 +numpy==1.16.4 packaging==19.0 pluggy==0.12.0 py==1.8.0 diff --git a/setup.py b/setup.py index 8d54b9dc..f12244de 100644 --- a/setup.py +++ b/setup.py @@ -2,22 +2,26 @@ from textwrap import dedent version = '0.1.17' -download_url = 'https://github.com/kkroening/ffmpeg-python/archive/v{}.zip'.format(version) +download_url = 'https://github.com/kkroening/ffmpeg-python/archive/v{}.zip'.format( + version +) -long_description = dedent("""\ +long_description = dedent( + '''\ ffmpeg-python: Python bindings for FFmpeg ========================================= :Github: https://github.com/kkroening/ffmpeg-python :API Reference: https://kkroening.github.io/ffmpeg-python/ -""") +''' +) file_formats = [ 'aac', 'ac3', 'avi', - 'bmp' + 'bmp', 'flac', 'gif', 'mov', @@ -70,11 +74,12 @@ extras_require={ 'dev': [ 'future==0.17.1', + 'numpy==1.16.4', 'pytest-mock==1.10.4', 'pytest==4.6.1', 'Sphinx==2.1.0', 'tox==3.12.1', - ], + ] }, classifiers=[ 'Intended Audience :: Developers', From 46eeb417053f4caf2845b2e0838a9d00409e7fbf Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Mon, 3 Jun 2019 04:05:24 -0500 Subject: [PATCH 26/60] Use Black formatter --- ffmpeg/dag.py | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/ffmpeg/dag.py b/ffmpeg/dag.py index a56a3ad5..bb398238 100644 --- a/ffmpeg/dag.py +++ b/ffmpeg/dag.py @@ -71,13 +71,13 @@ def incoming_edge_map(self): DagEdge = namedtuple( - "DagEdge", + 'DagEdge', [ - "downstream_node", - "downstream_label", - "upstream_node", - "upstream_label", - "upstream_selector", + 'downstream_node', + 'downstream_label', + 'upstream_node', + 'upstream_label', + 'upstream_selector', ], ) @@ -137,7 +137,7 @@ def __upstream_hashes(self): @property def __inner_hash(self): - props = {"args": self.args, "kwargs": self.kwargs} + props = {'args': self.args, 'kwargs': self.kwargs} return get_hash(props) def __get_hash(self): @@ -159,16 +159,16 @@ def __eq__(self, other): @property def short_hash(self): - return "{:x}".format(abs(hash(self)))[:12] + return '{:x}'.format(abs(hash(self)))[:12] def long_repr(self, include_hash=True): - formatted_props = ["{!r}".format(arg) for arg in self.args] + formatted_props = ['{!r}'.format(arg) for arg in self.args] formatted_props += [ - "{}={!r}".format(key, self.kwargs[key]) for key in sorted(self.kwargs) + '{}={!r}'.format(key, self.kwargs[key]) for key in sorted(self.kwargs) ] - out = "{}({})".format(self.name, ", ".join(formatted_props)) + out = '{}({})'.format(self.name, ', '.join(formatted_props)) if include_hash: - out += " <{}>".format(self.short_hash) + out += ' <{}>'.format(self.short_hash) return out def __repr__(self): @@ -200,7 +200,7 @@ def visit( downstream_selector=None, ): if upstream_node in marked_nodes: - raise RuntimeError("Graph is not a DAG") + raise RuntimeError('Graph is not a DAG') if downstream_node is not None: outgoing_edge_map = outgoing_edge_maps.get(upstream_node, {}) From 1b2634291d9694ed5b8acb4f6567e43123a2f637 Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Mon, 3 Jun 2019 04:06:26 -0500 Subject: [PATCH 27/60] Release 0.1.18 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 8d54b9dc..e57a63ce 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup from textwrap import dedent -version = '0.1.17' +version = '0.1.18' download_url = 'https://github.com/kkroening/ffmpeg-python/archive/v{}.zip'.format(version) long_description = dedent("""\ From 63973d0b29cd5b1db6be79f41b05763d60f24c33 Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Fri, 28 Jun 2019 22:14:44 -0500 Subject: [PATCH 28/60] Update README.md --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index d6efba4b..5989ae66 100644 --- a/README.md +++ b/README.md @@ -240,6 +240,8 @@ pytest ### Special thanks +- [Fabrice Bellard](https://bellard.org/) +- [The FFmpeg team](https://ffmpeg.org/donations.html) - [Arne de Laat](https://github.com/153957) - [Davide Depau](https://github.com/depau) - [Dim](https://github.com/lloti) From faca0ee87b01742d08b30469451ccef4bfaad065 Mon Sep 17 00:00:00 2001 From: Michal Trybus Date: Mon, 1 Jul 2019 15:39:55 +0200 Subject: [PATCH 29/60] Test against wrong order of outputs from multiple-output filters --- ffmpeg/tests/test_ffmpeg.py | 48 +++++++++++++++++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/ffmpeg/tests/test_ffmpeg.py b/ffmpeg/tests/test_ffmpeg.py index 97638121..b40d624a 100644 --- a/ffmpeg/tests/test_ffmpeg.py +++ b/ffmpeg/tests/test_ffmpeg.py @@ -716,3 +716,51 @@ def test__probe__exception(): def test__probe__extra_args(): data = ffmpeg.probe(TEST_INPUT_FILE1, show_frames=None) assert set(data.keys()) == {'format', 'streams', 'frames'} + +def get_filter_complex_input(flt, name): + m = re.search(r'\[([^]]+)\]{}(?=[[;]|$)'.format(name), flt) + if m: + return m.group(1) + else: + return None + +def get_filter_complex_outputs(flt, name): + m = re.search(r'(^|[];]){}((\[[^]]+\])+)(?=;|$)'.format(name), flt) + if m: + return m.group(2)[1:-1].split('][') + else: + return None + +def test__get_filter_complex_input(): + assert get_filter_complex_input("", "scale") is None + assert get_filter_complex_input("scale", "scale") is None + assert get_filter_complex_input("scale[s3][s4];etc", "scale") is None + assert get_filter_complex_input("[s2]scale", "scale") == "s2" + assert get_filter_complex_input("[s2]scale;etc", "scale") == "s2" + assert get_filter_complex_input("[s2]scale[s3][s4];etc", "scale") == "s2" + +def test__get_filter_complex_outputs(): + assert get_filter_complex_outputs("", "scale") is None + assert get_filter_complex_outputs("scale", "scale") is None + assert get_filter_complex_outputs("scalex[s0][s1]", "scale") is None + assert get_filter_complex_outputs("scale[s0][s1]", "scale") == ['s0', 's1'] + assert get_filter_complex_outputs("[s5]scale[s0][s1]", "scale") == ['s0', 's1'] + assert get_filter_complex_outputs("[s5]scale[s1][s0]", "scale") == ['s1', 's0'] + assert get_filter_complex_outputs("[s5]scale[s1]", "scale") == ['s1'] + assert get_filter_complex_outputs("[s5]scale[s1];x", "scale") == ['s1'] + assert get_filter_complex_outputs("y;[s5]scale[s1];x", "scale") == ['s1'] + +def test__multi_output_edge_label_order(): + scale2ref = ffmpeg.filter_multi_output([ffmpeg.input('x'), ffmpeg.input('y')], 'scale2ref') + out = ( + ffmpeg.merge_outputs( + scale2ref[1].filter('scale').output('a'), + scale2ref[10000].filter('hflip').output('b') + ) + ) + + args = out.get_args() + flt_cmpl = args[args.index('-filter_complex')+1] + out1, out2 = get_filter_complex_outputs(flt_cmpl, 'scale2ref') + assert out1 == get_filter_complex_input(flt_cmpl, 'scale') + assert out2 == get_filter_complex_input(flt_cmpl, 'hflip') From 732bf213974a7e433f97fac6aacf48e70c302452 Mon Sep 17 00:00:00 2001 From: Michal Trybus Date: Mon, 1 Jul 2019 15:55:10 +0200 Subject: [PATCH 30/60] Label-based order of outputs from multiple-output filters --- ffmpeg/_run.py | 2 +- ffmpeg/dag.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/ffmpeg/_run.py b/ffmpeg/_run.py index 3167634d..afc504dc 100644 --- a/ffmpeg/_run.py +++ b/ffmpeg/_run.py @@ -84,7 +84,7 @@ def _allocate_filter_stream_names(filter_nodes, outgoing_edge_maps, stream_name_ stream_count = 0 for upstream_node in filter_nodes: outgoing_edge_map = outgoing_edge_maps[upstream_node] - for upstream_label, downstreams in list(outgoing_edge_map.items()): + for upstream_label, downstreams in sorted(outgoing_edge_map.items()): if len(downstreams) > 1: # TODO: automatically insert `splits` ahead of time via graph transformation. raise ValueError( diff --git a/ffmpeg/dag.py b/ffmpeg/dag.py index bb398238..9564d7f8 100644 --- a/ffmpeg/dag.py +++ b/ffmpeg/dag.py @@ -100,7 +100,7 @@ def get_incoming_edges(downstream_node, incoming_edge_map): def get_outgoing_edges(upstream_node, outgoing_edge_map): edges = [] - for upstream_label, downstream_infos in list(outgoing_edge_map.items()): + for upstream_label, downstream_infos in sorted(outgoing_edge_map.items()): for downstream_info in downstream_infos: downstream_node, downstream_label, downstream_selector = downstream_info edges += [ From 1c9695d2a0b079e5d1e9d6fb3ecbeaf248b365a9 Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Fri, 5 Jul 2019 19:16:43 -0500 Subject: [PATCH 31/60] Run Black code formatter --- ffmpeg/tests/test_ffmpeg.py | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/ffmpeg/tests/test_ffmpeg.py b/ffmpeg/tests/test_ffmpeg.py index b40d624a..279a323e 100644 --- a/ffmpeg/tests/test_ffmpeg.py +++ b/ffmpeg/tests/test_ffmpeg.py @@ -717,6 +717,7 @@ def test__probe__extra_args(): data = ffmpeg.probe(TEST_INPUT_FILE1, show_frames=None) assert set(data.keys()) == {'format', 'streams', 'frames'} + def get_filter_complex_input(flt, name): m = re.search(r'\[([^]]+)\]{}(?=[[;]|$)'.format(name), flt) if m: @@ -724,6 +725,7 @@ def get_filter_complex_input(flt, name): else: return None + def get_filter_complex_outputs(flt, name): m = re.search(r'(^|[];]){}((\[[^]]+\])+)(?=;|$)'.format(name), flt) if m: @@ -731,6 +733,7 @@ def get_filter_complex_outputs(flt, name): else: return None + def test__get_filter_complex_input(): assert get_filter_complex_input("", "scale") is None assert get_filter_complex_input("scale", "scale") is None @@ -739,6 +742,7 @@ def test__get_filter_complex_input(): assert get_filter_complex_input("[s2]scale;etc", "scale") == "s2" assert get_filter_complex_input("[s2]scale[s3][s4];etc", "scale") == "s2" + def test__get_filter_complex_outputs(): assert get_filter_complex_outputs("", "scale") is None assert get_filter_complex_outputs("scale", "scale") is None @@ -750,17 +754,18 @@ def test__get_filter_complex_outputs(): assert get_filter_complex_outputs("[s5]scale[s1];x", "scale") == ['s1'] assert get_filter_complex_outputs("y;[s5]scale[s1];x", "scale") == ['s1'] + def test__multi_output_edge_label_order(): - scale2ref = ffmpeg.filter_multi_output([ffmpeg.input('x'), ffmpeg.input('y')], 'scale2ref') - out = ( - ffmpeg.merge_outputs( - scale2ref[1].filter('scale').output('a'), - scale2ref[10000].filter('hflip').output('b') - ) + scale2ref = ffmpeg.filter_multi_output( + [ffmpeg.input('x'), ffmpeg.input('y')], 'scale2ref' + ) + out = ffmpeg.merge_outputs( + scale2ref[1].filter('scale').output('a'), + scale2ref[10000].filter('hflip').output('b'), ) args = out.get_args() - flt_cmpl = args[args.index('-filter_complex')+1] + flt_cmpl = args[args.index('-filter_complex') + 1] out1, out2 = get_filter_complex_outputs(flt_cmpl, 'scale2ref') assert out1 == get_filter_complex_input(flt_cmpl, 'scale') assert out2 == get_filter_complex_input(flt_cmpl, 'hflip') From 78fb6cf2f11cb93c6071c978a92a640f5743a9fb Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Fri, 5 Jul 2019 19:17:30 -0500 Subject: [PATCH 32/60] Release 0.2.0 --- setup.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/setup.py b/setup.py index 9d0057be..0282c67e 100644 --- a/setup.py +++ b/setup.py @@ -1,7 +1,7 @@ from setuptools import setup from textwrap import dedent -version = '0.1.18' +version = '0.2.0' download_url = 'https://github.com/kkroening/ffmpeg-python/archive/v{}.zip'.format( version ) From c6c2dfdc2882bcf166ed35e8517aad25a6c2bfe8 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Wed, 31 Jul 2019 06:30:22 +0200 Subject: [PATCH 33/60] Travis CI: Add Python 3.7 to the tests Python 3.4 is end of life... Should we drop support for it? --- .travis.yml | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/.travis.yml b/.travis.yml index c58274b8..e4d7d758 100644 --- a/.travis.yml +++ b/.travis.yml @@ -9,20 +9,18 @@ before_install: matrix: include: - python: 2.7 - env: - - TOX_ENV=py27 + env: TOX_ENV=py27 - python: 3.4 - env: - - TOX_ENV=py34 + env: TOX_ENV=py34 - python: 3.5 - env: - - TOX_ENV=py35 + env: TOX_ENV=py35 - python: 3.6 - env: - - TOX_ENV=py36 + env: TOX_ENV=py36 + - python: 3.7 + dist: xenial # required for Python >= 3.7 + env: TOX_ENV=py37 - python: pypy - env: - - TOX_ENV=pypy + env: TOX_ENV=pypy install: - pip install tox script: From ed9b7f8804fb07f5bf4e7f6d7373f0107d404c13 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Wed, 31 Jul 2019 06:32:29 +0200 Subject: [PATCH 34/60] tox.ini: Add py37 to the testing Python 3.4 is end of life... Should we drop support for it? --- tox.ini | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tox.ini b/tox.ini index f86ec4bb..1e3ba533 100644 --- a/tox.ini +++ b/tox.ini @@ -4,7 +4,7 @@ # and then run "tox" from this directory. [tox] -envlist = py27, py34, py35, py36, pypy +envlist = py27, py34, py35, py36, py37, pypy [testenv] commands = py.test -vv From bbd56a35a3fc1c23e0e7c181c5a3d6f9f0db3397 Mon Sep 17 00:00:00 2001 From: Kyle McDonald Date: Sun, 4 Aug 2019 15:09:40 -0700 Subject: [PATCH 35/60] tensorflow streaming typo --- examples/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/README.md b/examples/README.md index 4ec816e2..f30c59fe 100644 --- a/examples/README.md +++ b/examples/README.md @@ -161,7 +161,7 @@ while True: out_frame = deep_dream.process_frame(in_frame) process2.stdin.write( - in_frame + out_frame .astype(np.uint8) .tobytes() ) From c99e97b6871105a886026027b18e8e3906aaaee4 Mon Sep 17 00:00:00 2001 From: Kyle McDonald Date: Sun, 4 Aug 2019 15:18:55 -0700 Subject: [PATCH 36/60] added mono to stereo example --- examples/README.md | 30 +++++++++++++++++++++++++++++ examples/graphs/mono-to-stereo.png | Bin 0 -> 17191 bytes 2 files changed, 30 insertions(+) create mode 100644 examples/graphs/mono-to-stereo.png diff --git a/examples/README.md b/examples/README.md index 4ec816e2..d9981f5d 100644 --- a/examples/README.md +++ b/examples/README.md @@ -115,6 +115,36 @@ out = ffmpeg.output(v3, a3, 'out.mp4') out.run() ``` +## Mono to stereo with offsets and video + +mono-to-stereo graph + +```python +audio_left = ( + ffmpeg + .input('audio-left.wav') + .filter('atrim', start=5) + .filter('asetpts', 'PTS-STARTPTS') +) + +audio_right = ( + ffmpeg + .input('audio-right.wav') + .filter('atrim', start=10) + .filter('asetpts', 'PTS-STARTPTS') +) + +input_video = ffmpeg.input('input-video.mp4') + +( + ffmpeg + .filter((audio_left, audio_right), 'join', inputs=2, channel_layout='stereo') + .output(input_video.video, 'output-video.mp4', shortest=None, vcodec='copy') + .overwrite_output() + .run() +) +``` + ## [Jupyter Frame Viewer](https://github.com/kkroening/ffmpeg-python/blob/master/examples/ffmpeg-numpy.ipynb) jupyter screenshot diff --git a/examples/graphs/mono-to-stereo.png b/examples/graphs/mono-to-stereo.png new file mode 100644 index 0000000000000000000000000000000000000000..92ce0e5b47a26c88dfbc88baf84bc764b4c3ddd1 GIT binary patch literal 17191 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 Aq5uE@ literal 0 HcmV?d00001 From 82a00e48492f2d787c980c434d58e249c210818e Mon Sep 17 00:00:00 2001 From: magnusvmt Date: Mon, 28 Oct 2019 16:28:51 +0100 Subject: [PATCH 37/60] Add optional timeout argument to probe Popen.communicate() supports a timeout argument which is useful in case there is a risk that the probe hangs. --- ffmpeg/_probe.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ffmpeg/_probe.py b/ffmpeg/_probe.py index 41e81680..3b8e3a64 100644 --- a/ffmpeg/_probe.py +++ b/ffmpeg/_probe.py @@ -4,7 +4,7 @@ from ._utils import convert_kwargs_to_cmd_line_args -def probe(filename, cmd='ffprobe', **kwargs): +def probe(filename, cmd='ffprobe', timeout=None, **kwargs): """Run ffprobe on the specified file and return a JSON representation of the output. Raises: @@ -18,7 +18,7 @@ def probe(filename, cmd='ffprobe', **kwargs): args += [filename] p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - out, err = p.communicate() + out, err = p.communicate(timeout=timeout) if p.returncode != 0: raise Error('ffprobe', out, err) return json.loads(out.decode('utf-8')) From 2a7a2d78c97125d5d55faf35a319ccdf080646a0 Mon Sep 17 00:00:00 2001 From: Christophe Mehay Date: Thu, 31 Oct 2019 12:02:09 +0100 Subject: [PATCH 38/60] Duplicate parameters can be set in kwargs with an iterator For instance, add multiple `streamid` in the output can be done like this: ffmpeg.input(url).output('video.mp4', streamid=['0:0x101', '1:0x102']) will output this command line ffmpeg -i video.mp4 -streamid 0:0x101 -streamid 1:0x102 video.mp4 --- ffmpeg/_utils.py | 8 ++++++++ ffmpeg/tests/test_ffmpeg.py | 5 +++++ 2 files changed, 13 insertions(+) diff --git a/ffmpeg/_utils.py b/ffmpeg/_utils.py index d41f2fd7..92d76110 100644 --- a/ffmpeg/_utils.py +++ b/ffmpeg/_utils.py @@ -3,6 +3,8 @@ from past.builtins import basestring import hashlib import sys +import collections + if sys.version_info.major == 2: # noinspection PyUnresolvedReferences,PyShadowingBuiltins @@ -91,6 +93,12 @@ def convert_kwargs_to_cmd_line_args(kwargs): args = [] for k in sorted(kwargs.keys()): v = kwargs[k] + if isinstance(v, collections.Iterable) and not isinstance(v, str): + for value in v: + args.append('-{}'.format(k)) + if value is not None: + args.append('{}'.format(value)) + continue args.append('-{}'.format(k)) if v is not None: args.append('{}'.format(v)) diff --git a/ffmpeg/tests/test_ffmpeg.py b/ffmpeg/tests/test_ffmpeg.py index 279a323e..0d600f21 100644 --- a/ffmpeg/tests/test_ffmpeg.py +++ b/ffmpeg/tests/test_ffmpeg.py @@ -9,6 +9,7 @@ import re import subprocess + try: import mock # python 2 except ImportError: @@ -114,6 +115,10 @@ def test_stream_repr(): dummy_out.label, dummy_out.node.short_hash ) +def test_repeated_args(): + out_file = ffmpeg.input('dummy.mp4').output('dummy2.mp4', streamid=['0:0x101', '1:0x102']) + assert out_file.get_args() == ['-i', 'dummy.mp4', '-streamid', '0:0x101', '-streamid', '1:0x102', 'dummy2.mp4'] + def test__get_args__simple(): out_file = ffmpeg.input('dummy.mp4').output('dummy2.mp4') From a8e0954f411a8467d2108ca36cab56d1bc3e0a1e Mon Sep 17 00:00:00 2001 From: Harshna Patel Date: Thu, 31 Oct 2019 20:07:38 +0000 Subject: [PATCH 39/60] Fixed typographical error --- ffmpeg/_run.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ffmpeg/_run.py b/ffmpeg/_run.py index afc504dc..c9cbb7ce 100644 --- a/ffmpeg/_run.py +++ b/ffmpeg/_run.py @@ -175,7 +175,7 @@ def get_args(stream_spec, overwrite_output=False): def compile(stream_spec, cmd='ffmpeg', overwrite_output=False): """Build command-line for invoking ffmpeg. - The :meth:`run` function uses this to build the commnad line + The :meth:`run` function uses this to build the command line arguments and should work in most cases, but calling this function directly is useful for debugging or if you need to invoke ffmpeg manually for whatever reason. From 2d3a078f24309f8d189ea196b54011632e3afb20 Mon Sep 17 00:00:00 2001 From: magnusvmt Date: Sat, 2 Nov 2019 16:17:17 +0100 Subject: [PATCH 40/60] Add test for probe timeout and fix for Python2 Fix for Python2 so that timeout is only used as keyword argument if it is provided Added a test for the new timeout argument that will run for Python > 3.3. --- ffmpeg/_probe.py | 5 ++++- ffmpeg/tests/test_ffmpeg.py | 8 ++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/ffmpeg/_probe.py b/ffmpeg/_probe.py index 3b8e3a64..090d7abf 100644 --- a/ffmpeg/_probe.py +++ b/ffmpeg/_probe.py @@ -18,7 +18,10 @@ def probe(filename, cmd='ffprobe', timeout=None, **kwargs): args += [filename] p = subprocess.Popen(args, stdout=subprocess.PIPE, stderr=subprocess.PIPE) - out, err = p.communicate(timeout=timeout) + communicate_kwargs = {} + if timeout is not None: + communicate_kwargs['timeout'] = timeout + out, err = p.communicate(**communicate_kwargs) if p.returncode != 0: raise Error('ffprobe', out, err) return json.loads(out.decode('utf-8')) diff --git a/ffmpeg/tests/test_ffmpeg.py b/ffmpeg/tests/test_ffmpeg.py index 279a323e..a5a1a2d3 100644 --- a/ffmpeg/tests/test_ffmpeg.py +++ b/ffmpeg/tests/test_ffmpeg.py @@ -8,6 +8,7 @@ import random import re import subprocess +import sys try: import mock # python 2 @@ -706,6 +707,13 @@ def test__probe(): assert data['format']['duration'] == '7.036000' +@pytest.mark.skipif(sys.version_info < (3, 3), reason="requires python3.3 or higher") +def test__probe_timeout(): + with pytest.raises(subprocess.TimeoutExpired) as excinfo: + data = ffmpeg.probe(TEST_INPUT_FILE1, timeout=0) + assert 'timed out after 0 seconds' in str(excinfo.value) + + def test__probe__exception(): with pytest.raises(ffmpeg.Error) as excinfo: ffmpeg.probe(BOGUS_INPUT_FILE) From c12e8890ad9314dd29162c2bb51e876972d60e65 Mon Sep 17 00:00:00 2001 From: Tercio Gaudencio Filho Date: Tue, 15 Sep 2020 22:08:51 -0300 Subject: [PATCH 41/60] Fix issue #195. Redirect stdout/stderr to DEVNULL when quiet is requested. --- ffmpeg/_run.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/ffmpeg/_run.py b/ffmpeg/_run.py index c9cbb7ce..559a0f41 100644 --- a/ffmpeg/_run.py +++ b/ffmpeg/_run.py @@ -279,8 +279,10 @@ def run_async( """ args = compile(stream_spec, cmd, overwrite_output=overwrite_output) stdin_stream = subprocess.PIPE if pipe_stdin else None - stdout_stream = subprocess.PIPE if pipe_stdout or quiet else None - stderr_stream = subprocess.PIPE if pipe_stderr or quiet else None + stdout_stream = subprocess.PIPE if pipe_stdout else None + stderr_stream = subprocess.PIPE if pipe_stderr else None + if quiet: + stdout_stream = stderr_stream = subprocess.DEVNULL return subprocess.Popen( args, stdin=stdin_stream, stdout=stdout_stream, stderr=stderr_stream ) From 96fb3ff0506821f006ce9d110aa0d92356d41909 Mon Sep 17 00:00:00 2001 From: Jacotsu Date: Wed, 7 Oct 2020 18:52:15 +0200 Subject: [PATCH 42/60] Added parameter to set ffmpeg's working directory --- ffmpeg/_run.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ffmpeg/_run.py b/ffmpeg/_run.py index c9cbb7ce..bebf178f 100644 --- a/ffmpeg/_run.py +++ b/ffmpeg/_run.py @@ -199,6 +199,7 @@ def run_async( pipe_stderr=False, quiet=False, overwrite_output=False, + cwd=None ): """Asynchronously invoke ffmpeg for the supplied node graph. @@ -282,7 +283,8 @@ def run_async( stdout_stream = subprocess.PIPE if pipe_stdout or quiet else None stderr_stream = subprocess.PIPE if pipe_stderr or quiet else None return subprocess.Popen( - args, stdin=stdin_stream, stdout=stdout_stream, stderr=stderr_stream + args, stdin=stdin_stream, stdout=stdout_stream, stderr=stderr_stream, + cwd=cwd ) @@ -295,6 +297,7 @@ def run( input=None, quiet=False, overwrite_output=False, + cwd=None ): """Invoke ffmpeg for the supplied node graph. @@ -318,6 +321,7 @@ def run( pipe_stderr=capture_stderr, quiet=quiet, overwrite_output=overwrite_output, + cwd ) out, err = process.communicate(input) retcode = process.poll() From b64f40a8b56d8ccd822f18be2be6adaf1dcf4db8 Mon Sep 17 00:00:00 2001 From: Jacotsu Date: Wed, 7 Oct 2020 18:56:05 +0200 Subject: [PATCH 43/60] Fixed typo in cwd parameter usage --- ffmpeg/_run.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ffmpeg/_run.py b/ffmpeg/_run.py index bebf178f..c9128858 100644 --- a/ffmpeg/_run.py +++ b/ffmpeg/_run.py @@ -321,7 +321,7 @@ def run( pipe_stderr=capture_stderr, quiet=quiet, overwrite_output=overwrite_output, - cwd + cwd=cwd ) out, err = process.communicate(input) retcode = process.poll() From 17995f5ff3ab77f3b6736783c4b180283ec0fc15 Mon Sep 17 00:00:00 2001 From: Jacotsu Date: Fri, 9 Oct 2020 16:53:17 +0200 Subject: [PATCH 44/60] Updated test to check the new cwd parameter --- ffmpeg/tests/test_ffmpeg.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/ffmpeg/tests/test_ffmpeg.py b/ffmpeg/tests/test_ffmpeg.py index 51ee2587..4a8183ca 100644 --- a/ffmpeg/tests/test_ffmpeg.py +++ b/ffmpeg/tests/test_ffmpeg.py @@ -441,12 +441,14 @@ def test__compile(): @pytest.mark.parametrize('pipe_stdin', [True, False]) @pytest.mark.parametrize('pipe_stdout', [True, False]) @pytest.mark.parametrize('pipe_stderr', [True, False]) -def test__run_async(mocker, pipe_stdin, pipe_stdout, pipe_stderr): +@pytest.mark.parametrize('cwd', [None, '/tmp']) +def test__run_async(mocker, pipe_stdin, pipe_stdout, pipe_stderr, cwd): process__mock = mock.Mock() popen__mock = mocker.patch.object(subprocess, 'Popen', return_value=process__mock) stream = _get_simple_example() process = ffmpeg.run_async( - stream, pipe_stdin=pipe_stdin, pipe_stdout=pipe_stdout, pipe_stderr=pipe_stderr + stream, pipe_stdin=pipe_stdin, pipe_stdout=pipe_stdout, + pipe_stderr=pipe_stderr, cwd=cwd ) assert process is process__mock @@ -456,7 +458,8 @@ def test__run_async(mocker, pipe_stdin, pipe_stdout, pipe_stderr): (args,), kwargs = popen__mock.call_args assert args == ffmpeg.compile(stream) assert kwargs == dict( - stdin=expected_stdin, stdout=expected_stdout, stderr=expected_stderr + stdin=expected_stdin, stdout=expected_stdout, stderr=expected_stderr, + cwd=cwd ) From 0ec6e69d885f9f75a3220f94b79273f288005049 Mon Sep 17 00:00:00 2001 From: Tercio Gaudencio Filho Date: Fri, 30 Oct 2020 17:29:44 -0300 Subject: [PATCH 45/60] Redirect stderr to stdout and stdout to DEVNULL when quiet is requested. --- ffmpeg/_run.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/ffmpeg/_run.py b/ffmpeg/_run.py index 559a0f41..c3d5550b 100644 --- a/ffmpeg/_run.py +++ b/ffmpeg/_run.py @@ -282,7 +282,8 @@ def run_async( stdout_stream = subprocess.PIPE if pipe_stdout else None stderr_stream = subprocess.PIPE if pipe_stderr else None if quiet: - stdout_stream = stderr_stream = subprocess.DEVNULL + stderr_stream = subprocess.STDOUT + stdout_stream = subprocess.DEVNULL return subprocess.Popen( args, stdin=stdin_stream, stdout=stdout_stream, stderr=stderr_stream ) From 15ffcc0c7275443e2c4f13e3e4a9ebd6dd5503dc Mon Sep 17 00:00:00 2001 From: Raul Date: Fri, 30 Oct 2020 18:41:59 -0300 Subject: [PATCH 46/60] adding http server example --- examples/README.md | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/examples/README.md b/examples/README.md index 190b8979..68fd8c03 100644 --- a/examples/README.md +++ b/examples/README.md @@ -214,6 +214,32 @@ process2.wait() ) ``` +## Stream from a local video to HTTP server + +```python +video_format = "flv" +server_url = "http://localhost:8080" + +process = ( + ffmpeg + .input("input.mp4") + .output( + server_url, + codec = "copy", # use same codecs of the original video + listen=1, # enables HTTP server + f=video_format) + .global_args("-re") # argument to act as a live stream + .run() +) + +``` + +to receive the video you can use ffplay in the terminal: + +``` +$ ffplay -f flv http://localhost:8080 +``` + ## Stream from RTSP server to TCP socket ```python From 08e50ac02c3e2188135ddcb27f98749cb2772a09 Mon Sep 17 00:00:00 2001 From: Iulian Onofrei <6d0847b9@opayq.com> Date: Sun, 8 Nov 2020 12:51:35 +0200 Subject: [PATCH 47/60] Add command line arguments FAQ --- README.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/README.md b/README.md index 5989ae66..8cfe89ae 100644 --- a/README.md +++ b/README.md @@ -204,6 +204,10 @@ This dilemma is intrinsic to ffmpeg, and ffmpeg-python tries to stay out of the As usual, take a look at the [examples](https://github.com/kkroening/ffmpeg-python/tree/master/examples#audiovideo-pipeline) (*Audio/video pipeline* in particular). +**How can I find out the used command line arguments?** + +You can run `stream.get_args()` before `stream.run()` to retrieve the command line arguments that will be passed to `ffmpeg`. You can also run `stream.compile()` that also includes the `ffmpeg` executable as the first argument. + **How do I do XYZ?** Take a look at each of the links in the [Additional Resources](https://kkroening.github.io/ffmpeg-python/) section at the end of this README. If you look everywhere and can't find what you're looking for and have a question that may be relevant to other users, you may open an issue asking how to do it, while providing a thorough explanation of what you're trying to do and what you've tried so far. From 5b6b58308fc81e8671e433f340f8648b081a2b5b Mon Sep 17 00:00:00 2001 From: raulpy271 <56479285+raulpy271@users.noreply.github.com> Date: Wed, 2 Dec 2020 14:19:53 -0300 Subject: [PATCH 48/60] Replacing `server_url` content, `"http://localhost:8080"` to `"http://127.0.0.1:8080"`. --- examples/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/README.md b/examples/README.md index 68fd8c03..dabc7398 100644 --- a/examples/README.md +++ b/examples/README.md @@ -218,7 +218,7 @@ process2.wait() ```python video_format = "flv" -server_url = "http://localhost:8080" +server_url = "http://127.0.0.1:8080" process = ( ffmpeg From 861b453b43675620c7a4ab30723a3c67ec6c8830 Mon Sep 17 00:00:00 2001 From: 372046933 <372046933@users.noreply.github.com> Date: Thu, 15 Oct 2020 17:18:00 +0800 Subject: [PATCH 49/60] Fix typo in _run.py docstring --- ffmpeg/_run.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ffmpeg/_run.py b/ffmpeg/_run.py index c9cbb7ce..cc050834 100644 --- a/ffmpeg/_run.py +++ b/ffmpeg/_run.py @@ -233,7 +233,7 @@ def run_async( process = ( ffmpeg .input(in_filename) - .output('pipe':, format='rawvideo', pix_fmt='rgb24') + .output('pipe:', format='rawvideo', pix_fmt='rgb24') .run_async(pipe_stdout=True, pipe_stderr=True) ) out, err = process.communicate() From c764166f442a4b726c05a4d340f3e53cb11a497a Mon Sep 17 00:00:00 2001 From: Davide Depau Date: Tue, 16 Feb 2021 22:54:27 +0100 Subject: [PATCH 50/60] Revert "Implemented cwd parameter" --- ffmpeg/_run.py | 6 +----- ffmpeg/tests/test_ffmpeg.py | 9 +++------ 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/ffmpeg/_run.py b/ffmpeg/_run.py index eadb90a4..43d6cf7d 100644 --- a/ffmpeg/_run.py +++ b/ffmpeg/_run.py @@ -199,7 +199,6 @@ def run_async( pipe_stderr=False, quiet=False, overwrite_output=False, - cwd=None ): """Asynchronously invoke ffmpeg for the supplied node graph. @@ -286,8 +285,7 @@ def run_async( stderr_stream = subprocess.STDOUT stdout_stream = subprocess.DEVNULL return subprocess.Popen( - args, stdin=stdin_stream, stdout=stdout_stream, stderr=stderr_stream, - cwd=cwd + args, stdin=stdin_stream, stdout=stdout_stream, stderr=stderr_stream ) @@ -300,7 +298,6 @@ def run( input=None, quiet=False, overwrite_output=False, - cwd=None ): """Invoke ffmpeg for the supplied node graph. @@ -324,7 +321,6 @@ def run( pipe_stderr=capture_stderr, quiet=quiet, overwrite_output=overwrite_output, - cwd=cwd ) out, err = process.communicate(input) retcode = process.poll() diff --git a/ffmpeg/tests/test_ffmpeg.py b/ffmpeg/tests/test_ffmpeg.py index 4a8183ca..51ee2587 100644 --- a/ffmpeg/tests/test_ffmpeg.py +++ b/ffmpeg/tests/test_ffmpeg.py @@ -441,14 +441,12 @@ def test__compile(): @pytest.mark.parametrize('pipe_stdin', [True, False]) @pytest.mark.parametrize('pipe_stdout', [True, False]) @pytest.mark.parametrize('pipe_stderr', [True, False]) -@pytest.mark.parametrize('cwd', [None, '/tmp']) -def test__run_async(mocker, pipe_stdin, pipe_stdout, pipe_stderr, cwd): +def test__run_async(mocker, pipe_stdin, pipe_stdout, pipe_stderr): process__mock = mock.Mock() popen__mock = mocker.patch.object(subprocess, 'Popen', return_value=process__mock) stream = _get_simple_example() process = ffmpeg.run_async( - stream, pipe_stdin=pipe_stdin, pipe_stdout=pipe_stdout, - pipe_stderr=pipe_stderr, cwd=cwd + stream, pipe_stdin=pipe_stdin, pipe_stdout=pipe_stdout, pipe_stderr=pipe_stderr ) assert process is process__mock @@ -458,8 +456,7 @@ def test__run_async(mocker, pipe_stdin, pipe_stdout, pipe_stderr, cwd): (args,), kwargs = popen__mock.call_args assert args == ffmpeg.compile(stream) assert kwargs == dict( - stdin=expected_stdin, stdout=expected_stdout, stderr=expected_stderr, - cwd=cwd + stdin=expected_stdin, stdout=expected_stdout, stderr=expected_stderr ) From 807aaccb14ac495608b51425b03e7e46227180e3 Mon Sep 17 00:00:00 2001 From: Davide Depau Date: Tue, 16 Feb 2021 23:26:53 +0100 Subject: [PATCH 51/60] Revert "Revert "Implemented cwd parameter"" --- ffmpeg/_run.py | 6 +++++- ffmpeg/tests/test_ffmpeg.py | 9 ++++++--- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/ffmpeg/_run.py b/ffmpeg/_run.py index 43d6cf7d..eadb90a4 100644 --- a/ffmpeg/_run.py +++ b/ffmpeg/_run.py @@ -199,6 +199,7 @@ def run_async( pipe_stderr=False, quiet=False, overwrite_output=False, + cwd=None ): """Asynchronously invoke ffmpeg for the supplied node graph. @@ -285,7 +286,8 @@ def run_async( stderr_stream = subprocess.STDOUT stdout_stream = subprocess.DEVNULL return subprocess.Popen( - args, stdin=stdin_stream, stdout=stdout_stream, stderr=stderr_stream + args, stdin=stdin_stream, stdout=stdout_stream, stderr=stderr_stream, + cwd=cwd ) @@ -298,6 +300,7 @@ def run( input=None, quiet=False, overwrite_output=False, + cwd=None ): """Invoke ffmpeg for the supplied node graph. @@ -321,6 +324,7 @@ def run( pipe_stderr=capture_stderr, quiet=quiet, overwrite_output=overwrite_output, + cwd=cwd ) out, err = process.communicate(input) retcode = process.poll() diff --git a/ffmpeg/tests/test_ffmpeg.py b/ffmpeg/tests/test_ffmpeg.py index 51ee2587..4a8183ca 100644 --- a/ffmpeg/tests/test_ffmpeg.py +++ b/ffmpeg/tests/test_ffmpeg.py @@ -441,12 +441,14 @@ def test__compile(): @pytest.mark.parametrize('pipe_stdin', [True, False]) @pytest.mark.parametrize('pipe_stdout', [True, False]) @pytest.mark.parametrize('pipe_stderr', [True, False]) -def test__run_async(mocker, pipe_stdin, pipe_stdout, pipe_stderr): +@pytest.mark.parametrize('cwd', [None, '/tmp']) +def test__run_async(mocker, pipe_stdin, pipe_stdout, pipe_stderr, cwd): process__mock = mock.Mock() popen__mock = mocker.patch.object(subprocess, 'Popen', return_value=process__mock) stream = _get_simple_example() process = ffmpeg.run_async( - stream, pipe_stdin=pipe_stdin, pipe_stdout=pipe_stdout, pipe_stderr=pipe_stderr + stream, pipe_stdin=pipe_stdin, pipe_stdout=pipe_stdout, + pipe_stderr=pipe_stderr, cwd=cwd ) assert process is process__mock @@ -456,7 +458,8 @@ def test__run_async(mocker, pipe_stdin, pipe_stdout, pipe_stderr): (args,), kwargs = popen__mock.call_args assert args == ffmpeg.compile(stream) assert kwargs == dict( - stdin=expected_stdin, stdout=expected_stdout, stderr=expected_stderr + stdin=expected_stdin, stdout=expected_stdout, stderr=expected_stderr, + cwd=cwd ) From fd1da13f110ad4d20ab768bfafaeef36dce2862f Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Sun, 6 Mar 2022 13:24:40 -0800 Subject: [PATCH 52/60] Re-apply Black formatting, and wrap docstrings at ~88 columns. (#639) --- ffmpeg/_ffmpeg.py | 6 +- ffmpeg/_filters.py | 355 ++++++++++++++++++++---------------- ffmpeg/_run.py | 25 ++- ffmpeg/_utils.py | 4 +- ffmpeg/_view.py | 4 +- ffmpeg/dag.py | 47 +++-- ffmpeg/nodes.py | 11 +- ffmpeg/tests/test_ffmpeg.py | 96 ++++++---- pyproject.toml | 15 ++ 9 files changed, 340 insertions(+), 223 deletions(-) create mode 100644 pyproject.toml diff --git a/ffmpeg/_ffmpeg.py b/ffmpeg/_ffmpeg.py index 31e2b906..007624bb 100644 --- a/ffmpeg/_ffmpeg.py +++ b/ffmpeg/_ffmpeg.py @@ -34,8 +34,7 @@ def input(filename, **kwargs): @output_operator() def global_args(stream, *args): - """Add extra global command-line argument(s), e.g. ``-progress``. - """ + """Add extra global command-line argument(s), e.g. ``-progress``.""" return GlobalNode(stream, global_args.__name__, args).stream() @@ -50,8 +49,7 @@ def overwrite_output(stream): @output_operator() def merge_outputs(*streams): - """Include all given outputs in one ffmpeg command line - """ + """Include all given outputs in one ffmpeg command line""" return MergeOutputsNode(streams, merge_outputs.__name__).stream() diff --git a/ffmpeg/_filters.py b/ffmpeg/_filters.py index 2691220a..cb1438e2 100644 --- a/ffmpeg/_filters.py +++ b/ffmpeg/_filters.py @@ -8,9 +8,11 @@ def filter_multi_output(stream_spec, filter_name, *args, **kwargs): """Apply custom filter with one or more outputs. - This is the same as ``filter`` except that the filter can produce more than one output. + This is the same as ``filter`` except that the filter can produce more than one + output. - To reference an output stream, use either the ``.stream`` operator or bracket shorthand: + To reference an output stream, use either the ``.stream`` operator or bracket + shorthand: Example: @@ -30,9 +32,10 @@ def filter_multi_output(stream_spec, filter_name, *args, **kwargs): def filter(stream_spec, filter_name, *args, **kwargs): """Apply custom filter. - ``filter_`` is normally used by higher-level filter functions such as ``hflip``, but if a filter implementation - is missing from ``ffmpeg-python``, you can call ``filter_`` directly to have ``ffmpeg-python`` pass the filter name - and arguments to ffmpeg verbatim. + ``filter_`` is normally used by higher-level filter functions such as ``hflip``, + but if a filter implementation is missing from ``ffmpeg-python``, you can call + ``filter_`` directly to have ``ffmpeg-python`` pass the filter name and arguments + to ffmpeg verbatim. Args: stream_spec: a Stream, list of Streams, or label-to-Stream dictionary mapping @@ -40,7 +43,8 @@ def filter(stream_spec, filter_name, *args, **kwargs): *args: list of args to pass to ffmpeg verbatim **kwargs: list of keyword-args to pass to ffmpeg verbatim - The function name is suffixed with ``_`` in order avoid confusion with the standard python ``filter`` function. + The function name is suffixed with ``_`` in order avoid confusion with the standard + python ``filter`` function. Example: @@ -72,7 +76,8 @@ def setpts(stream, expr): """Change the PTS (presentation timestamp) of the input frames. Args: - expr: The expression which is evaluated for each frame to construct its timestamp. + expr: The expression which is evaluated for each frame to construct its + timestamp. Official documentation: `setpts, asetpts `__ """ @@ -84,14 +89,15 @@ def trim(stream, **kwargs): """Trim the input so that the output contains one continuous subpart of the input. Args: - start: Specify the time of the start of the kept section, i.e. the frame with the timestamp start will be the - first frame in the output. - end: Specify the time of the first frame that will be dropped, i.e. the frame immediately preceding the one - with the timestamp end will be the last frame in the output. - start_pts: This is the same as start, except this option sets the start timestamp in timebase units instead of - seconds. - end_pts: This is the same as end, except this option sets the end timestamp in timebase units instead of - seconds. + start: Specify the time of the start of the kept section, i.e. the frame with + the timestamp start will be the first frame in the output. + end: Specify the time of the first frame that will be dropped, i.e. the frame + immediately preceding the one with the timestamp end will be the last frame + in the output. + start_pts: This is the same as start, except this option sets the start + timestamp in timebase units instead of seconds. + end_pts: This is the same as end, except this option sets the end timestamp in + timebase units instead of seconds. duration: The maximum duration of the output in seconds. start_frame: The number of the first frame that should be passed to the output. end_frame: The number of the first frame that should be dropped. @@ -106,14 +112,16 @@ def overlay(main_parent_node, overlay_parent_node, eof_action='repeat', **kwargs """Overlay one video on top of another. Args: - x: Set the expression for the x coordinates of the overlaid video on the main video. Default value is 0. In - case the expression is invalid, it is set to a huge value (meaning that the overlay will not be displayed - within the output visible area). - y: Set the expression for the y coordinates of the overlaid video on the main video. Default value is 0. In - case the expression is invalid, it is set to a huge value (meaning that the overlay will not be displayed - within the output visible area). - eof_action: The action to take when EOF is encountered on the secondary input; it accepts one of the following - values: + x: Set the expression for the x coordinates of the overlaid video on the main + video. Default value is 0. In case the expression is invalid, it is set to + a huge value (meaning that the overlay will not be displayed within the + output visible area). + y: Set the expression for the y coordinates of the overlaid video on the main + video. Default value is 0. In case the expression is invalid, it is set to + a huge value (meaning that the overlay will not be displayed within the + output visible area). + eof_action: The action to take when EOF is encountered on the secondary input; + it accepts one of the following values: * ``repeat``: Repeat the last frame (the default). * ``endall``: End both streams. @@ -122,12 +130,13 @@ def overlay(main_parent_node, overlay_parent_node, eof_action='repeat', **kwargs eval: Set when the expressions for x, and y are evaluated. It accepts the following values: - * ``init``: only evaluate expressions once during the filter initialization or when a command is - processed + * ``init``: only evaluate expressions once during the filter initialization + or when a command is processed * ``frame``: evaluate expressions for each incoming frame Default value is ``frame``. - shortest: If set to 1, force the output to terminate when the shortest input terminates. Default value is 0. + shortest: If set to 1, force the output to terminate when the shortest input + terminates. Default value is 0. format: Set the format for the output video. It accepts the following values: @@ -138,10 +147,12 @@ def overlay(main_parent_node, overlay_parent_node, eof_action='repeat', **kwargs * ``gbrp``: force planar RGB output Default value is ``yuv420``. - rgb (deprecated): If set to 1, force the filter to accept inputs in the RGB color space. Default value is 0. - This option is deprecated, use format instead. - repeatlast: If set to 1, force the filter to draw the last overlay frame over the main input until the end of - the stream. A value of 0 disables this behavior. Default value is 1. + rgb (deprecated): If set to 1, force the filter to accept inputs in the RGB + color space. Default value is 0. This option is deprecated, use format + instead. + repeatlast: If set to 1, force the filter to draw the last overlay frame over + the main input until the end of the stream. A value of 0 disables this + behavior. Default value is 1. Official documentation: `overlay `__ """ @@ -196,14 +207,20 @@ def drawbox(stream, x, y, width, height, color, thickness=None, **kwargs): """Draw a colored box on the input image. Args: - x: The expression which specifies the top left corner x coordinate of the box. It defaults to 0. - y: The expression which specifies the top left corner y coordinate of the box. It defaults to 0. - width: Specify the width of the box; if 0 interpreted as the input width. It defaults to 0. - heigth: Specify the height of the box; if 0 interpreted as the input height. It defaults to 0. - color: Specify the color of the box to write. For the general syntax of this option, check the "Color" section - in the ffmpeg-utils manual. If the special value invert is used, the box edge color is the same as the - video with inverted luma. - thickness: The expression which sets the thickness of the box edge. Default value is 3. + x: The expression which specifies the top left corner x coordinate of the box. + It defaults to 0. + y: The expression which specifies the top left corner y coordinate of the box. + It defaults to 0. + width: Specify the width of the box; if 0 interpreted as the input width. It + defaults to 0. + heigth: Specify the height of the box; if 0 interpreted as the input height. It + defaults to 0. + color: Specify the color of the box to write. For the general syntax of this + option, check the "Color" section in the ffmpeg-utils manual. If the + special value invert is used, the box edge color is the same as the video + with inverted luma. + thickness: The expression which sets the thickness of the box edge. Default + value is 3. w: Alias for ``width``. h: Alias for ``height``. c: Alias for ``color``. @@ -220,46 +237,57 @@ def drawbox(stream, x, y, width, height, color, thickness=None, **kwargs): @filter_operator() def drawtext(stream, text=None, x=0, y=0, escape_text=True, **kwargs): - """Draw a text string or text from a specified file on top of a video, using the libfreetype library. + """Draw a text string or text from a specified file on top of a video, using the + libfreetype library. - To enable compilation of this filter, you need to configure FFmpeg with ``--enable-libfreetype``. To enable default - font fallback and the font option you need to configure FFmpeg with ``--enable-libfontconfig``. To enable the + To enable compilation of this filter, you need to configure FFmpeg with + ``--enable-libfreetype``. To enable default font fallback and the font option you + need to configure FFmpeg with ``--enable-libfontconfig``. To enable the text_shaping option, you need to configure FFmpeg with ``--enable-libfribidi``. Args: - box: Used to draw a box around text using the background color. The value must be either 1 (enable) or 0 - (disable). The default value of box is 0. - boxborderw: Set the width of the border to be drawn around the box using boxcolor. The default value of - boxborderw is 0. - boxcolor: The color to be used for drawing box around text. For the syntax of this option, check the "Color" - section in the ffmpeg-utils manual. The default value of boxcolor is "white". - line_spacing: Set the line spacing in pixels of the border to be drawn around the box using box. The default - value of line_spacing is 0. - borderw: Set the width of the border to be drawn around the text using bordercolor. The default value of - borderw is 0. - bordercolor: Set the color to be used for drawing border around text. For the syntax of this option, check the - "Color" section in the ffmpeg-utils manual. The default value of bordercolor is "black". - expansion: Select how the text is expanded. Can be either none, strftime (deprecated) or normal (default). See - the Text expansion section below for details. - basetime: Set a start time for the count. Value is in microseconds. Only applied in the deprecated strftime - expansion mode. To emulate in normal expansion mode use the pts function, supplying the start time (in - seconds) as the second argument. + box: Used to draw a box around text using the background color. The value must + be either 1 (enable) or 0 (disable). The default value of box is 0. + boxborderw: Set the width of the border to be drawn around the box using + boxcolor. The default value of boxborderw is 0. + boxcolor: The color to be used for drawing box around text. For the syntax of + this option, check the "Color" section in the ffmpeg-utils manual. The + default value of boxcolor is "white". + line_spacing: Set the line spacing in pixels of the border to be drawn around + the box using box. The default value of line_spacing is 0. + borderw: Set the width of the border to be drawn around the text using + bordercolor. The default value of borderw is 0. + bordercolor: Set the color to be used for drawing border around text. For the + syntax of this option, check the "Color" section in the ffmpeg-utils + manual. The default value of bordercolor is "black". + expansion: Select how the text is expanded. Can be either none, strftime + (deprecated) or normal (default). See the Text expansion section below for + details. + basetime: Set a start time for the count. Value is in microseconds. Only + applied in the deprecated strftime expansion mode. To emulate in normal + expansion mode use the pts function, supplying the start time (in seconds) + as the second argument. fix_bounds: If true, check and fix text coords to avoid clipping. - fontcolor: The color to be used for drawing fonts. For the syntax of this option, check the "Color" section in - the ffmpeg-utils manual. The default value of fontcolor is "black". - fontcolor_expr: String which is expanded the same way as text to obtain dynamic fontcolor value. By default - this option has empty value and is not processed. When this option is set, it overrides fontcolor option. + fontcolor: The color to be used for drawing fonts. For the syntax of this + option, check the "Color" section in the ffmpeg-utils manual. The default + value of fontcolor is "black". + fontcolor_expr: String which is expanded the same way as text to obtain dynamic + fontcolor value. By default this option has empty value and is not + processed. When this option is set, it overrides fontcolor option. font: The font family to be used for drawing text. By default Sans. - fontfile: The font file to be used for drawing text. The path must be included. This parameter is mandatory if - the fontconfig support is disabled. - alpha: Draw the text applying alpha blending. The value can be a number between 0.0 and 1.0. The expression - accepts the same variables x, y as well. The default value is 1. Please see fontcolor_expr. - fontsize: The font size to be used for drawing text. The default value of fontsize is 16. - text_shaping: If set to 1, attempt to shape the text (for example, reverse the order of right-to-left text and - join Arabic characters) before drawing it. Otherwise, just draw the text exactly as given. By default 1 (if - supported). - ft_load_flags: The flags to be used for loading the fonts. The flags map the corresponding flags supported by - libfreetype, and are a combination of the following values: + fontfile: The font file to be used for drawing text. The path must be included. + This parameter is mandatory if the fontconfig support is disabled. + alpha: Draw the text applying alpha blending. The value can be a number between + 0.0 and 1.0. The expression accepts the same variables x, y as well. The + default value is 1. Please see fontcolor_expr. + fontsize: The font size to be used for drawing text. The default value of + fontsize is 16. + text_shaping: If set to 1, attempt to shape the text (for example, reverse the + order of right-to-left text and join Arabic characters) before drawing it. + Otherwise, just draw the text exactly as given. By default 1 (if supported). + ft_load_flags: The flags to be used for loading the fonts. The flags map the + corresponding flags supported by libfreetype, and are a combination of the + following values: * ``default`` * ``no_scale`` @@ -277,75 +305,89 @@ def drawtext(stream, text=None, x=0, y=0, escape_text=True, **kwargs): * ``linear_design`` * ``no_autohint`` - Default value is "default". For more information consult the documentation for the FT_LOAD_* libfreetype - flags. - shadowcolor: The color to be used for drawing a shadow behind the drawn text. For the syntax of this option, - check the "Color" section in the ffmpeg-utils manual. The default value of shadowcolor is "black". - shadowx: The x offset for the text shadow position with respect to the position of the text. It can be either - positive or negative values. The default value is "0". - shadowy: The y offset for the text shadow position with respect to the position of the text. It can be either - positive or negative values. The default value is "0". - start_number: The starting frame number for the n/frame_num variable. The default value is "0". - tabsize: The size in number of spaces to use for rendering the tab. Default value is 4. - timecode: Set the initial timecode representation in "hh:mm:ss[:;.]ff" format. It can be used with or without - text parameter. timecode_rate option must be specified. + Default value is "default". For more information consult the documentation + for the FT_LOAD_* libfreetype flags. + shadowcolor: The color to be used for drawing a shadow behind the drawn text. + For the syntax of this option, check the "Color" section in the ffmpeg-utils + manual. The default value of shadowcolor is "black". + shadowx: The x offset for the text shadow position with respect to the position + of the text. It can be either positive or negative values. The default value + is "0". + shadowy: The y offset for the text shadow position with respect to the position + of the text. It can be either positive or negative values. The default value + is "0". + start_number: The starting frame number for the n/frame_num variable. The + default value is "0". + tabsize: The size in number of spaces to use for rendering the tab. Default + value is 4. + timecode: Set the initial timecode representation in "hh:mm:ss[:;.]ff" format. + It can be used with or without text parameter. timecode_rate option must be + specified. rate: Set the timecode frame rate (timecode only). timecode_rate: Alias for ``rate``. r: Alias for ``rate``. - tc24hmax: If set to 1, the output of the timecode option will wrap around at 24 hours. Default is 0 (disabled). - text: The text string to be drawn. The text must be a sequence of UTF-8 encoded characters. This parameter is - mandatory if no file is specified with the parameter textfile. - textfile: A text file containing text to be drawn. The text must be a sequence of UTF-8 encoded characters. - This parameter is mandatory if no text string is specified with the parameter text. If both text and - textfile are specified, an error is thrown. - reload: If set to 1, the textfile will be reloaded before each frame. Be sure to update it atomically, or it - may be read partially, or even fail. - x: The expression which specifies the offset where text will be drawn within the video frame. It is relative to - the left border of the output image. The default value is "0". - y: The expression which specifies the offset where text will be drawn within the video frame. It is relative to - the top border of the output image. The default value is "0". See below for the list of accepted constants - and functions. + tc24hmax: If set to 1, the output of the timecode option will wrap around at 24 + hours. Default is 0 (disabled). + text: The text string to be drawn. The text must be a sequence of UTF-8 encoded + characters. This parameter is mandatory if no file is specified with the + parameter textfile. + textfile: A text file containing text to be drawn. The text must be a sequence + of UTF-8 encoded characters. This parameter is mandatory if no text string + is specified with the parameter text. If both text and textfile are + specified, an error is thrown. + reload: If set to 1, the textfile will be reloaded before each frame. Be sure + to update it atomically, or it may be read partially, or even fail. + x: The expression which specifies the offset where text will be drawn within + the video frame. It is relative to the left border of the output image. The + default value is "0". + y: The expression which specifies the offset where text will be drawn within + the video frame. It is relative to the top border of the output image. The + default value is "0". See below for the list of accepted constants and + functions. Expression constants: - The parameters for x and y are expressions containing the following constants and functions: - - dar: input display aspect ratio, it is the same as ``(w / h) * sar`` - - hsub: horizontal chroma subsample values. For example for the pixel format "yuv422p" hsub is 2 and vsub - is 1. - - vsub: vertical chroma subsample values. For example for the pixel format "yuv422p" hsub is 2 and vsub - is 1. - - line_h: the height of each text line - - lh: Alias for ``line_h``. - - main_h: the input height - - h: Alias for ``main_h``. - - H: Alias for ``main_h``. - - main_w: the input width - - w: Alias for ``main_w``. - - W: Alias for ``main_w``. - - ascent: the maximum distance from the baseline to the highest/upper grid coordinate used to place a glyph - outline point, for all the rendered glyphs. It is a positive value, due to the grid's orientation with the Y - axis upwards. - - max_glyph_a: Alias for ``ascent``. - - descent: the maximum distance from the baseline to the lowest grid coordinate used to place a glyph outline - point, for all the rendered glyphs. This is a negative value, due to the grid's orientation, with the Y axis - upwards. - - max_glyph_d: Alias for ``descent``. - - max_glyph_h: maximum glyph height, that is the maximum height for all the glyphs contained in the rendered - text, it is equivalent to ascent - descent. - - max_glyph_w: maximum glyph width, that is the maximum width for all the glyphs contained in the rendered - text. - - n: the number of input frame, starting from 0 - - rand(min, max): return a random number included between min and max - - sar: The input sample aspect ratio. - - t: timestamp expressed in seconds, NAN if the input timestamp is unknown - - text_h: the height of the rendered text - - th: Alias for ``text_h``. - - text_w: the width of the rendered text - - tw: Alias for ``text_w``. - - x: the x offset coordinates where the text is drawn. - - y: the y offset coordinates where the text is drawn. - - These parameters allow the x and y expressions to refer each other, so you can for example specify - ``y=x/dar``. + The parameters for x and y are expressions containing the following constants + and functions: + - dar: input display aspect ratio, it is the same as ``(w / h) * sar`` + - hsub: horizontal chroma subsample values. For example for the pixel format + "yuv422p" hsub is 2 and vsub is 1. + - vsub: vertical chroma subsample values. For example for the pixel format + "yuv422p" hsub is 2 and vsub is 1. + - line_h: the height of each text line + - lh: Alias for ``line_h``. + - main_h: the input height + - h: Alias for ``main_h``. + - H: Alias for ``main_h``. + - main_w: the input width + - w: Alias for ``main_w``. + - W: Alias for ``main_w``. + - ascent: the maximum distance from the baseline to the highest/upper grid + coordinate used to place a glyph outline point, for all the rendered glyphs. + It is a positive value, due to the grid's orientation with the Y axis + upwards. + - max_glyph_a: Alias for ``ascent``. + - descent: the maximum distance from the baseline to the lowest grid + coordinate used to place a glyph outline + point, for all the rendered glyphs. This is a negative value, due to the + grid's orientation, with the Y axis upwards. + - max_glyph_d: Alias for ``descent``. + - max_glyph_h: maximum glyph height, that is the maximum height for all the + glyphs contained in the rendered text, it is equivalent to ascent - descent. + - max_glyph_w: maximum glyph width, that is the maximum width for all the + glyphs contained in the rendered text. + - n: the number of input frame, starting from 0 + - rand(min, max): return a random number included between min and max + - sar: The input sample aspect ratio. + - t: timestamp expressed in seconds, NAN if the input timestamp is unknown + - text_h: the height of the rendered text + - th: Alias for ``text_h``. + - text_w: the width of the rendered text + - tw: Alias for ``text_w``. + - x: the x offset coordinates where the text is drawn. + - y: the y offset coordinates where the text is drawn. + + These parameters allow the x and y expressions to refer each other, so you can + for example specify ``y=x/dar``. Official documentation: `drawtext `__ """ @@ -364,25 +406,28 @@ def drawtext(stream, text=None, x=0, y=0, escape_text=True, **kwargs): def concat(*streams, **kwargs): """Concatenate audio and video streams, joining them together one after the other. - The filter works on segments of synchronized video and audio streams. All segments must have the same number of - streams of each type, and that will also be the number of streams at output. + The filter works on segments of synchronized video and audio streams. All segments + must have the same number of streams of each type, and that will also be the number + of streams at output. Args: unsafe: Activate unsafe mode: do not fail if segments have a different format. - Related streams do not always have exactly the same duration, for various reasons including codec frame size or - sloppy authoring. For that reason, related synchronized streams (e.g. a video and its audio track) should be - concatenated at once. The concat filter will use the duration of the longest stream in each segment (except the - last one), and if necessary pad shorter audio streams with silence. + Related streams do not always have exactly the same duration, for various reasons + including codec frame size or sloppy authoring. For that reason, related + synchronized streams (e.g. a video and its audio track) should be concatenated at + once. The concat filter will use the duration of the longest stream in each segment + (except the last one), and if necessary pad shorter audio streams with silence. For this filter to work correctly, all segments must start at timestamp 0. - All corresponding streams must have the same parameters in all segments; the filtering system will automatically - select a common pixel format for video streams, and a common sample format, sample rate and channel layout for - audio streams, but other settings, such as resolution, must be converted explicitly by the user. + All corresponding streams must have the same parameters in all segments; the + filtering system will automatically select a common pixel format for video streams, + and a common sample format, sample rate and channel layout for audio streams, but + other settings, such as resolution, must be converted explicitly by the user. - Different frame rates are acceptable but will result in variable frame rate at output; be sure to configure the - output file to handle it. + Different frame rates are acceptable but will result in variable frame rate at + output; be sure to configure the output file to handle it. Official documentation: `concat `__ """ @@ -407,8 +452,8 @@ def zoompan(stream, **kwargs): zoom: Set the zoom expression. Default is 1. x: Set the x expression. Default is 0. y: Set the y expression. Default is 0. - d: Set the duration expression in number of frames. This sets for how many number of frames effect will last - for single input image. + d: Set the duration expression in number of frames. This sets for how many + number of frames effect will last for single input image. s: Set the output image size, default is ``hd720``. fps: Set the output frame rate, default is 25. z: Alias for ``zoom``. @@ -423,10 +468,14 @@ def hue(stream, **kwargs): """Modify the hue and/or the saturation of the input. Args: - h: Specify the hue angle as a number of degrees. It accepts an expression, and defaults to "0". - s: Specify the saturation in the [-10,10] range. It accepts an expression and defaults to "1". - H: Specify the hue angle as a number of radians. It accepts an expression, and defaults to "0". - b: Specify the brightness in the [-10,10] range. It accepts an expression and defaults to "0". + h: Specify the hue angle as a number of degrees. It accepts an expression, and + defaults to "0". + s: Specify the saturation in the [-10,10] range. It accepts an expression and + defaults to "1". + H: Specify the hue angle as a number of radians. It accepts an expression, and + defaults to "0". + b: Specify the brightness in the [-10,10] range. It accepts an expression and + defaults to "0". Official documentation: `hue `__ """ diff --git a/ffmpeg/_run.py b/ffmpeg/_run.py index eadb90a4..5f25a347 100644 --- a/ffmpeg/_run.py +++ b/ffmpeg/_run.py @@ -88,8 +88,8 @@ def _allocate_filter_stream_names(filter_nodes, outgoing_edge_maps, stream_name_ if len(downstreams) > 1: # TODO: automatically insert `splits` ahead of time via graph transformation. raise ValueError( - 'Encountered {} with multiple outgoing edges with same upstream label {!r}; a ' - '`split` filter is probably required'.format( + 'Encountered {} with multiple outgoing edges with same upstream ' + 'label {!r}; a `split` filter is probably required'.format( upstream_node, upstream_label ) ) @@ -199,7 +199,7 @@ def run_async( pipe_stderr=False, quiet=False, overwrite_output=False, - cwd=None + cwd=None, ): """Asynchronously invoke ffmpeg for the supplied node graph. @@ -286,8 +286,11 @@ def run_async( stderr_stream = subprocess.STDOUT stdout_stream = subprocess.DEVNULL return subprocess.Popen( - args, stdin=stdin_stream, stdout=stdout_stream, stderr=stderr_stream, - cwd=cwd + args, + stdin=stdin_stream, + stdout=stdout_stream, + stderr=stderr_stream, + cwd=cwd, ) @@ -300,7 +303,7 @@ def run( input=None, quiet=False, overwrite_output=False, - cwd=None + cwd=None, ): """Invoke ffmpeg for the supplied node graph. @@ -324,7 +327,7 @@ def run( pipe_stderr=capture_stderr, quiet=quiet, overwrite_output=overwrite_output, - cwd=cwd + cwd=cwd, ) out, err = process.communicate(input) retcode = process.poll() @@ -333,4 +336,10 @@ def run( return out, err -__all__ = ['compile', 'Error', 'get_args', 'run', 'run_async'] +__all__ = [ + 'compile', + 'Error', + 'get_args', + 'run', + 'run_async', +] diff --git a/ffmpeg/_utils.py b/ffmpeg/_utils.py index 92d76110..55682a28 100644 --- a/ffmpeg/_utils.py +++ b/ffmpeg/_utils.py @@ -49,8 +49,8 @@ class basestring(with_metaclass(BaseBaseString)): def _recursive_repr(item): """Hack around python `repr` to deterministically represent dictionaries. - This is able to represent more things than json.dumps, since it does not require things to be JSON serializable - (e.g. datetimes). + This is able to represent more things than json.dumps, since it does not require + things to be JSON serializable (e.g. datetimes). """ if isinstance(item, basestring): result = str(item) diff --git a/ffmpeg/_view.py b/ffmpeg/_view.py index fb129fa8..31955afd 100644 --- a/ffmpeg/_view.py +++ b/ffmpeg/_view.py @@ -35,8 +35,8 @@ def view(stream_spec, detail=False, filename=None, pipe=False, **kwargs): import graphviz except ImportError: raise ImportError( - 'failed to import graphviz; please make sure graphviz is installed (e.g. `pip install ' - 'graphviz`)' + 'failed to import graphviz; please make sure graphviz is installed (e.g. ' + '`pip install graphviz`)' ) show_labels = kwargs.pop('show_labels', True) diff --git a/ffmpeg/dag.py b/ffmpeg/dag.py index 9564d7f8..3508dd49 100644 --- a/ffmpeg/dag.py +++ b/ffmpeg/dag.py @@ -9,38 +9,45 @@ class DagNode(object): """Node in a directed-acyclic graph (DAG). Edges: - DagNodes are connected by edges. An edge connects two nodes with a label for each side: + DagNodes are connected by edges. An edge connects two nodes with a label for + each side: - ``upstream_node``: upstream/parent node - ``upstream_label``: label on the outgoing side of the upstream node - ``downstream_node``: downstream/child node - ``downstream_label``: label on the incoming side of the downstream node - For example, DagNode A may be connected to DagNode B with an edge labelled "foo" on A's side, and "bar" on B's - side: + For example, DagNode A may be connected to DagNode B with an edge labelled + "foo" on A's side, and "bar" on B's side: _____ _____ | | | | | A >[foo]---[bar]> B | |_____| |_____| - Edge labels may be integers or strings, and nodes cannot have more than one incoming edge with the same label. + Edge labels may be integers or strings, and nodes cannot have more than one + incoming edge with the same label. - DagNodes may have any number of incoming edges and any number of outgoing edges. DagNodes keep track only of - their incoming edges, but the entire graph structure can be inferred by looking at the furthest downstream - nodes and working backwards. + DagNodes may have any number of incoming edges and any number of outgoing + edges. DagNodes keep track only of their incoming edges, but the entire graph + structure can be inferred by looking at the furthest downstream nodes and + working backwards. Hashing: - DagNodes must be hashable, and two nodes are considered to be equivalent if they have the same hash value. + DagNodes must be hashable, and two nodes are considered to be equivalent if + they have the same hash value. - Nodes are immutable, and the hash should remain constant as a result. If a node with new contents is required, - create a new node and throw the old one away. + Nodes are immutable, and the hash should remain constant as a result. If a + node with new contents is required, create a new node and throw the old one + away. String representation: - In order for graph visualization tools to show useful information, nodes must be representable as strings. The - ``repr`` operator should provide a more or less "full" representation of the node, and the ``short_repr`` - property should be a shortened, concise representation. + In order for graph visualization tools to show useful information, nodes must + be representable as strings. The ``repr`` operator should provide a more or + less "full" representation of the node, and the ``short_repr`` property should + be a shortened, concise representation. - Again, because nodes are immutable, the string representations should remain constant. + Again, because nodes are immutable, the string representations should remain + constant. """ def __hash__(self): @@ -48,7 +55,9 @@ def __hash__(self): raise NotImplementedError() def __eq__(self, other): - """Compare two nodes; implementations should return True if (and only if) hashes match.""" + """Compare two nodes; implementations should return True if (and only if) + hashes match. + """ raise NotImplementedError() def __repr__(self, other): @@ -64,8 +73,9 @@ def short_repr(self): def incoming_edge_map(self): """Provides information about all incoming edges that connect to this node. - The edge map is a dictionary that maps an ``incoming_label`` to ``(outgoing_node, outgoing_label)``. Note that - implicity, ``incoming_node`` is ``self``. See "Edges" section above. + The edge map is a dictionary that maps an ``incoming_label`` to + ``(outgoing_node, outgoing_label)``. Note that implicity, ``incoming_node`` is + ``self``. See "Edges" section above. """ raise NotImplementedError() @@ -116,8 +126,7 @@ def get_outgoing_edges(upstream_node, outgoing_edge_map): class KwargReprNode(DagNode): - """A DagNode that can be represented as a set of args+kwargs. - """ + """A DagNode that can be represented as a set of args+kwargs.""" @property def __upstream_hashes(self): diff --git a/ffmpeg/nodes.py b/ffmpeg/nodes.py index cacab8ee..e8b28385 100644 --- a/ffmpeg/nodes.py +++ b/ffmpeg/nodes.py @@ -21,7 +21,9 @@ def _get_types_str(types): class Stream(object): - """Represents the outgoing edge of an upstream node; may be used to create more downstream nodes.""" + """Represents the outgoing edge of an upstream node; may be used to create more + downstream nodes. + """ def __init__( self, upstream_node, upstream_label, node_types, upstream_selector=None @@ -214,9 +216,10 @@ def stream(self, label=None, selector=None): return self.__outgoing_stream_type(self, label, upstream_selector=selector) def __getitem__(self, item): - """Create an outgoing stream originating from this node; syntactic sugar for ``self.stream(label)``. - It can also be used to apply a selector: e.g. ``node[0:'a']`` returns a stream with label 0 and - selector ``'a'``, which is the same as ``node.stream(label=0, selector='a')``. + """Create an outgoing stream originating from this node; syntactic sugar for + ``self.stream(label)``. It can also be used to apply a selector: e.g. + ``node[0:'a']`` returns a stream with label 0 and selector ``'a'``, which is + the same as ``node.stream(label=0, selector='a')``. Example: Process the audio and video portions of a stream independently:: diff --git a/ffmpeg/tests/test_ffmpeg.py b/ffmpeg/tests/test_ffmpeg.py index 4a8183ca..ba1fa361 100644 --- a/ffmpeg/tests/test_ffmpeg.py +++ b/ffmpeg/tests/test_ffmpeg.py @@ -116,9 +116,20 @@ def test_stream_repr(): dummy_out.label, dummy_out.node.short_hash ) + def test_repeated_args(): - out_file = ffmpeg.input('dummy.mp4').output('dummy2.mp4', streamid=['0:0x101', '1:0x102']) - assert out_file.get_args() == ['-i', 'dummy.mp4', '-streamid', '0:0x101', '-streamid', '1:0x102', 'dummy2.mp4'] + out_file = ffmpeg.input('dummy.mp4').output( + 'dummy2.mp4', streamid=['0:0x101', '1:0x102'] + ) + assert out_file.get_args() == [ + '-i', + 'dummy.mp4', + '-streamid', + '0:0x101', + '-streamid', + '1:0x102', + 'dummy2.mp4', + ] def test__get_args__simple(): @@ -332,8 +343,13 @@ def test_filter_asplit(): '-i', TEST_INPUT_FILE1, '-filter_complex', - '[0]vflip[s0];[s0]asplit=2[s1][s2];[s1]atrim=end=20:start=10[s3];[s2]atrim=end=40:start=30[s4];[s3]' - '[s4]concat=n=2[s5]', + ( + '[0]vflip[s0];' + '[s0]asplit=2[s1][s2];' + '[s1]atrim=end=20:start=10[s3];' + '[s2]atrim=end=40:start=30[s4];' + '[s3][s4]concat=n=2[s5]' + ), '-map', '[s5]', TEST_OUTPUT_FILE1, @@ -357,10 +373,14 @@ def test__output__video_size(video_size): def test_filter_normal_arg_escape(): - """Test string escaping of normal filter args (e.g. ``font`` param of ``drawtext`` filter).""" + """Test string escaping of normal filter args (e.g. ``font`` param of ``drawtext`` + filter). + """ def _get_drawtext_font_repr(font): - """Build a command-line arg using drawtext ``font`` param and extract the ``-filter_complex`` arg.""" + """Build a command-line arg using drawtext ``font`` param and extract the + ``-filter_complex`` arg. + """ args = ( ffmpeg.input('in') .drawtext('test', font='a{}b'.format(font)) @@ -370,7 +390,9 @@ def _get_drawtext_font_repr(font): assert args[:3] == ['-i', 'in', '-filter_complex'] assert args[4:] == ['-map', '[s0]', 'out'] match = re.match( - r'\[0\]drawtext=font=a((.|\n)*)b:text=test\[s0\]', args[3], re.MULTILINE + r'\[0\]drawtext=font=a((.|\n)*)b:text=test\[s0\]', + args[3], + re.MULTILINE, ) assert match is not None, 'Invalid -filter_complex arg: {!r}'.format(args[3]) return match.group(1) @@ -394,10 +416,14 @@ def _get_drawtext_font_repr(font): def test_filter_text_arg_str_escape(): - """Test string escaping of normal filter args (e.g. ``text`` param of ``drawtext`` filter).""" + """Test string escaping of normal filter args (e.g. ``text`` param of ``drawtext`` + filter). + """ def _get_drawtext_text_repr(text): - """Build a command-line arg using drawtext ``text`` param and extract the ``-filter_complex`` arg.""" + """Build a command-line arg using drawtext ``text`` param and extract the + ``-filter_complex`` arg. + """ args = ffmpeg.input('in').drawtext('a{}b'.format(text)).output('out').get_args() assert args[:3] == ['-i', 'in', '-filter_complex'] assert args[4:] == ['-map', '[s0]', 'out'] @@ -447,8 +473,11 @@ def test__run_async(mocker, pipe_stdin, pipe_stdout, pipe_stderr, cwd): popen__mock = mocker.patch.object(subprocess, 'Popen', return_value=process__mock) stream = _get_simple_example() process = ffmpeg.run_async( - stream, pipe_stdin=pipe_stdin, pipe_stdout=pipe_stdout, - pipe_stderr=pipe_stderr, cwd=cwd + stream, + pipe_stdin=pipe_stdin, + pipe_stdout=pipe_stdout, + pipe_stderr=pipe_stderr, + cwd=cwd, ) assert process is process__mock @@ -458,8 +487,10 @@ def test__run_async(mocker, pipe_stdin, pipe_stdout, pipe_stderr, cwd): (args,), kwargs = popen__mock.call_args assert args == ffmpeg.compile(stream) assert kwargs == dict( - stdin=expected_stdin, stdout=expected_stdout, stderr=expected_stderr, - cwd=cwd + stdin=expected_stdin, + stdout=expected_stdout, + stderr=expected_stderr, + cwd=cwd, ) @@ -695,7 +726,10 @@ def test_pipe(): cmd = ['ffmpeg'] + args p = subprocess.Popen( - cmd, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE + cmd, + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, ) in_data = bytes( @@ -715,10 +749,10 @@ def test__probe(): assert data['format']['duration'] == '7.036000' -@pytest.mark.skipif(sys.version_info < (3, 3), reason="requires python3.3 or higher") +@pytest.mark.skipif(sys.version_info < (3, 3), reason='requires python3.3 or higher') def test__probe_timeout(): with pytest.raises(subprocess.TimeoutExpired) as excinfo: - data = ffmpeg.probe(TEST_INPUT_FILE1, timeout=0) + ffmpeg.probe(TEST_INPUT_FILE1, timeout=0) assert 'timed out after 0 seconds' in str(excinfo.value) @@ -751,24 +785,24 @@ def get_filter_complex_outputs(flt, name): def test__get_filter_complex_input(): - assert get_filter_complex_input("", "scale") is None - assert get_filter_complex_input("scale", "scale") is None - assert get_filter_complex_input("scale[s3][s4];etc", "scale") is None - assert get_filter_complex_input("[s2]scale", "scale") == "s2" - assert get_filter_complex_input("[s2]scale;etc", "scale") == "s2" - assert get_filter_complex_input("[s2]scale[s3][s4];etc", "scale") == "s2" + assert get_filter_complex_input('', 'scale') is None + assert get_filter_complex_input('scale', 'scale') is None + assert get_filter_complex_input('scale[s3][s4];etc', 'scale') is None + assert get_filter_complex_input('[s2]scale', 'scale') == 's2' + assert get_filter_complex_input('[s2]scale;etc', 'scale') == 's2' + assert get_filter_complex_input('[s2]scale[s3][s4];etc', 'scale') == 's2' def test__get_filter_complex_outputs(): - assert get_filter_complex_outputs("", "scale") is None - assert get_filter_complex_outputs("scale", "scale") is None - assert get_filter_complex_outputs("scalex[s0][s1]", "scale") is None - assert get_filter_complex_outputs("scale[s0][s1]", "scale") == ['s0', 's1'] - assert get_filter_complex_outputs("[s5]scale[s0][s1]", "scale") == ['s0', 's1'] - assert get_filter_complex_outputs("[s5]scale[s1][s0]", "scale") == ['s1', 's0'] - assert get_filter_complex_outputs("[s5]scale[s1]", "scale") == ['s1'] - assert get_filter_complex_outputs("[s5]scale[s1];x", "scale") == ['s1'] - assert get_filter_complex_outputs("y;[s5]scale[s1];x", "scale") == ['s1'] + assert get_filter_complex_outputs('', 'scale') is None + assert get_filter_complex_outputs('scale', 'scale') is None + assert get_filter_complex_outputs('scalex[s0][s1]', 'scale') is None + assert get_filter_complex_outputs('scale[s0][s1]', 'scale') == ['s0', 's1'] + assert get_filter_complex_outputs('[s5]scale[s0][s1]', 'scale') == ['s0', 's1'] + assert get_filter_complex_outputs('[s5]scale[s1][s0]', 'scale') == ['s1', 's0'] + assert get_filter_complex_outputs('[s5]scale[s1]', 'scale') == ['s1'] + assert get_filter_complex_outputs('[s5]scale[s1];x', 'scale') == ['s1'] + assert get_filter_complex_outputs('y;[s5]scale[s1];x', 'scale') == ['s1'] def test__multi_output_edge_label_order(): diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..de71e58d --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,15 @@ +[tool.black] +skip-string-normalization = true +target_version = ['py27'] # TODO: drop Python 2 support (... "Soon"). +include = '\.pyi?$' +exclude = ''' +( + /( + \.eggs + | \.git + | \.tox + | \venv + | dist + )/ +) +''' From 29b6f0929805b09a20184a1d4500bf31e4dbc138 Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Mon, 7 Mar 2022 00:05:43 -0800 Subject: [PATCH 53/60] Use GitHub Actions for CI. (#641) This sets up GitHub Actions (GHA) to run in place of the currently broken Travis CI. Initially, this only covers running tox/pytest and Black, but may eventually be extended to run pylint, mypy, flake8, etc. - see #605, for example. Notes: * Python 3.10 is not yet supported due to the `collections.Iterable` issue discussed in #330, #624, etc. * The Black CI step acts as a linting step, rather than attempting to have the GHA job automatically update/commit/push the reformarted code. * Black is currently pinned to an older version that supports `--target-version py27` until Python 2 compatibility can be dropped in the final Python 2 compatibility release of ffmpeg-python. * Only the main source directory (`ffmpeg/`) is checked with Black at the moment. The `examples/` directory should also be checked, but will be done as a separate PR. Co-authored by: Christian Clauss --- .github/workflows/ci.yml | 44 ++++++++++++++++++++++++++++++++++++++++ .travis.yml | 32 ----------------------------- README.md | 5 ++++- ffmpeg/_utils.py | 1 - setup.py | 2 -- tox.ini | 11 +++++++++- 6 files changed, 58 insertions(+), 37 deletions(-) create mode 100644 .github/workflows/ci.yml delete mode 100644 .travis.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 00000000..6289d8bc --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,44 @@ +name: CI +on: + - push + - pull_request +jobs: + test: + runs-on: ubuntu-20.04 + strategy: + fail-fast: false + matrix: + python-version: + - "2.7" + - "3.5" + - "3.6" + - "3.7" + - "3.8" + - "3.9" + # - "3.10" # FIXME: broken due to `collections.Iterable` issue; see #330 / #624 / etc. + steps: + - uses: actions/checkout@v1 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v2 + with: + python-version: ${{ matrix.python-version }} + - name: Install ffmpeg + run: | + sudo apt update + sudo apt install ffmpeg + - name: Setup pip + tox + run: | + python -m pip install --upgrade \ + "pip==20.3.4; python_version < '3.6'" \ + "pip==21.3.1; python_version >= '3.6'" + python -m pip install tox==3.24.5 tox-gh-actions==2.9.1 + - name: Test with tox + run: tox + black: + runs-on: ubuntu-20.04 + steps: + - uses: actions/checkout@v2 + - uses: psf/black@21.12b0 # TODO: upgrade after dropping Python 2 support. + with: + src: ffmpeg # TODO: also format `examples`. + version: 21.12b0 diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index e4d7d758..00000000 --- a/.travis.yml +++ /dev/null @@ -1,32 +0,0 @@ -language: python -before_install: - - > - [ -f ffmpeg-release/ffmpeg ] || ( - curl -O https://johnvansickle.com/ffmpeg/releases/ffmpeg-release-amd64-static.tar.xz && - mkdir -p ffmpeg-release && - tar Jxf ffmpeg-release-amd64-static.tar.xz --strip-components=1 -C ffmpeg-release - ) -matrix: - include: - - python: 2.7 - env: TOX_ENV=py27 - - python: 3.4 - env: TOX_ENV=py34 - - python: 3.5 - env: TOX_ENV=py35 - - python: 3.6 - env: TOX_ENV=py36 - - python: 3.7 - dist: xenial # required for Python >= 3.7 - env: TOX_ENV=py37 - - python: pypy - env: TOX_ENV=pypy -install: - - pip install tox -script: - - export PATH=$(readlink -f ffmpeg-release):$PATH - - tox -e $TOX_ENV -cache: - directories: - - .tox - - ffmpeg-release diff --git a/README.md b/README.md index 8cfe89ae..2ac9d628 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,9 @@ # ffmpeg-python: Python bindings for FFmpeg -[![Build status](https://travis-ci.org/kkroening/ffmpeg-python.svg?branch=master)](https://travis-ci.org/kkroening/ffmpeg-python) +[![CI][ci-badge]][ci] + +[ci-badge]: https://github.com/kkroening/ffmpeg-python/actions/workflows/ci.yml/badge.svg +[ci]: https://github.com/kkroening/ffmpeg-python/actions/workflows/ci.yml ffmpeg-python logo diff --git a/ffmpeg/_utils.py b/ffmpeg/_utils.py index 55682a28..94ef9d07 100644 --- a/ffmpeg/_utils.py +++ b/ffmpeg/_utils.py @@ -40,7 +40,6 @@ def __new__(cls, name, this_bases, d): class basestring(with_metaclass(BaseBaseString)): pass - else: # noinspection PyUnresolvedReferences,PyCompatibility from builtins import basestring diff --git a/setup.py b/setup.py index 0282c67e..743deb22 100644 --- a/setup.py +++ b/setup.py @@ -60,8 +60,6 @@ setup( name='ffmpeg-python', packages=['ffmpeg'], - setup_requires=['pytest-runner'], - tests_require=['pytest', 'pytest-mock'], version=version, description='Python bindings for FFmpeg - with complex filtering support', author='Karl Kroening', diff --git a/tox.ini b/tox.ini index 1e3ba533..e317207f 100644 --- a/tox.ini +++ b/tox.ini @@ -4,7 +4,16 @@ # and then run "tox" from this directory. [tox] -envlist = py27, py34, py35, py36, py37, pypy +envlist = py27, py35, py36, py37, py38, py39 + +[gh-actions] +python = + 2.7: py27 + 3.5: py35 + 3.6: py36 + 3.7: py37 + 3.8: py38 + 3.9: py39 [testenv] commands = py.test -vv From cb9d400467014dd371ff5bb24d86be3fa6df8a2b Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Mon, 7 Mar 2022 01:19:09 -0800 Subject: [PATCH 54/60] Add FFmpeg installation instructions (#642) Co-authored-by: digitalcircuits <59550818+digitalcircuits@users.noreply.github.com> Co-authored-by: digitalcircuits --- README.md | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2ac9d628..b8ee9221 100644 --- a/README.md +++ b/README.md @@ -81,9 +81,11 @@ Real-world signal graphs can get a heck of a lot more complex, but `ffmpeg-pytho ## Installation +### Installing `ffmpeg-python` + The latest version of `ffmpeg-python` can be acquired via a typical pip install: -``` +```bash pip install ffmpeg-python ``` @@ -93,6 +95,24 @@ git clone git@github.com:kkroening/ffmpeg-python.git pip install -e ./ffmpeg-python ``` +> **Note**: `ffmpeg-python` makes no attempt to download/install FFmpeg, as `ffmpeg-python` is merely a pure-Python wrapper - whereas FFmpeg installation is platform-dependent/environment-specific, and is thus the responsibility of the user, as described below. + +### Installing FFmpeg + +Before using `ffmpeg-python`, FFmpeg must be installed and accessible via the `$PATH` environment variable. + +There are a variety of ways to install FFmpeg, such as the [official download links](https://ffmpeg.org/download.html), or using your package manager of choice (e.g. `sudo apt install ffmpeg` on Debian/Ubuntu, `brew install ffmpeg` on OS X, etc.). + +Regardless of how FFmpeg is installed, you can check if your environment path is set correctly by running the `ffmpeg` command from the terminal, in which case the version information should appear, as in the following example (truncated for brevity): + +``` +$ ffmpeg +ffmpeg version 4.2.4-1ubuntu0.1 Copyright (c) 2000-2020 the FFmpeg developers + built with gcc 9 (Ubuntu 9.3.0-10ubuntu2) +``` + +> **Note**: The actual version information displayed here may vary from one system to another; but if a message such as `ffmpeg: command not found` appears instead of the version information, FFmpeg is not properly installed. + ## [Examples](https://github.com/kkroening/ffmpeg-python/tree/master/examples) When in doubt, take a look at the [examples](https://github.com/kkroening/ffmpeg-python/tree/master/examples) to see if there's something that's close to whatever you're trying to do. @@ -197,7 +217,7 @@ When in doubt, refer to the [existing filters](https://github.com/kkroening/ffmp **Why do I get an import/attribute/etc. error from `import ffmpeg`?** -Make sure you ran `pip install ffmpeg-python` and not `pip install ffmpeg` or `pip install python-ffmpeg`. +Make sure you ran `pip install ffmpeg-python` and _**not**_ `pip install ffmpeg` (wrong) or `pip install python-ffmpeg` (also wrong). **Why did my audio stream get dropped?** From 6189cd6861a90f6f52e6a8ba2db0fada54134194 Mon Sep 17 00:00:00 2001 From: Karthikeyan Singaravelan Date: Mon, 7 Mar 2022 15:16:52 +0530 Subject: [PATCH 55/60] Import ABC from collections.abc for Python 3.9+ compatibility (#330) * Import ABC from collections.abc instead of collections for Python 3.9 compatibility. * Fix deprecation warnings due to invalid escape sequences. * Support Python 3.10 Co-authored-by: Karl Kroening --- .github/workflows/ci.yml | 2 +- examples/split_silence.py | 6 +++--- ffmpeg/_run.py | 10 ++++++---- ffmpeg/_utils.py | 8 ++++++-- ffmpeg/tests/test_ffmpeg.py | 2 +- setup.py | 4 ++++ tox.ini | 3 ++- 7 files changed, 23 insertions(+), 12 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 6289d8bc..cf65206d 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -15,7 +15,7 @@ jobs: - "3.7" - "3.8" - "3.9" - # - "3.10" # FIXME: broken due to `collections.Iterable` issue; see #330 / #624 / etc. + - "3.10" steps: - uses: actions/checkout@v1 - name: Set up Python ${{ matrix.python-version }} diff --git a/examples/split_silence.py b/examples/split_silence.py index a889db10..90b46d95 100755 --- a/examples/split_silence.py +++ b/examples/split_silence.py @@ -27,10 +27,10 @@ parser.add_argument('--end-time', type=float, help='End time (seconds)') parser.add_argument('-v', dest='verbose', action='store_true', help='Verbose mode') -silence_start_re = re.compile(' silence_start: (?P[0-9]+(\.?[0-9]*))$') -silence_end_re = re.compile(' silence_end: (?P[0-9]+(\.?[0-9]*)) ') +silence_start_re = re.compile(r' silence_start: (?P[0-9]+(\.?[0-9]*))$') +silence_end_re = re.compile(r' silence_end: (?P[0-9]+(\.?[0-9]*)) ') total_duration_re = re.compile( - 'size=[^ ]+ time=(?P[0-9]{2}):(?P[0-9]{2}):(?P[0-9\.]{5}) bitrate=') + r'size=[^ ]+ time=(?P[0-9]{2}):(?P[0-9]{2}):(?P[0-9\.]{5}) bitrate=') def _logged_popen(cmd_line, *args, **kwargs): diff --git a/ffmpeg/_run.py b/ffmpeg/_run.py index 5f25a347..f42d1d73 100644 --- a/ffmpeg/_run.py +++ b/ffmpeg/_run.py @@ -3,7 +3,6 @@ from ._utils import basestring, convert_kwargs_to_cmd_line_args from builtins import str from functools import reduce -import collections import copy import operator import subprocess @@ -18,6 +17,11 @@ output_operator, ) +try: + from collections.abc import Iterable +except ImportError: + from collections import Iterable + class Error(Exception): def __init__(self, cmd, stdout, stderr): @@ -136,9 +140,7 @@ def _get_output_args(node, stream_name_map): args += ['-b:a', str(kwargs.pop('audio_bitrate'))] if 'video_size' in kwargs: video_size = kwargs.pop('video_size') - if not isinstance(video_size, basestring) and isinstance( - video_size, collections.Iterable - ): + if not isinstance(video_size, basestring) and isinstance(video_size, Iterable): video_size = '{}x{}'.format(video_size[0], video_size[1]) args += ['-video_size', video_size] args += convert_kwargs_to_cmd_line_args(kwargs) diff --git a/ffmpeg/_utils.py b/ffmpeg/_utils.py index 94ef9d07..9baa2c78 100644 --- a/ffmpeg/_utils.py +++ b/ffmpeg/_utils.py @@ -3,13 +3,17 @@ from past.builtins import basestring import hashlib import sys -import collections if sys.version_info.major == 2: # noinspection PyUnresolvedReferences,PyShadowingBuiltins str = str +try: + from collections.abc import Iterable +except ImportError: + from collections import Iterable + # `past.builtins.basestring` module can't be imported on Python3 in some environments (Ubuntu). # This code is copy-pasted from it to avoid crashes. @@ -92,7 +96,7 @@ def convert_kwargs_to_cmd_line_args(kwargs): args = [] for k in sorted(kwargs.keys()): v = kwargs[k] - if isinstance(v, collections.Iterable) and not isinstance(v, str): + if isinstance(v, Iterable) and not isinstance(v, str): for value in v: args.append('-{}'.format(k)) if value is not None: diff --git a/ffmpeg/tests/test_ffmpeg.py b/ffmpeg/tests/test_ffmpeg.py index ba1fa361..8dbc271a 100644 --- a/ffmpeg/tests/test_ffmpeg.py +++ b/ffmpeg/tests/test_ffmpeg.py @@ -30,7 +30,7 @@ def test_escape_chars(): - assert ffmpeg._utils.escape_chars('a:b', ':') == 'a\:b' + assert ffmpeg._utils.escape_chars('a:b', ':') == r'a\:b' assert ffmpeg._utils.escape_chars('a\\:b', ':\\') == 'a\\\\\\:b' assert ( ffmpeg._utils.escape_chars('a:b,c[d]e%{}f\'g\'h\\i', '\\\':,[]%') diff --git a/setup.py b/setup.py index 743deb22..72f381cb 100644 --- a/setup.py +++ b/setup.py @@ -92,5 +92,9 @@ 'Programming Language :: Python :: 3.4', 'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.6', + 'Programming Language :: Python :: 3.7', + 'Programming Language :: Python :: 3.8', + 'Programming Language :: Python :: 3.9', + 'Programming Language :: Python :: 3.10', ], ) diff --git a/tox.ini b/tox.ini index e317207f..98814078 100644 --- a/tox.ini +++ b/tox.ini @@ -4,7 +4,7 @@ # and then run "tox" from this directory. [tox] -envlist = py27, py35, py36, py37, py38, py39 +envlist = py27, py35, py36, py37, py38, py39, py310 [gh-actions] python = @@ -14,6 +14,7 @@ python = 3.7: py37 3.8: py38 3.9: py39 + 3.10: py310 [testenv] commands = py.test -vv From fc41f4aa84084bfae6e2db6a5a1fe7949bb28bae Mon Sep 17 00:00:00 2001 From: lcjh <120989324@qq.com> Date: Mon, 7 Mar 2022 17:55:30 +0800 Subject: [PATCH 56/60] Fix `heigth` -> `height` typo (#596) Co-authored-by: Karl Kroening --- doc/html/index.html | 6 +++--- ffmpeg/_filters.py | 4 ++-- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/html/index.html b/doc/html/index.html index eac8967c..55d31a94 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -168,7 +168,7 @@

    ffmpeg-python: Python bindings for FFmpeg ffmpeg.compile(stream_spec, cmd='ffmpeg', overwrite_output=False)

    Build command-line for invoking ffmpeg.

    -

    The run() function uses this to build the commnad line +

    The run() function uses this to build the command line arguments and should work in most cases, but calling this function directly is useful for debugging or if you need to invoke ffmpeg manually for whatever reason.

    @@ -340,7 +340,7 @@

    ffmpeg-python: Python bindings for FFmpeg Date: Mon, 11 Jul 2022 22:39:36 +0200 Subject: [PATCH 57/60] Upgrade GitHub Actions (#643) --- .github/workflows/ci.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index cf65206d..bb9842ba 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,9 +17,9 @@ jobs: - "3.9" - "3.10" steps: - - uses: actions/checkout@v1 + - uses: actions/checkout@v2 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v2 + uses: actions/setup-python@v3 with: python-version: ${{ matrix.python-version }} - name: Install ffmpeg From ef00863269588f79031a56a17509198ded8b8da2 Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Mon, 11 Jul 2022 13:51:06 -0700 Subject: [PATCH 58/60] Fix Black in GHA for Python 2.7 (#680) (At least until Python 2.7 support is finally eliminated) --- .github/workflows/ci.yml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index bb9842ba..0bd614b7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -38,7 +38,8 @@ jobs: runs-on: ubuntu-20.04 steps: - uses: actions/checkout@v2 - - uses: psf/black@21.12b0 # TODO: upgrade after dropping Python 2 support. - with: - src: ffmpeg # TODO: also format `examples`. - version: 21.12b0 + - name: Black + run: | + # TODO: use standard `psf/black` action after dropping Python 2 support. + pip install black==21.12b0 click==8.0.2 # https://stackoverflow.com/questions/71673404 + black ffmpeg --check --color --diff From 35886c970c7b3a757115f5a7b6fd1753e64832ce Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Mon, 11 Jul 2022 23:02:31 +0200 Subject: [PATCH 59/60] Upgrade GitHub Actions again (#679) --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0bd614b7..90ae317c 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,9 +17,9 @@ jobs: - "3.9" - "3.10" steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v3 + uses: actions/setup-python@v4 with: python-version: ${{ matrix.python-version }} - name: Install ffmpeg @@ -37,7 +37,7 @@ jobs: black: runs-on: ubuntu-20.04 steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - name: Black run: | # TODO: use standard `psf/black` action after dropping Python 2 support. From df129c7ba30aaa9ffffb81a48f53aa7253b0b4e6 Mon Sep 17 00:00:00 2001 From: Christian Clauss Date: Mon, 11 Jul 2022 23:03:07 +0200 Subject: [PATCH 60/60] Let's implicitly fix a typo (#681) --- ffmpeg/dag.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ffmpeg/dag.py b/ffmpeg/dag.py index 3508dd49..4bdac44d 100644 --- a/ffmpeg/dag.py +++ b/ffmpeg/dag.py @@ -74,7 +74,7 @@ def incoming_edge_map(self): """Provides information about all incoming edges that connect to this node. The edge map is a dictionary that maps an ``incoming_label`` to - ``(outgoing_node, outgoing_label)``. Note that implicity, ``incoming_node`` is + ``(outgoing_node, outgoing_label)``. Note that implicitly, ``incoming_node`` is ``self``. See "Edges" section above. """ raise NotImplementedError()