From 02446b029854477176d8dc9857ca98dfa9c3444a Mon Sep 17 00:00:00 2001 From: Karl Kroening Date: Sat, 30 Jun 2018 02:24:22 -0700 Subject: [PATCH 1/2] Add example graphs --- examples/graphs/av-pipeline.png | Bin 0 -> 32940 bytes examples/graphs/ffmpeg-numpy.png | Bin 0 -> 3453 bytes examples/graphs/get_video_thumbnail.png | Bin 0 -> 5414 bytes examples/graphs/read_frame_as_jpeg.png | Bin 0 -> 4965 bytes examples/graphs/transcribe.png | Bin 0 -> 14905 bytes 5 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 examples/graphs/av-pipeline.png create mode 100644 examples/graphs/ffmpeg-numpy.png create mode 100644 examples/graphs/get_video_thumbnail.png create mode 100644 examples/graphs/read_frame_as_jpeg.png create mode 100644 examples/graphs/transcribe.png diff --git a/examples/graphs/av-pipeline.png b/examples/graphs/av-pipeline.png new file mode 100644 index 0000000000000000000000000000000000000000..ef2ee467947884d31dc1d611b80fc56a6757b25b GIT binary patch literal 32940 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%0AkO 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 literal 0 HcmV?d00001 diff --git a/examples/graphs/ffmpeg-numpy.png b/examples/graphs/ffmpeg-numpy.png new file mode 100644 index 0000000000000000000000000000000000000000..e3be9b897e95e6d74d3fa511750477926543ffcf GIT binary patch literal 3453 zcmbtXXE>Z&*B&hx!H8fCVq&6~QAQg>lo7qfs6mL{+vpM{q7H&6F;PyGqXki-j35#u zdap?&+7Km5gb=*rob#UV`+k4Vb?s-bbw6v}_geeMzSfgqsINf}ga82m0KJwb`Zj4F zAT0%&OQg4KqoXltqjXl$Qvm>8rqcbkqayiGd(GQ=06-`o01z1i034H`$Ta{UKpX)0 zW(xoya{vG~pJ%N`C;))W!WCnVHP_Qc+IxG7**SRMa}*2q^dV&c0H|Oj$@Fx@+ChUo zJ-qyp!HPV8MIcG`1q|nb{uP3CSL89*GlZ&n`#D0T#SmiRJW4<)6pHe5a6;Zj-})z= z34;Pn&OG=88B1HW|ys&n`qF(;6ze)bfgLd?{ z_jC2Zx_Wy-FL>?lc?Vz>d3Y{_{(b(g6YJ{qKT2Ny|FlJF5PtCmE+Hlk|CgJTin>6N z27a!NB;^Z!B?;7Dk^cw#M+XJJ5dUAr{N3qaD5+H?APWBPu_*y{yZ9{t0J&pzTxQ z36XHvah@mJ{IMepVd$uxrsMM?EWu;0X$1$$uj%8M{ zqVgA8NuO^T_VyEU4Wc$+2uwzlDyn#;paL5zP=o0T{?+{4x+zY(ubhf}y6&kst5&SS zt|v${aNAk#wXoXPhaWZ~!&+KP9mZ-NqOVYrZP3uzRoTPjqazu}uHzW4Xn`oJV9=PC zDap$;aR zAz$!(!>Pj$ND%mEiJ8pfWSz4<+75ao=9L#Qe}GUYz3ygqq*VW-V4rir2iCaVM2Q}m8c~CZ zO>XP$S6l&6ZyRJG7GectLyqJx2y#Ge;&etqLF&;_@Q<}oinFt`_>`1e+S7Z^pAAO zIi_suQ}z+(hOFE7e+GRY8%(q6c)+z!9M&KX|-Jb!>RJA&Q)hk{-E3EYs_&;V!)5xqr|09YJ|MK3%5c@};DC3Dy5NwmKc6Ch%M$dylvIgqord-$Vq^2ld`noejZ@Y-y;!ZAHov=@@`V}rYC7M%;0}dZ>B{-j> zuCgmkExwDo%G+V{7F0J&4Yd2Hi2C64O?DTiq05JF&P&}RG3nV0rCsE|6ngJuHZVFEJ*0))fiAAJuRlSC|wt|4U0Rmd(Si#!`z zP`J~vqsY0?M4=02mF0##3z+{%hG0Czbh? zY2aqDdYHN!c`Dr;+bSUi}T6nkPL8_Q}6mNP)Mt_wxOiNQUeld}rQx0TjX9q@N z1%BoYi0)g4NzNWr9HMDj7AJ}_jUh5dVXyCCx4JXpjI!GcoVFii)+6IsNmn_ldet#R z(Q(B$%&cz0l!LO;zv9JimZi^^NQ%q-PSK(7_n3O>N-O+J)7}jaGd`qd?1?0!78N%^DPj|DDzeL1*B+Sn_#qj7zbpOia_nGl=W+Nk`zQvVHVKWd1M^b!zyf!bLL36!6 zmvj^%Xam^ba?(a+w>?&t5g}|KD^Fa@<(sa9KOP)=?6YN*iFL2!z*IGZ64EuWvR{Jc}0!&tqqxL-IXVs`cDa%Dy+>m zulixF{-+O4_L<%NWk%xxe;jv~8raSC>E@>98|{6gMofL$KWfJCrV>#sf`QCEOntk# zNw7z11G$~) z6=A>bgwR|adzV2JrwV#+CKk67Ao2?lC7Xz$>)LsKqa*)q*M^`Vf>DwYQYOFG!~^=m z@*qEGCxYAZ*N2H5wn{M+7=9;;wp=>HdFiYZha99ua#uj_l0ThV8>^z zt^uxe__>x%;Y(x;98KFF`!Ox}pNVmTB|j+coXR_1N4`+*H6e!xiN2 zmQ&)@Q|qWV5uCn7*=NC0xfr_a0hhw0_8xU*8hfkxgjIcIWtt_*krJ&X9%zh2^%mNn z9}11}C0`pW_GJQffu{qXw=k3DF*!1<>sT{ski)qvjDDmg8P5Q%2v;l8^w!gu=dw*n zGV}q~xd<`xl6IXynR*bcKw?|ZBx^NFrDxk)GJQHNk9(Jn&_`Ymd^KM0{6VKAH&pCL z$neP=?RQ2lWK5BU&I7z>K7Vf(%}#Fz3jSy$lImPm&8BE+n{g;bB OA1!r#bhWB&^nU=C=_LdJ literal 0 HcmV?d00001 diff --git a/examples/graphs/get_video_thumbnail.png b/examples/graphs/get_video_thumbnail.png new file mode 100644 index 0000000000000000000000000000000000000000..6787fa672ca4784bf7cfbe2d5cea3ec62718608f GIT binary patch literal 5414 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 literal 0 HcmV?d00001 diff --git a/examples/graphs/read_frame_as_jpeg.png b/examples/graphs/read_frame_as_jpeg.png new file mode 100644 index 0000000000000000000000000000000000000000..70b95e8c002df9988d678a2d56ff97f1779767b1 GIT binary patch literal 4965 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 KsYLNn*na@f?=N5g literal 0 HcmV?d00001 diff --git a/examples/graphs/transcribe.png b/examples/graphs/transcribe.png new file mode 100644 index 0000000000000000000000000000000000000000..71f2654c53ee59a038293d27b7b090eae836a6dc GIT binary patch literal 14905 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 Date: Sat, 30 Jun 2018 02:32:42 -0700 Subject: [PATCH 2/2] Add graphs in examples readme --- examples/README.md | 66 ++++++++++++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 26 deletions(-) diff --git a/examples/README.md b/examples/README.md index 27f0fee..bd6d712 100644 --- a/examples/README.md +++ b/examples/README.md @@ -9,8 +9,42 @@ width = int(video_stream['width']) height = int(video_stream['height']) ``` +## [Generate thumbnail for video](https://github.com/kkroening/ffmpeg-python/blob/master/examples/get_video_thumbnail.py#L21) + +get-video-thumbnail graph + +```python +( + ffmpeg + .input(in_filename, ss=time) + .filter_('scale', width, -1) + .output(out_filename, vframes=1) + .run() +) +``` + +## Process audio and video simultaneously + +av-pipeline graph + +```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') +joined = ffmpeg.concat(v1, a1, v2, a2, v=1, a=1).node +v3 = joined[0] +a3 = joined[1].filter_('volume', 0.8) +out = ffmpeg.output(v3, a3, 'out.mp4') +out.run() +``` + ## [Convert video to numpy array](https://github.com/kkroening/ffmpeg-python/blob/master/examples/ffmpeg-numpy.ipynb) +ffmpeg-numpy graph + ```python out, _ = ( ffmpeg @@ -25,18 +59,10 @@ video = ( ) ``` -## [Generate thumbnail for video](https://github.com/kkroening/ffmpeg-python/blob/master/examples/get_video_thumbnail.py#L21) -```python -( - ffmpeg - .input(in_filename, ss=time) - .filter_('scale', width, -1) - .output(out_filename, vframes=1) - .run() -) -``` - ## [Read single video frame as jpeg through pipe](https://github.com/kkroening/ffmpeg-python/blob/master/examples/read_frame_as_jpeg.py#L16) + +read-frame-as-jpeg graph + ```python out, _ = ( ffmpeg @@ -48,6 +74,9 @@ out, _ = ( ``` ## [Convert sound to raw PCM audio](https://github.com/kkroening/ffmpeg-python/blob/master/examples/transcribe.py#L23) + +transcribe graph + ```python out, _ = (ffmpeg .input(in_filename, **input_kwargs) @@ -57,21 +86,6 @@ out, _ = (ffmpeg ) ``` -## Process audio and video simultaneously -```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') -joined = ffmpeg.concat(v1, a1, v2, a2, v=1, a=1).node -v3 = joined[0] -a3 = joined[1].filter_('volume', 0.8) -out = ffmpeg.output(v3, a3, 'out.mp4') -out.run() -``` - ## [Jupyter Frame Viewer](https://github.com/kkroening/ffmpeg-python/blob/master/examples/ffmpeg-numpy.ipynb) jupyter screenshot