From 2401959ec3e12f26ea838c66f54b8896902edec9 Mon Sep 17 00:00:00 2001 From: github-actions Date: Tue, 12 Nov 2024 03:28:59 +0000 Subject: [PATCH] [docs] @Breakthrough: Generate Documentation Source: main (9d0af3cf494040c2142617a02435764d8beff6d3) Destination: head --- docs/head/.doctrees/cli.doctree | Bin 202324 -> 212418 bytes docs/head/.doctrees/environment.pickle | Bin 1891311 -> 1906929 bytes docs/head/_sources/cli.rst.txt | 127 +++++++++++++++------ docs/head/cli.html | 147 +++++++++++++++++-------- docs/head/genindex.html | 72 +++++++++++- docs/head/index.html | 1 + docs/head/objects.inv | Bin 3840 -> 3925 bytes docs/head/searchindex.js | 2 +- 8 files changed, 269 insertions(+), 80 deletions(-) diff --git a/docs/head/.doctrees/cli.doctree b/docs/head/.doctrees/cli.doctree index 3bb24ff2af7cd409f68a46964a4628733a22c4f5..55fe1ebca977aefc02eca40a7c8f76f86fbf7fc4 100644 GIT binary patch delta 32983 zcmeIbd3aPs_CHKjLK+B=L=woJ?(8Ay>>(s1Bw-VSEMZ4k(vXDYLKd=!$Vfm(7L5XS zun=58+)zYN$EX7c;)WoI8!D)PI_|QFsDm=Ub57m9efxG2{LV9fynnnr51s0&I;W~W z=hUfFYrns(=PQ?bdM@p{E@h{uNi-LXsH!P5SJ)aF&2yR>8_Z1&RW)FKkOsM%w-l62%TPff7@7pcAyt;nPXq}ah5pThxZWEBUyBtIg0&*+2hCe53TM`cuHUS;%X zKh`u`SpsDzND*~y=}LSY3a5T^O3*jZZi~Lg*T_a}j$r+HI3@ZS6Pd7VnZ)%%E6^e1IP}A)4${1A1xEZbS0AiOeEvX`H0SiN*yLszsD$X5YaVF0| z5Ro-d*fy{TlOF?3zSK`_E@W{5Ge?6Qpg)(Fp_Z1{RMghbDHkP?EPSf9dT^<^wyv?N zwkFv;)K+7jU2d+ef&Ue`=IZkLx#dabhNil@`tpVb*}>zXhX=IB&#Xgce4zbQV32*` zsB}I(P%J57aeQW=ec7#7v+IN{okiGp1O@WSKw){DWr^@u)^AuJtnYYeLDOs~ApS2` z$tjKTfnse0&omLIu~6FTK7IQQE3dFM&2P*#mzH9klSdC9fAw&?r+Zg9Xi#+nO)bemOwl6Pet02J6V5I09G1`VzpM^O9q`4Mc=T@zFScy)PbJB5Ots@ z0v#Qwmq>b(1&VF`S+OY)d41|HHZNhpqF*9=iM=7-O=OeVQIU|uEc`txnjJy>qQs^o z=IMI~Sn9e-xOgs!HSm803coDC!Hf(K5e{t&t?V(zFQ_Sz&XnM^31D{1%(e!wTIGOJ zrLCcIR#{a;W2uOk!E!kdBA9yha!L9&g@v;o!fy~u!yJQCpu;$xiV#LH1J<`tXJzaW0Xk+1G3u&Nd=Zn0?JetFLgS$rP3{mdv)w z40XBfWI$uZ+B(Vbjvw>4k9{bfy?Ui$-qpBRjP(H1s<$$0f<$Qrixi&>WSOS>q0Y+d zL1a+8G7+^_v8j;7i`hBs4Er9LTBT41VB$AH*yqINTu_SNrP_!eb6FH;!PILYj(W{N zH8b{_RwFFbYr=yay(R)f)N3MwvDdH$Va{V;@swaa*kW`(8^Uvgaq#dR03^Czkt@E- zXQ_N-FbxTAi8Lfk?jZ5sgIPMC(;3?ZL>XmdYd|#xs)Q~?gjkx#JjKXDmSoDqmX!xf zYn@9f8I0EYG`~GqcHlgWToFv5);+*`iqDH!BwH^wUjr5*bO;OMnFT1neFiu#3g3Ls>OH?27K9VQe`6Si4p$(FnvkH69_B zjbQ`%astEGEs=n3r9?ktBC{|3a46s08QZ6c(&9$xY8*6IXvLwRE(%o;@9jV!boMxF8- zZF3sUHBHsC%j?1EP`%|Ov(4OCRb7trj)w9%wKZi8<_ef^)GmavYW5;?Lz20+Ud=NH zeH+M!;}rRr^;fQ2;6MP16GrEaerm`WXQOFLW z$=CR5DvLD^dTHX^5*FbFzCf$;f+(EENtF&AN}0uuBG%nB0c!=l4hE67 z;_F#8WBqlhlbosUP7C-e;Ivd!s7}kkP;y$5&}q?cQyHz+ZA` zrpS_Y4$bwlUJoX*uD(-U+jYG-Fq6H>YeO}MrkmI^i}hv;oCQ=%SkRsEnu*M-L~1E3 z>$x0RsdH%bW-KCR7MQcoOPRN5o6eH$Pm(36pzrix}88|-TU`+Dia zY;#uIZ>wvy%a}M?1$BIDHml{Yhmuv=8tU|9jv}e_WZrhAoGU$<&t(SmWZW{4C-Y+` z88lDk-&ZJxcMB6mR$gp2)WI+qydH{P%w*GhkWKjm@WC0;TmU15ZtQVCw<>vLcR{Bi>Kwwtf+DmGTKP@Ww|<3LInjRT_YX4aL5LmZ3) zZy9PMUH^$;P&oC-Nf@FYIVlXC7!Jr<@>r?ZF&jqmAqrD?d6*t@aY12)ye^DJ#rZ(3 z8wjcqZx}bLSqNVeMox`e4jK(wI!L^KJ~%b^UXk}>L>^`2Z9uvlDknXguc}$9sUBOp zF-&@l)l#*KYG8$6pipX9b`Q+}%kRCDbv7IZu_1 z#Z+1fkW)V)Ghq~AIJX}zJ_xgpB3Ikcr0QeBGtwMO-%^$ z^l%!?yBXDl6!8WW2`S=243Q!(4A)G@n=n<)S;B0l8<7)eAdKUMMw?%TLwGd*DMS=a zgZ$QJmK#bWOua>>>W1!jW$KzF=I?t%V@S)4%SF_!>>&SFxHx+&8_d3O zHvLQ4bXtE{g)C2o+poPpU4+~Qt2dwion6KM3>WAA&PKEUIEgOli0+U?G*Fv}!;x^g z8DyqK+}LHVhZ}P%T)*+<6xa!9U#&14c1KC=C&! z$j;4P2vSjm9H8s(U}yOH2suEvV#>M*IY94j0kwWKf;>F&M++>CZI7U#8RBS)c8|re#sFTm1r4{H`r-NhF16E66Qn$>JH|5~E(g)8IrqVF0u zfd3*fbW0?FJT0_r6Zju&h1W+|p`v4vNe zr4O{8^iV?F=5L2}EuL+b7;nI&OtWJmY~{nvGzk{JwX#4y+Kdph;bPpKEYa&e$}5)L z$&!6f8i62$6|)23c^D#u=b3c~|H&7d^~x(M1T5h!Cjk6z0UDiod4P!pck{8n#%Q^o zf4_v)E%BT6Yy^LzGlnrn8UvP#p&Bh&Qd?s-uq@L`Y|Azk%LfpIX0ue+?HkxJen^FK z6Q&$6OLaZ95!Ce)!ZJvh?*nx`EwTJWV)+ndmRL3$+AST)|6r-4tz9e*EW22AST>8J z_p_V1uf+vW@5&Y(QW3BOi*}yZNV&Rt;u`IR=sggwLO{^Qny%P)b1YnL^AJw16@pmjD zHI9WcSbjwSux^JX^Aqhe7iTBIaw%{+wU~|M7c63JJggdBbdsMZa@Iwd9|vn=tlEMR z0Z2@fR%&pig`5n3qvWZJ#zZ>QDi%Z3MPnl!YIXbxa48Jq(rR=m`iePEva39l+rq`< zC)ssjOQcUR5P2+y0af}Gw?PQLinpI+YuQM#c@wz4H0BP6d^#; zi)Dq-8*6?Zi+1qSyD?MqS(h#oYhf?Ep|Q5Q>LyrZs)l`T^ITZZs<+{W8ElQ!mCvcF zSVU`2x%K50xup%@nsG4iO!8X4MN^Yu|4_kwnJ2Ahxv+0{HS3SD#G zfG8JZwhK1`$BD#OV2#}OeHMJr4mOdeN71Mp5GB_M?%M%gNq!Xhc{#4+FN^%0u$M9_ zirhrEMDii0b&xpv85q|pI%C^Nlx8DagUgdHZhjUP&I+JrN@bLE8ehi#04F|h;jAt0 zIart#=})s{+WGU^hl#g~cm4rm@y00Wln;3xAlec|PC3MpQ@)?_K^&~U3^2Bv#-qJh zCb>ELFht|gz9<@x06bVPn<|m*`WYeHlhufGxPFFk_jVeeR^_OMc*z8w;Q?k^tbGC2 zQNIO3eu6Oa`^dEluc;oUFv3nvpwF@ZG&q&GW43Jp8hb6HkS1O=|cv#$c zxVp5((c?3Cb-*;vHwnXq>)IeXiL_+XF2Z^t~3ez|iL-x&$ z5(UG3V$i->jEM$qe>+;R*V#1FC)h5J7^&KCBOph0kUjM}yMxEW`4T+vas*RjVo3Fl z8e2qg6~s8;D#Q@MRT$&0dPl}{>StnK9xU3Sf$46A6MG9=m2ojTRm|uP`;b;j5$C>T zR(?IT+iwam*D2&t)wmd=rE#ezIEEP$0S-msx+8C1vLJ_*aeQ_5!sgBjk7|d%{@lkn zs4}kO2cmiL#I{PyG6Qj1row*|0iGD6X>9Z0q9$;S!GoJ)n?HXMoY{h1UTICx?;JUC z^tI-Nl@M1~UkfKT={Tu$VC&|WH0=tC@GGPsm-c2o)>_=+p8(c=CCaFXL>jHo^j^PbZ&G-`epqph|29(S$& z2{Ga=wwwPV8|w8LR`R$gI0&b#=&+TSIC@x}Yz^~>by39Apj5hL+HQ``6^BkaBbdjuC#LG>T>Xg=xmK~j z!f~AIYvdV;5eeN!(-$ZJwtkfUQ()qOYsYXF**qV1an14LM+`M*rVUI*7qM=Bl?@Kp z4xKPLA=gp={|kw;g+p~M{MOk*@!qSj7hUMrvp00Sc~x~*JQH17+QZ(*FDJq!N*3Q& zn{!Nwwa@cQ>8H!1^Dw75VVI+bcI_WR`eNS)TuINoEdx#8JI|`=UMFFmCE?o$s*dw!gV|qklYe)-iK!0RFcHB^**4Q3&=v1eP! zN9+y8H$Vdc_l!?iE_+zie8N)rqj7j9m_HOpi0>f8vv^RPSkTM^Our!;pu%OX4RI20 ziW5Kv2Ms?u4z9+bI63FYIss?Y-j5^e32`*%_%||u%sA&5YQ&Hnf^%4H63%%Hk#Nqt z2`5s(oTHKRcozxn`wWWj6^|0~>mKhSp+D3S-xw`N{OEWRoLl11lQ1<*>x^NHk;Whw z4%KK$b#{)$r(n_A2O^b>c-cArKuEmeot?wuG%Mm0;-v?58B@o_lQw%9nk2PZL1qNl zJPZ+F^Wu%#94T^d0iT!DOec29j=zAh^y+p~kxCpEv2b0-M@#VKL z&;Jj#l3$7!BmWInYw6v*(DB8-X-6>cn;?q7ro%zqsh7ZV*M83uc~k-_sv{fGST4C% z)YAaSg?O59VrBA7ECDJVlOVOo6I=V64hx?j*^7KQ>?NQd?uDsC5>SgcWHMc5L;6lf za%%ky3{mT6BslbD=TEHK)E&vdB%-^;GQ`d|S&VVWJ0l&gJI}CQa5{eD88*b|Z=I0- z)=gN*Zg8BWzx4*XU%O+ZzhylO{?^|U#IN{=D2>8_X|vePbY}b*Wi%+XBSyeFP%&ArEJ4V*#{3WQqsjiR55{bULnu^-yv;jA%gB4%^sB z(5h42xIEJD7uw$iuy8JRX0oy3Q_j7`Protf>;1`ahW3|k#|yu+p==m3paW%og|74# zZoj>M3L7so;Kr0OgFs^d$ES!xyBW|Rh?_3K2150f%2}+ju^7uS^oN}OXduR$MnHX) z+WxXDSP;W}IH;(ed=&%!WaX?CnP!=yFmY{vvZwimRtmBTPa-es7uzsI{bE~x>K6bP zc?S+0`-#h!VHDcs3g%1yVdJ1LIKcGX?^;aEx*DFzKG53emM*dUqLU1_Fg}8vy+R3> zH3l)p8W>RA1r=1ssEFUef%}#NPzSK_=T%5!5VgGoX`HC{;B$DtL}^*#FvUNSM*kR3 z7(-$b<>&5Wb}UIQu;{Nh9h_@gjH;Ezhwz{fMQC%f`uQxb9l zanM9Cvo~~&y>JA_*I+2Zg>4u3>-T!`UVL7Hc-)J-%?5oqouRG7(rnP@rFEKz#>$o; zty7MPhw=JE+O^<~vPE@?nsrLA23nnUN(XdxQ@Z%!H#XMefogS)ucE%TTBLR3eM8i9 zr5$B3^A#$_nb_FsM4gdZpNK{(Vx4Qr1F>YAW75;|x;WLHC-j7a+>YI^EOB`z*ojYj zfEl>UoBN2qJ$Mz%rhMMIeD+g+_UX9|naiWE8RBS99v7s`k)<Y?S1$Naj6d<#czP7J7!-?ljQ8{7A#+# zeJx3%v9u*gH~VT1;EAS@$QY<$_63)*)XxRB0b4b(rotB{; z7Gs_PXX4jR3+O72M)6{ck-0%I`;)}r#js3OkO{r*$6%gfdIuZ)yDF7p1n&)!N^Dzg z2p`ILxK%tC%8M8%UK9+(rRV!$R8kl}2!BaNSA~PB=32#d;XH@sVK!Ap1Fa|{23Jzz z`2c=@lANwxi)8?dst6v7tZ3JaB15cXu|JRC)7WgdSPTyC1T$}7iYyur7tXdyqdf+h zKz=mZZx|4lMtgu`nBJV36#3@mUO?YI+14 zd)O*F**HY$J}Y*zxVGD4!C&S-OPTGBnIG#u{c>T*1ANl@avQH!i-Gf1L5*H6eoo_8%TA+ zoGj;(Zm}f5n~|*8*DY~_m8Y}YufQ|PNM;b)^-vL7PM3PPCm9S_CAO<2nIz~n83CCk zHfQoUk(a_}ux$jI+(Vm+iCdG&uFWzwiO|}QyvVM-iXlSlRUKMi@%LST+MdP-in@W^ zjQfwi$6a||Ct-4nC73QsnA{R$GXN$Ju^>-6@$K`BGLji!dLJsH!IW(}g>C7YA`!X{ zLHGy}s)40#C`Y|&IvwL9QwW@oj13`h@=_e&(M-Yb~1yOms>$6D>r4)H-ZB&OY2S5O9rJ20vp4PB$Mv9|)t+vMZIdT4NLA z#>RF1Vl>pVC4m-ydgt<7({raPF!LHg^)jvMUq;czz`vS!Ug$D`Miq%;DYzI!8}{k z4_9^bXII8$Qa9aV5n|pul@`+65_g_}*C=4Mk3!qqKJqTVtV=09u}vR025)M4`UGz0S0X@tD^WeSJ$ zaxjKN1a<#Ie>av*;M*}o;M>#mh8Gq$=kYB%$kW9w6L>z`E-`t+m2IQM z-8zx?gQK<@?rymV_qRI90LwuEB4-khV8^al&{rBCi?JXB_*>F&J;oEdfnu?z$^UdI*u9?Dz@owqj!zoam9%AQAhdbt#PBS0>baKbo{bKu6-q(Bs zvbhX=VYVIG;)yq!b?)3{fHE*zbeqP_JSkoDhre(z%gM99yWU0gg_hKRTh zEaqis6uzQDahKA_j6G%)3rTxMxEIqO!Wv4C ztqDkV_UuL}@ypXe;wvy$v9DVWlJ>d|5@E9IFS^gr{2F!uxvRbHCd~1AIssa5Y&8LT5*bqWIfWqt z^pp#rH8$uz=Uf1_%!cmshqJA}xw8J71oY5s0JMiFSpa~#hD7skh}ADTH190uSF>xyxoU?O zxCC=tlR;?yVr(*@IVZz`W*LSE&9V$sPkuQOFU0rt_fJkX&vH4Vy`WAU{U?t!`xs)W zyX3=DRLihjpr@t4`)eFafrgc#p|}(nC^pRHJ^8dm@%UW#rNDH#6u1oQHWn6*w5t%}QV)4s_rc9)Tj=M^XA6b`|Anju!&`6X~IiGB{T?r%_%w0A)TG#`^J! zR{Q3L!0xJ=SSy4`uEP+R4(q5wrnU(TIop-JK-3GhxJtWhF(4o}g?PG9D z@HdE7ESY#qFq)sqActmnzY!qn8hBgJ@#+UWZ3Y^lohs`v-3j%GOzE??BGf}OQRQ$0 zID+@}NM2A!&xB3PB#CEVRazQ7`I=$F$Icp4GS$N9DGi@C&y2iqTN=-1yNo@^3`*WOGyeym5J@5?)qgh&jLB1DR!6|iK`nIcesFLUkh za1k7i$!lmqmOwvv;LSFBemNXnt*U5jRnoI`8sOi@T8773UGmtMJ#A(AV&^LI0FvO< zzENAiBGA!;9Qg&09lnSjb0PU~4Qriw-6DJ2YKi zOL6uHi#HV@U~{rW$-`hQ24rbU&}m(fR1x>=1aXQV*u4yfOjaW=({LBwMtE7B?@aywVD} zQf835(*w#eoMv4iot77{f|bBkIxWaweuW{9yYSV4oJtVcD_LS{B{-0;qGaW| z@ZKzKN7Hw=h7;Ywe@vXN?>FLr(8W7=b2X3 zU2;Y^MRieE*beHiP(M24+Q54Zz~ihru*hAsL9Kna0aSZ>4&WKg?uij_ewDs_m4)L- zY0OY~muil6PHo*Hb2UCu6_0l?q{i9i%xQuvgyqhotA8=Kv&u149f{9#&MJ!=_wi8S zJCA#tpbKN+bVB#UJUAkhGeCsT=Y?#LvnAQOmOPJKGSrsP7uk}+fT4~XknlRNI_5TL zhi*Gab=GvEuBIb7 z_$A~vTdgsD`6^4EUwQ46W6##0T~DcdwyR~OP=Wkf1~@t@Dc~O3vmGaP)bcy|)&Xc4 zdCLIZiP`6nR!)R=xRUOZ+qJJ?hGJj0M4D*5(?KF_(|&p-*54C#jFGirklYH@Qs=9C z7s4v{vIdy1J`a(~=L3Z8b!Mg`T2BqoY@_jvtY@}1@bTVo102uD`U=}d$67_tY+9=b z&erYH?tUD$9%;zik8%MPIOKU|%OQ{AST+rLPZ?38A+InS>PNm$5r$~UD-!!21S<~k zFU#lCP$U+)V++li$V;G>I^mGpIvs0S>^Buy=scI#)ZJPIQ{_gwF^Al(y-~~14h!0? zy{*#%>>9nrSb#xBCE2)RJIOQ?8@nP~Ixepva+9)AF0pO@S_~&#_%^_J37^5A&lXFU z@ND)1mZ0w7JtxKR3W*_$CuYl?*f)^NHozJV&H_2jCMa%eHZAs@Z-$Nd&$7v}6;qe; zDGaXqJix8=z8J)lvw8rT00BCylMHA|XVqh%Ltvg5B7u1hq#3r0z+ks!9`_&UA}c%r z3Wq}$Y=wRj0@ONL9h6J{Zn4yRKoOp3kHm2Tlnw2Kr^U$AAQFFAn#BdZrMK~cCJVM{ z_&}12*Fgj$P%PWVL+@G6m#}gyMID{q#Mw~#OneS)nYbmsx0Vm# zS)K5+7)cB;dgb7v{WMb_sEm@GBYXaP*!mthnniBA(+=zPd!AotmGOLpHcNht`X+^B-6T^NkOX(Ucrk$i|vAw}FMCHAF zG(Vgpj?QPrKCXO^3EvGom7kE{zhz7$$$ZyAB5YrG3LtGihl{avdm-#}J`BKG((47H$G>Wp=KM z<_BzslbhApWb#)0s(@H$Xg}rl84J?bV#37Nm?+1?RUIVKI{S%-V4eM*EAfArSi~6l z8!(>@bEL}`3FNId=oPv=>ku^md3QAV}~xEWMQXUh9;15@4` z;*{(`a>V-r(djCdeF!c(-r?E04F+sJ9Uf%IBmQ4u>a;gJS>mM6E$-CxEuT?w@$gu!%g&-&h`8=0K9?$qTZvDaz*2AEapL2NRTTUTXBKo!7SQ_5dph-5Wg=^q~hNP@<_EeKp1j9Kg~PEo zc91Aa4xks;8DBe*THFeCJtzh>eQ<8DXnvP>6%W0|lT0(AlFACGI6jkXLLesPYmO*; zTf`jX1!DU_-k&EViRy#U;ltGQm#ROB@J)bWs4}+O|A)oBja{xZvqIxA?t|>h8HcyP}j+NO4)dOV; zZSmIi6rB>PJhvW#LG^gPIDQBYLwqWEek^%@O+2%r-a~2ZXfdgkbTL(GQSu2k$tjAU(VsFid*y1 zaQaQc3OM(3O&(&W7t83IIv7MrBWW6j$a1C)Cd-)#(8Cl7GWbPr{KBaiK50L_KR+B(i4j=T>JMAMbZxK(2j4p4(8?JKQH&{xD;_e+x5*lsGOdH+~FR*0rLcgOhi(6r?^7>}5IQc1z*}q_`!waO0d=SGQ zbTazeXWW2n=!3`I+RmVWiFEP z!%~J8NN<$B6c&((elP+kMRXH1Uy5ikhDbz<3)D^|;AO-hmQD|X_!-827!;m970}%i zf4ZVoxiwD&pXM3HE2gO+ohuzMwy3gI3TNsHvF!EiY~!f^U};;Ky%Q!N=1* z;p0~fUBHhwpo+?O7ocKtica@LXsYi%trQ^ z_#qIbR{WqRR7xY8A@~7a=Y1DH=$gM8Unlk*LV>WcSW+`q~ z-Hac!i$!}^ZRqYjhacnzlJ~b3<#88&kf2CBEl>{+WmSQ=_d6ci>{HmK%PPf}K34z= zE0yK&xk^ERRuMQW37Ay`%1Q!c6@jr*K_FHU2rCr?U==lfrGgD#MU7rX4PHrYT}AC& zsbCvdQTtXZbJL(*tEgcs6>QWhYS2mr8?%ZUvQoiDtfB_2R9Xt!rhO0heRx5nxbFx4 zNr03Mit3m@e6--lKgAtC^6F;%tvLmMk50J;1xO(hApYW*6d;AFgWxOvqL*?Gg^It6 zrL4gZ{FN!?v=+kOKT_~Fl9Xjy2!F6g!5{Te%t%Y2Y78}opp0LZK?sqS;160zEuqjB z{EEN4p{zvB!5_0wUdIpo?Fl6?%n`z$Cs6Pw43su4dlU-3S)mkbp~V=&rx=v|TId3X@HGM@56ft#Aa!B9V=KEb zh5F(>;e!}A9lJH&JXdn?1Fvo?cW5EJWUSytWTiLeqY!m}Jg6tTKZSn7uXwRlX+o2L zw>OoLq-OZUi;zk+eo$yXhVTxa5`Y)6D6}3!cza9vP77U+S6J|Jkg`P!;Vl;hZ^9^{ zc$a`ecv(Zi3mwXXTIdH1;iZITB@+*?V^Ar_5FWW#+O&`-9y7+1;mTw!v;{+WU|IP^ z3*oU<1&_8Wd$rIx4B_caWhl0oLSzK-6oE8?%bPK{4ecQwHB<0VmU13H^6`)jh42`T zf=6|f6Iv)8DRS`RCM`s^6ldhpmQrXrZbag)y|O$HK5+Y0!5vElcQutu15p1cSOSX* z3T~q*TeOh>K=_LLILdS_g!>W-?p-J!Xd$m0_=*eh$`~!QA49nIs|4gaLb&dz;M%0} zoEB=v)iDKE(3A;UXcLBT!AJQ<3(=^6J^%~~@Ij$v7{bY-Qi2~i7gM%qA@o`m^lTNo z7WxK5=shX9NPA|mICh?2@HzxvMg@qYKlA5#W}!HB5vDh3h2Zami;pkBVXBlu;r9y< zyc?^e6oOl4QLgKy_wFHSwgNmXDX`*Q zcM+B@=1E54JAV(eNc+{vM$Gz^dxff8aJ+EN5k`G4xlm1(t2McmYT}{%Gf?>c$paj< z={D+utc_Uvo2YV*D*hrmMp)mC=hTqjMpyjMDUsj6dk8 zGICbyn9A*amD?6LW8rL3K-BemZpL4P(pT%e%IJ*BXl1x7qcS}sx8G&gw@vvX>7J8#{gT9ZO9QW@Q#GO9^%WpqZ*$oPnwTeVtM zZfjL;efzs|3*fqH;b7(LCZi#ZdK*>iX_e77mC^J>S4QD_MsBaH7?t5ImD?LCx8Drh z;K2qbTJ1dMprQ4Z%ILJps42s>T0`}W+#Wp8wXe$%sh)qTjJ9RDGFq)?b`NFw09S5s@XOi0b`FJU?Hiyn%5X5sb7izg&&cg?kgk0tDx)zfqh$pyjKV!V zbTx8YKNMqoc!Z+$1~U^Z_WF55izj<{B=DLcqR7_+eq;c-Mu;Q5Jp3G%(`S^)!BInp zNV|(0ygl;yN|p4s_DJhGBAwLJVECms5AX@pdZufGRr)j^pg*h9|JV-ws1E46i;F%U*YF-gCDx{)MyvyT zZtQ?GTKwq?Vv1HtE$xtQ?|^hPAFNUhYKQ8>4ya&RbMQtJ-0-tOG{T;$DBK!=ozcmUc)t ecR)&N9U_(nfRy*D^t;{ZyZxlni;%t^IsXs+V?L$; delta 26794 zcmbt+d3=;b@;6-r8IBM#K**iUwNJ6ns;{0`X`ND8Us+LKT|3iiubEamr@Fps zhP8I4Ja`5I{`b=7&Oi_x@pWwQ&wk>htSyamR#Q{k3Z8p7lQ#rb?dJ|Jki! zLOfL@u4^r(Ihr0Qm7#4!jF^teVa@Ni5qtbhQ7Jb$HXNBO7k3qH+kCqC-jti}d_Az) z5+I)F*u3a&F+#|1V}!rs$Dj_)>!QVQAxCWyS?b-knr?E>77+^X2g*0-|A&E&CCdiF zyMc~!Ef>BBl*8{6IdXT5Fw3fB;V+NJ2tWDqRuRec^5?ChJN%9`my+Af>fEYTl}&pj zP?m2KVXivm%57MtQ;^(;Z^078{5u9Q|InZ-@pnA%aSOTQ!;jM-E6CydNetvD;tWOH z>&nD85AdV9AL}+Hs8uWNYrvmMN}W|H$G+TX`9`?t=l

{H0)yamkUVihr2C(8)xbT8lEpdV5L^gy{NNYu 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 Z;%j#xs3u3rS;k9R|Er(v&oXLx{vQgLZ1n&D delta 73620 zcmbrncVHC7`v=TUdhXJ5yL+2TPXZwc(rZFTT9B%UBtQg?kc1>uLAoRmAR&Q=-Vsnl zQ1MhiKve8f6h*oU2v)H7_nESLo4dpB?|onX80MyY=9$kt^UO1|vzt2yO22oO?0>j^ z_2~MMX+C4}C)89}bBiXVjm{l2F|S~3Nlk^{go3eo(`zciY4X$wWAh3}m6R6e)2q21#>V)PL=$Q?%dlmGR5= zN)yMI#;@2qR>xK2SKOXij_by+#*csMxMBQi(&7`x7sjtvbzgE^F@9wYy6w36fbp~E z)k%)a#;?AmKR7NJzXt6)dhUJE)qYJfs_$gPSIYtKZLVSs2sUDfyuzGBhy49IY8dUo?(O|&wAe*(OlJU#M%4(wOqSUXZKQ8z4x73o0 z%5=SXm+D`V>sQxJ*753xRI+iQC=GO>3K|7ls(qU@uintCAFIhLoNc;(V5SG!D34qMFV6kzk6SQ&Hn0(p1E9*DHNSRcC=%U=x z@%a-*H!GTfG~P6|IKD-Ab+fd{>h8%Au7SX=@_HerdKE@juuZCJw9O6_-6wbSnCd&p zNjPSSK9!EoswcLbFI{{7yOzav7&SCF;`zw~?npdVGSH9kSoxsqB5lr)@AcTQl0cs8 zlcT5kjIQg$(^}>Y5Or6LYbs)ACUg_A#`z8WdAWy+ts*vKy6Vf*w$1Vpu@~olE%2UO z_?Cz*Eej0b<#wzH5_qpx>23U3-9*%Fy{3Vvk-vU}h}k#)=Ev*S+vzXrw%yf8#ESNW zi`=Sxzl&b3-~Xw=TX;}UTkgCi(#j71B+4y&^&ip3hS$PEcpHa5JR$m4c`i}p9zUNe z>fU!bPPChQb)1Nu|J*m2*ZuArjkCMm{D`=aN)cL@#_UeJb(P*T0lL5(s;4O6vo8 z>X09#$NYKp+AmVFC=m0z^a5}A;8oI2BsTFO8>4v9^D?<00NzL-l4$Ic2Bh!{R$%e4 zKp*F@K;OJ{{`37dzRvgC_`MO$e{S#R=iJ`U|A|29E7oP_@S*5#3ejA1|WkO8j&Dc-fva{5udHt$ECUm_LvHHP1hzFOPQm!2iSP zJR09Kpm|Fk&7Bp{elw3g6BGDu6CN$^8TeWdk3Kvwu*YH^eg4zH$ftSq+=8Ifd!;X_ z@SUq2&xAUEP7j_I09%?wL^x-+2@dq<(bb)TZN5BuxJz)CKpqY26a29skN%t;>=4nS zp~341^3>Sf!E0lA^v&0U5BTtC*;~OMhV$t7^TCt5NmseLI4bPn@bGg|xHBo<(#;Qk zcuzth>RU3SdGv$Umfs{E{iLlWQxr(*Y)K?M^}#Gl=Kvnv)5~&46nMJ7B|#LpkZp1J z^8!PMS&JY}{;1q`=LbW5IdO z^*EmoetbCqSc$bV$LA^D1p7Q1NSIzeZqOP zVrj^;eWfq>I5uq%5ec1dS^b>zJ`EuO)j0zqoHbWMf(eT~doAQ2iN#+1B4nx$i*>&l z@;Q&S`8wp4P?qNNM@V;n8aw!4=rjFUk}@E4ItSS@F!W~*^5meds=l zw}lSp<(}IS+TE9>1?~y`>2VedNecU942%7|G^{Zzw>Wiqm@{>G_^16?x_mMGI!Cu& z4&Ty>r5%ZmIL^~n$Ppj%SfLsr@pk5E5wn7%E3E%c?0;zhq|LEJI1e<5Xis?b@6-rc zL>r_>1c+#d<`D~hc!AR`BQ8rkdaQLs_V3co#W*XS5gAeG^Pxz?3HiYDQ8y$W?R_vx zB0M_68TDZxR9&>BIUhV0b=Y6J?37PNF@O)Mvd{2E-(J~OqBEAGtu?x zOBbl9@y^U&qE7_Dh`siRgVDB25{o$rvHilM5aeq+CpB|k^|j@P^URSp+i6j*vtnBl z!&AR%ZW}J51N+-fiUP^mwvR;c>CKwfs^L$)3PJo;0v?V(^E9hGmpV&TyN({1mI z)YJvGTLPi+BHJfA*kao;QTFOeTTm3Q_Qy_Jrainxc3v@c*b{Td<`$Jsm(e5JM=dF-Sq{2q>PeP>9 z6!}BZ<-wigmm;Kbu=OeQs0W<3wSeu}a*8z3NNDXGH&Fg0%BNoHG}!4Yj}I-$D=nQ+ zFfQ@)xf@caB|4pX^14Xp3`HIx!M`)*SolGehr{d{@-@~KD4Z$Jg_kwC70azIs*Hfx z7&(o6UI6`Kwhq-f?Sjb*1yB?x3b9s>#>weKErdI9azjajjK}p>75`a@J5R2DZNRDLijL2PL(>D>b5i2?PaR_?p!6piT&3kc~YTN$I(=-Q^!$2 zW2rm_#~+b@Gzg1LhO8%sc2 zZVrhLXpKm9Aq@OR&LWkCuyvRcE2(hc8ziQ3sazmE#mmhtlGB4V$x-8jZDYCIgSG_c zk_vghB)w!R5nH>2nl>nRYTnqy+>*r7@p*|k<8w>Kj~Y9nq!g|$m%B=D(wZ?qX}4HR znIl)ojinDb><>RljmVpYQ1ynKu2-w8wj)AZ|T=Sp#EA2Qf8zLI#{~s(qy4j8`P&&P5Wt z`XgIo`Ex1@n?YaD7@I*~6oFLFmWI?$enH*nzz;3|R_#7q_RWq1<%-TdLUL)tPb}^xcm`hEUIHa;6UHauf~~ zGe?0O5wI_tVNWvHmgITtW__ix0ktj`t&c99;WCg*VnEq~h1t|&(2Kd8hC4_OIt}DU z(c<^!7XQ9Si=7kXWE~2a|6nU&{sU1;s1{8oQ6(lm>XuMGJOw{KSBWuT=o-qqR9*}R zM%en0mWB%G>L&Ln(bcUdjWKoWSz?;evf*_E!lYN_F+p903bO@Gp&m$oWARIYtPSX* z%seWGkXg7e``V*m!%_K>`l{rpwAQIJyT&n=HdBmFN{M47PnkvioMK#!H!Al*_A$AU zZvmE}K8y^N$K(i7#3&G}az6f`p3H<2uH?PBCsTA>o=Fynf^3oLBjm(_%$1q?nmkp4 z=iZhFK+f}Wba21g`5ul8`Y`CoJo+eeWXNU)tr?z-ksJ1g+?ebV4O7jKHbdnba)wcZ zxiSM>jTx>Cd5zaHd<1e-^l1=;oRqIh=is}Oa#!-H0B3H@M`j%WG zeG7x%mLDPCo6CL8%LVrvCR#oPx$nq*VZiG+Td*DGxP1H$IxaeqgSg`oRm!ZEA(Rvj zS)bxGON+Pr!Qd0>SUUd#;h%G|MqQUel3L1bJu7GOS|H&g^yjlfeFsS`7=$#^7gXq8i&^{BQr%IBhoY;pFFbo1y_I&D>KFrePNTOn zQt*>e%Dt7GGx8s#jFSLNkw%FUi%R*5`u$Ct74DvuQ^{&pOf0K?Kf*nX3bUEZ zl4}B>Mn6NRL!X7VLsTHPt{$c_HVY5KyenuA!%HD+lPw>@GnEh%^#{+%4)UG{_03@Z zC#c}BT+*pO%i9{msekt~TxhQgrp#G_`XAl181?_2$DY-h!l^gciUtN4I)#s=D~tLt z?_p244^wy*7lgwX)HN`a%*UGH7rz*FK!VYN*Ygb`8Gj$ zqEZ8>`c_T^=H0Yp1cnXSh~`_%@LN0!@qyxBYCGamJ* z^5ZtV=(;>EU^?y2R!%w`Ig2C|PH{$P%1Vj6DVU?XZgOf0UxClC#L47?DW(riYJ)+KbU!pc;x z4r~?1Y_the)~dlfTIoX8Qqsita1km&FBseCOz@GbSs-xVd8m7eY@;#y%Z@)EAa>^v8B z79{^5e?fkj3ZZx8p5(6H6g?{WZmQV!&k=~XaTw@9!M+}HeaQJi4uYre%3(0%t{g)G zroq)vTQY>Nlmm>sI4KA+0+jyMrzQpyzi9$)o(qnhBIxkvu}}0A;p-pejyjdI*jg;5 zG8lf&kur^2kwwnLpV5&fJ*P3VLoj{bFg#*0P79<5XszaOY$fRccLPub*oi@zYw?wG zc!{|~{X9zWg+MB}M+svomLB_`t&|%WYQUYcc5~Xf1P{AAC%uV2klN8e>!O+%!HFk!`jb@B3GNhTNz<1gk2QCDI+< zX-Yo%R$wpZ)E}0VX7osk4i2ThcD^7!1f)dId`5e=kJ18C1H`MY{0p#(CLKc|ek~C}@A~Hdl%gou+g8aR=N= z8bAvO<`V*y2GTHAgH3<|(>e1iO%*Bgw+(g-BUn0JXMPHeG3KXC_h7ySEDly4CySfqx;f36e(aLP1&G14l zJ!Oy@LPo060#1GH+fJ$r$8oodX)v-eu3=`n*oi5jGfa&dOd;7=r;G=Xh1f$e8t zEy;!%%*!$3QAbA?%X&=CUtf6 zHkqgM&kX*&q7K|?gTqUos7QaAu!3iDFU^bm)Z5Xq*lt(nsu-0B{T(S@R}(`S(`M?* zm`-C%8PjK)l@TvE_}Zi4#fC~-eN|jUPZwe#rI8XvR!rp%%>#{;@%2j$U#1I1TZ9gc z;mfR`-p!(^aP5#yh94U#M{s?VI-xbAPY=*=&FiMbk*yMB9I-_~Yb!a4B8=v zn-x&tqacLCq9rjdCCNIfD%ja z`AF)7NqDobBymbXeqKpQVrptZp`J7WOBCgenega@ys^z{9FO7CmytD&75HDpPzKfX zKcPOKTW!XI)CS>pX%X)sJLcFcIx-R2ZK34B(;buntnVOqR6=2SHzl0x7Y`*)^~48b zn@%eloa%<>n#)@%y~zHV%n%r*!(i?{H67ZwQU*zfsIC-9PENq{{4h6RmfA>qn`;r9 z>qfTA6nx?>d-6YiHaOZw$v}g5FWkG{DzeSaet4vvGCJT0Re&2a`RspQ^!DSk3l#RIw)ew=R$dFjAWUr1R{_xg&atO@LR8k2(R;g-?s){2Z zL-YGWZJ=~SrNnUxgZ*X5`~zK;NU-h?i12d^MO?VkTxpC?K~O?rln29>VQ7?JHm!I@ z((zR!nhZc8ZiP36Q$Di44}w7F;kK0EelLq2;oX^jO52v5x=$}EEG}h__1OK?#C+WH z;Zy7}`BTQyN4SN>iFwoYAN1iLYC3G_5U&1ztU9n`xGGII4bCAU(3Hox89~8##|(;B z7!+3;6jypsJQh%~tH~CG!N+SZO-6?;9p37tJOtP<7^u9_{ zWD^N4KtF+rz;cAgcG4{;Vj@1&d$5nvQu@d=DCUaMz#u<&tH{)N%j$kgUcfW7H|NmB z#s@w@M+6N!=(xO#PZF3iGW9(wvVIc`VG+vE5tlO?IZIcmo*7&XgX2^mB6U|hCR zOzO{aqls=Unn8zw%1F{|7C!_^frydV&T$t(q{A$J2xQI@r%Ly`XR$^9{Xt4QGVI=f zdG58?a$g^NQPIqpB39Tk1lRm@+P4RB*EB_K3Sk|U0Md9CZ0)DCfk8u+8uIuo*9lVa z3BlQ8*iX7RHP-uLXw@o%v(*M?tIeEk!o?X|vC&x>Oi#e0;PV`%10J~0)dcq;>=gW= zTqT4!X7Y7vR<4pMR-5`y8Ozo46h8+|ma$wpsQt=8TfGsd^ZZAZhU5sgyhTYSM@1)? z6*`1J=+^rsF8q7^5IlQ~@)9{??(7Gmvo9eCT7U8d&vb2w@#-6nBsn8ifV6420$k2l z^2y&^4d~stk+|qG9Y`FY4kUrI`BNrebd~5;f{(cpY$;G05qUOK0#YkaXh8#yJf;Te zC2BL0@gJC-J?c?K@ckR9g9AUyDjciEwd&i+O51?o*+|}fv-!07Sae;2++y@09I$zc zIvP5)4pShcMCn6@&!$SDF%PbMs+vhg&xXSvsL5n3%a}}ZW}A+T3TB(mzYgas7JBy8 z-13QNWcX|elG}tO>Zm~dpddYW2ppfH^d;1}|G>QIQIC!Zm2Xr# z^d8uV6wFfE2Rui6bwP~Cc|q15IwDDs_#laN#?MwxNpuw}QDWFo#LQ8;N_bCrj?zZ5 z(&SSmXnjo&pG=H2g?w158tx5N)dkkKUksJ27K61lpjE&sz$GwkSJ?NaN(^9=q z=}*Q#UTYxP+Q+qzbGPb>U?=}^Ze!1uEBDg{lG4bQrE8+Vi`Y$SV)Nm^477_^ zT+7lagT2!Rd#CToUU(T^*I-K3xkBkquGMA_y`rhOB{qn|tI({uFI=p-C9y5P56oMR zE4opbG4|?KTT^`Eg*n2RGO}IA2d*T_6$*3b8T1y95b2wLD2r8}% zt{$jThNBK*1A?pTqCnal&ee5Yctg{A&(SsQei~z%cK@7vX&SrQf?N$D4#t%D0kAj4W`1tx%LnT39Sau&)r}w!Krf*&^;7ya_!C zJSW70+#(*?taOorR&T+B9}84%MqSI!wKZ5>-;z!O=DIASk8Q40edn7D2uoLj;QVG> zqSCf1vB5uyZvHz5hHO+IVg0W}SPf~;o_`azv8FhfsJ-2t{Ac>_9M#s-BsUGZFjpwN+^5h39rg`hh?-8sG(7frj1_Ypfeq z#*2!L%EVTm#69TO6}*V6Pa5sXa6G1?_um3V-y6;22dE94N6gBQGpw4|U^8(kLeaa0R#Q#7r*EWpeBMf>tGwS}_JG0cfm+Nm>rxgJ zCSaJJ3B%HJmoO~41{1tKAJ#~T3Af}I=8jEeJM5Ag$7wVM)X;o<$S^eZ?;3{Y1KRLO zv^IvJIZaK^Nu0j)@=W<*^ua&HAw7(zRG*nTcy1owE}Uf@A~ph(Ka--Yjk@AHs-<~} z^mGcYlCW49o*xd5L)BHDPAn*xDyq_b9Wd zW?s$gnk266xUV&a(C%u(WtXf_y~9eVRF5~3IL~51 zJHc-ZCkkn_`P`@_SZuKda6`PS5b+uw618PD*`a((UNg8~J-wzg{Djg&lCoW8`s!sG z=w+bp%eeSG`y<{>(p$uCvS)+L2zELoj3C+>Iw1+ZMl*SpoP$TNE@Fx~F;Wt@fSKPY zX>>oQLHc#%VAM&a2U#(n&3S@F^(TkTfNt&Z93O%BlS8sv05zerJ{suuPTI}$*~2SW zJ~aT+i(a$p9#9oXD^i+BC;kWYX|MIEJ@8#IU*GAmKJq`|4-k#5QeFB)Tse0y3q?tbKr&3Wrr3p|gVr#SjC1>`zF^w_% z+!#)uQqt*wu!oCm(C`?xfV5svd#GGHzAg*+NlYiGdJ}DP8Xu+f)=Cn|UcgUcj4V1p zx+Ww7zW7vWM%J;E40Zw$UhET0i{zhIPU}V4CeZPjGJxz`0Ea$Px{&>>#$;(P z9QZ(gH1i4@n3g1B0ow%zXNYzYtno#qsSd_RM9*BYfG-GFF5+d`b3!t9-MrwEGK*a1 zlJU#`n9Y`i`vfqpOP7T9I^S$C|1<{kFJmzO@-mog`-j>a0@+vb-4N@-+QZ8Be}7#? zr%Hi4AM49*6wLb^hqfhT{EbJ!Ii5Q5DM^rxP1xNCpy8TLYRC(AI8}W*+V6~@L%?ok`&Zh0FQ&0zf#8P zi0qM)o;7wMA47KWI>4r;NNah!Y#bl4;U%iAG(l|W*P@7YWp68xX>~e`xW(h#vX%W+ z+B-HUkJ1>MlSdbFpUE^S*OCw21}>)(59B+2t8}NUtub)tICy)A_znll_{9e64lQR& zWP>&Jd-U!9`QHf49Dax*(tC9(H|f9qptKISNX4$Rh!0PD(buyJxjEc^M|o6AgpAwz zBm9n{K-?m}#s-(-Vyju5XuN{NKXHNNB7HrLnek$ znP+e&;IG$}K&kKQ-<5LI5?BATME_Uw{*%6jh>U>!1_1{Q0uFd10FNc`-p!xN1LU|H z3v5CU`3p~%-s2s3OEl4yPUcpqEv|06vM3{9|5<6t`EX@0KHmRFNtb^121k6J;K#16 z8f+>bNAdAh2R4;aOzWy;YTJMhXrF!+s?t?3@x~&+J2vg0gQWgQVxKUbmUkB=>`(A{ zcZjIHND3<Q(bzBhOMxbuq#^$rm5`>TQi-7Ng)oe&3>KLgHB>1A;JUYVGQ5q}6VLJ7e(bu<) zzP|0Puc-%gUoAHTDLe12*I}XR1LR8~{#DjYKNuK+9la|$swXmyI^(Z$jgs_arcX=5 z)ixw#G3QRtVJI<+xdWjmQZlF{Qa@d`2O`x@{x@h(!eCyo+BB%2pyd*!r5*T1sk?(# zN$k!S-uikbN_~yASZq?O0it}yVmEV6y0BtGx2QcQ_lt^5w=kRPR?t8l05W8?uXIVU zz{noASXZp^G{zKb{9-SPh4*)bV|-Il`;zI4y{On~RUJeY2%6@==}^=$yeh9R$)rk< zWn?jp+w7joC{Oqfm&Mo^HG}NEH{dJoRT=##+u!Ta+~AUIg-fwW|03GAeT@F#L4u80 z$PT@>RT-y-O607W@gbtfDG$c4c`$y<%s6H<#)s(uobg#Y6^wHKGM(}O8e^0PlzE{X zk0&P*rK~p5cr-Z^cV4*-)dIXLa!o^uALJD8tFIXbw$LMskVLWXN;~8TZ z&v+ZgTd8V3`P^+7nMr=Bnc5G}3mEaYIQU3DmV450EdMkSZ)CG66I9Nvj*-eXkIggG zCPXghR?5g?(~shj2JW@!Ao_le(({LdSDUNd1HPx7QSm-1JwF;L=)O?~x%a6{NXK%M zT^c1a+m&;AZsbHUY)7 zJL?5Oxq^cU*t6f2wou((9YBtmSsEis91$!{(EGty`ov)AQ-h^XYq7-6$>JdTl zlpdcQ#3MU;SoTM*+KBvH4(FEQ;rz(4mH>FOEpngUQ0_tg#@^D$>v-sj14Q!qc^PP9 z)KU_?#HBCLFHQ|4e_-eI_tQy3p6zR^#Mi;^n0306nRSg~~u%Fh8#PemowU z=4{8_V=NTPC*soGx4Rrk53ah9woB-7RTt7;h`?6F)=R`O)fB&2(EM?r_=`B01-~Ws%4y!6bwL)MKI(NI5ut|jHx5%RT8p88SxJ`JL zL*O~OeoRGP zp7t(b>xAd+1D~Z-i%ho$!E7 zatpRs=ZDSB&P!29w$sg|F=oLsmof{66d&)WP69Rxc={9rMKjU$$wnOd&_oP?>jY}V zQa%8~;MxE*Vhc?tP!sU99luC`x4=af8-QusP<3k6~)P>lKFIcocW zk+dsMEal8E6zmLMN?oBg&bo7P!jPv;bXU$-`;mi7;mUlx^x+hAKX0b{IHS8INm~HC zq(UDe9~xsr{AZ)BaFDa1<+YPpkL@#NH=%7*o5zEvU$k+;( z$qcR#nYk!C^*|I|PS*R!jNZ>OdXE>u+lcFNHott9bV!d)3Cytz@0Czlw}%&J86_X;a}hlQ-~rC9q-D!cgxa(lBx32s$u zYCXQW#hONq#}_V)^Yb4on5P?_LT6}ed`wf}&k$kq0$Z%5U!~v&#by&j|NWUzjY@s! znC*&Qh9Jy#*=USS4BN6=wyOuI+eyP^wI&7gO8c%+AHaRYwE~qt-oWpL&F7M}{ur zmTRS8BY7Fq7U#JQxQUbS=6Zq3pIJm~LRFu;42Eq|o8iML)-F3z#rshc)Qsw)GXB*n zQn8HDPVLv@o7Lvl8i70&n}g%GLsfwaKWs)*xMLY~-l8_aC)_T?ZElGBU5I10s;R*) zL_Tu*?-JymPU>WXUe@PK`Lr>3XNiX{xTSFMe2bxzeyjPK z^Xe`&2{#rjpAC{LpUv{1<@(NojybKyrummo;sJ=fT;E#gdCZTXkfeb}J!bn*M0OIw z=KO)(YNvqjX_wUHd>B^?vTrQod-1V*@IE~0xZGp{*N7tRmh;mOe2du%^`6F^P9IiG zoPNxF8a>oOq9XJ4Fq=*k*fbQ~PFkCuW#2H^VAG^%xjs!M(-@m3lb6?;Cb-0}C-d;N zwAu^%0#d=*AZ5$hNgd=pq(-k^VQWIxaVlzM@b3%lcFTEjgldD92h?UTb|FqMdZ(gR zEe3bOtsv=UIZZgSWPoz!p|W2A|PAB1k>`g`OsDqGtXOi4|7Om};FBs1N;a|oBH z!T$j_+M^y@u@X^w(~7nKh}t?JmG)@p3Z}he8-c4!a1Rpqhb`6l@T+PUi9EK#q`Er< zOVd|y)lE63E+plwgwWax$JAq_O4MOmi`k6fCrx#cVYsnGjmJX`rnUPFf}b@Ae%1@Y z?8uI4$LiPd*!idzrk{Qt2k#w0&6|Sh-Tdi;>n9`knjp!Qj4r7H-@K`&k?;N&0<#4u zfXf*zc?+G<_o(1bQO2e4b3$MXX3C!@y)%J*(T40&cHVYhm54EXNCETL_X9~m)X2knlh`}GIW<*GQ z%pPA0GEqjzDtaw?bfvf+Eg*BukOeNt%OBQ;3_GPx(jmFWtoIW}}Dnxp_b-9d=hRqV`sxjQc~0#C<>%Cp|33(W$Yrx^PM2)Q0&EG= zD2R9yPa(4}s{y|FrTawq?i018Pf1P=RGyS$ApA|d2tzXiX=X;d^mN#2vBmh_MHXS- zQhz%f{xdq1l~DB(wY|ol%pCquDNZt87GivZFY?ki@5{&2l?2;?W9L;1Y{C0CB&Z6O ze~JfcG$p*GHmU`-KCKQX0aXI;kPDBUTIl#<2%HaIP&Y|Z16oVG<$RKEe8LYy%I6^6(NILucPC98|>>{scewnD9NG z6<@rnjwD4@Y~>(Wz;!ie!!`9GeBBo=)MD;htna5Q8HW+F(&1YA0T=~?>;RSGS zS!@|;_9dQ@@Ax0k&v~uS%pb~o`nozSV0INwk|(RU1N5d~qO^({y$-PPhT0jD`l71D z+*EC$iTHI?uIGsvs4)He+T!8+8>$k{GB8QkdKjqUvP*=;;X|AhC5-S;_LWwN!`s`xp} zh+AsM`frJTyo;T~vpe=mW<59Q-{^0vXKtqGK{S`x&0zTb240X!_)4{tKdPYJSLk2k z+q86uSgXI8TlHVbE&Sao$o^Vw+R$6Wi5~1!eT}Q9tB0t*nKxBC{PDHgpn3dC91rtG zE?n@}F+IIqdPchz>9r?J;!3(AO(wA`O=P6h7AxJGSk_v@QENlUMdKDu zs=+M&o8n0@6_@SovT2N2{Opy?yP{KpU5dgv3n|C`tRb>UvqD)ZSJ+$G(fQu`q(ts`;(d(Fo||y^-4Y$-Vr)9 zb|v4_<@~H#Byxz+%@6<9{DO}I-&hIn{({c_Nihy5%;Rv{H4e9b#kKW4fr%&)RneM` z#+lYLUqYtnMr^Fk2lKLiF^K-vAo^ENqLU!y4|N27Iok`{U;UvDmm(qKBi$N>R`ap^ zz(qN|Z9?;zHFD)MYt+nZ7Fr_(9{XEuh!?E>8@jjG`g9ol1FG@9Lp*;sFymkJ#iB96 z(XpBj#Rq~m3(AYP1f5s^Rqc{An!<4tfv%Wk)kAiz8ZYjU{AzeavNxe0LZLljlh#pf znjO=tjY(TJ-PXv`@07qFjqmo-D@Xe8QOF|IdD!2?_;1BvTL@r)tWsnz(AZ)c zurCa+3Xtj`}FbBJ2YUAp4ii-pRk9HJ2YUfCG#ft(@}Va25f}b zpgc|6+>OB$$D=v{!=*aqa~!LNNp;E`A7fUz;~WcDA_rxTDh$gVl%8@%O&O!5oKaH7 z=qP7YlsPC3<&1(d2km}2>w1}kcDtN)x!ghDL@i@IEoZ$fbI=}^JDSq&l{skF%2~I{ z9JEX2tUF~6+LdzFjWWm6)y}=a_I?uSJrn-4*gvze(eS5Zb#)>Jt7tF>Zd>h>m}=oi zrZIsH4~u0K;m;d1Z8!?-Xia|(rojjrJZZ#!q_IC}(4Bs|mBr{+T^(y_@TC#UD8`>{ zXt2PDF%_6lLdT8izy#V-F#RgsQ5suG^&*^of{z9*XfVf!(J$IL&e9;Beo~FaCem0j z4UQNwrc>J~6w@gdYe2uUbDpNPLe}RvQt0oVH0V!*wMOg)jeSdlHuSSGEJnX5=ub8gSnMN8?NypaU(j{<()T|H(168u(%9bF(wsVuUq!Tz zV?2Fdu8;=%jo39B`-%q16p+OpqOn{WY%^kP-d(3Z*}P-1S@d0+3>v&f=i+=C+f0Ke zX>f-Ib6B(<%}%C4sS#t7_ALF$CM}EQ)63>TG`K}4axsn3OX-f)G`MEOTGKngooG;Q z#OQTeM-&YnF=8JsqynF#zwwT=i1nhe0W_#IV)O!^<1HFQ(YsbGmP2FXXt3Leou{#@ zG-yIE1+mz48k<9dcZ`@q??J?4Fvl@Lk2>gG3CArOw4l9Xu{;{fr-9RmG1K)2{mD!h zi!GwhJnPY5XC($pX^cJ_bv#RhKa5y5J^vp@gKaD}hlWw~X@f?C5k`zYQE^n$;3Ff} zkR2V6 z2WlM4ATwM`gSoPO2EKcW&P9JHS|kON>*zK-5uV{36K(gEBp*0^6K{KEwj^!fYM$f| zr!T7+&bu~yfP`0|TzT1TBtN{v!*UlYcKkB{ZQXNQv0Qv%8oySbU~dN9?e=r{)WQv8 zpeU75L`$XNu4am32mMO`Rk#}Q7j#@-+E0(SZ^wJwZV>qbVt5IIh)(f@;2*)4QeaDC z`%Zi`>4vaaAOz!=R;dt!JP}-<$Ynz8bcfg`AXeg6^$-I7iL*!HZEyV(w#{HvlzqB% z%&i)H`jy(;$I$>kDTkG!XL+`3d^nIbd%;xy*iaunJU(dJx!j99>*I&xnD@5`7{D(k z05*m{3b}X9Vh|zw%@7dY5nsWfpX$MHOR)M8ko70JrCT=mHX@;`nC6g==5XoHn5*)k z<6n7@&T!tFnkpxY%CqowOWO6{JS%7LcPfA5E%!84?j|a~hOdIr$`bKV8ho3EzC4OA zyKQZ3-+}J7OYTvkc0Ru3gtcw>E|%^NvDVj^s;?5&7vaqnDm&iKac`a9+#z^-g*E=XsrG(RdnX>^(b}^;YxBD;1P>os z?GH?~-xamD;B#l%^An!6#SxJoW{u8+PT^W6Jl(|}3#(h$n~>Y9VBi?7H8&hLS3%tl z_7RZV(!QAZu6E_%Td*0?_6#`I#@-alTiL5fyg4_HA7M(3`oQ-^-@u}+;;ldY|RY54?mWxNJX zD_6F+_a#r5o4|L8MBCUzfvJfr9qdiX7IV>!=At`HMMFDb(O1kxo#vu=@L&kuu`?F^ z$XxWaxhTG}EsDm%q)cT0J5y0OX0zj|TpN26pMLnawzf14?oQe0NdiF(#5`XM98cuK zfQ23vg_d zx?xn!4UO&>=h1+9N-=H02)TGeh_8nn%}r&y1hK`H48ubNU!qziJw;Pl^8l=Hi6`?Heutf?qS z>DcoR0e*YH9v||dDMx~=7x7f3>mYkq>vdB)ew-(wLv`V;KsYzZ-hx)mnPj&?-NE)e z@-x7J2AW0_cMP^S@rL&oma_(|F>!C;9T;LCVBjf3?MsNV#=tu|6!pR^AFz>ChS}R$ zlg)5!C{cjD!|dI?REQsLZ((ikt->?I?XA63h*6rqGM)LYKaC?-!ZHT#o1P8)UYqE22SPq(N zFwMsr^uD>b8fm%qzSfi8YMjfpC%M(Q)&=kGr;bMY&wH!E7%)raKDnYfS)L3G9Ah6V zS?`!Z83Uh>wRf=oZcb(l+*t!N^6ceaDx^JXZ)CNsHL1B?VgI9c%}a%=%@sfR>rwlC z);MpqmW)F!tRBs_1hYBuW+m|D?iTRHc$B@fSqf@l z1WR5mSc|tM|6lO-DNqtPqcR?{nm2Jv3{bxh~%y1GaVC?^X>J$ z;mydm54KM8iWfJ@o+a>>lf^D5Yk_^H)hwF3BE)gl%w1#8|C|wpcv5TKT&p#@l5{Sz zr(1WKli9d#UJJ~8cvfgO+1|FEuCMlb+;V}oCWLzn>n@Ga8ol;v=(8f*W=5=y{Fh?N#WZ6i<-sIZwR!6vs2Kb zN31hV5vFFLrWBK!O`2-|OtL1JGO0S5*XKsO7v}nKWV-z;lC}McIY z&gdRscYZkwci-0W=GK@wQXfYLrpTPkv~c`7u7#czLgv`JS?7DJz_if40@uPCZ{?X5 z)++C&g}c{rEquycn`z;b>s(q$KVI6~o@-*KDQ5@!z=*8XgqsqIqGs-Z*}BvP_Rjyq z#x+2X2S2;JX@T8Jdg60x`sI_O3+$~jYx%b>uT?lu{`xB(mua^;qCaFj;pj=7qmDqI zaM&PxhJQSJph0?pv#LpCl7tbs)=4`*hnB+!5VUS?iSf*V;W3Cy6!|j@D*OwJ@(RXG zt#SNCq3hCRCmw?e-=Z10n3_-LcNGnm)8J!T?+ga6b9@R~=AeM(jvraP?ixG*#DjG9 zgVx3KeVRSRu@0SQ`tXCvz}5#UgM-CdQ+&2cGD&`+;!sH(Dh+~YIc5o%M2{L0mC+cL z$U%o_ildZ1UV!`SMf9cTQqNia*JGC0O2EJ*bcub|^8s^~!(r!K7=4SiQz01}(O9tJr#QqZ9 z0RL!=B^>ZiH?Ob_Fc89` zB3Y-Hif}KtYz3~!v(3qDzE4>X%$snp&;SNiq7%BpTZK!N_8}qW3c?bOs={?@tGNdA z*szJ;s?hf_*I;%n9)+&G^QzS|sB0%t&R193hZ5_%W>hrVU18Q%dvKHsz{02g$@R{; ztL%7ibA3H5Tx}m|y=ktI*i_v($N3sx@@ljN8wX z>mjQh+TqLwL0*J;T@?Ly4Hi8n(2t;cWXLw>n6>s6k~MjQuEs;KRWJPt|1XVBdP&r*tzzv7TmaaPMg-N9(wO_q5#xCJX$r!9JUe z*#I*(;sEA(;N*JX2&qQ8a1N{p&v0ixrU_v3P+l7=yN3>_1s| znWghaSS0V_c1BoFxVqK8ogCi)i?-PZT2GiOGm4ISbWPMhBpQEd1G6gbT@$4an!AQg zdh41fy2aeJ4X&hayE z6`>nV3dW|R|3+v09($u<~r_eqmnoF~7z5hnI_>{d9D@;&F54^9`hu%-y zJNdT2vT*7}+(5N5*J69k<}i5{Jv>TNVtg_;@(=uN*=uiXnoeT>g!rHBwKp>GnQzkU zWqYP|s2P_C{H@{JV%0t=A%wUD|u&S-ZnJ z*9=EpM3bcwnMZ-1OD-w1a`#%4gmL3=0Dz^Pm-&9#6X#r$*tSD&wE z^A0iRb&IKSmvwipc+NhOkOL<8SXXx%aClQykcQf2z`suK2Q>%nvt&~iwTNQP;4V-5 z7ww&8vuLIQl`q=ITF;wAVoOlMIa7+OG{)FDT1S3VG{IaB8eSlI6Cc)W)e;Dsg0)K1*k*ZRP(u(6qbynod4D5! z5a(I6PMO|GHfYlw#BQ{wCy*e+L42RGbz&oT5TmV{LPq0yLLJXct2Q7L=e$7;#&nOs z-SHeiaff4B19vp7IDEak<2h!%a6HFgRwwP#IY|y$5?xPPJJ&(Q!5>t_T-V(f2G0=t z(}w!c;4BsV6b)FXSUqXsvQqqs--Tvep=@ ztTh&6tucLPt+BCXt+5zw%@MhYKH?k)Und2(g~!9S0c6@Hlh;$#bAH5d=HH=wcfJ{%A>UpEXQ0aaBZ8t8~dPX!Vy<0jj=I4Ok-@y1+Z@;IzP8* zk4PaOn2Wm3kuB$3=?u7<{+X5!Ho-rN*7Kf~zPd*xAG=o1YHo=ijJQM!;{7wr%@?cv zc5SK@QfITP-(tlY6r(+233R2qgsig}tg%|A#Z(ETSM2p*Myxj7qSda_ksU2(#c9I` z)?7oXVY-b(TG*R71uCjkSETRmj*PNjpkj7BXTYlhFjmWsGylC=Q;@BEi;VtVQC9>$fIFSs@C&f?MSajYVb>{ zR(h{a&26SVZD~du=hlRGDrE~K?22s|CB9dh;>tJot+6TD)VI3ntZ$X++O@Pnw8#(| z45Pt=G#EjHku(@ZgIpSnp+Vjj*pi`TCymD+|IvMMoYg~gziD&q{yjut-QV6^n~>mr zOtDdB2$SI2eyJHec%PPKnN3A;ks)+qrYqH~6G1JsQNER!2Z=3%6dycb# zLzChtkJ zydSyAThAn_@Qz;h5LILx`(L7V@%_mq;7>w8{C`$kt%2pQdkXlwSwR1-wFwP?s&<;) zBxNQi^cN2)MaJF#loC*}TEUeUY%v`?hN8Bn;FSi)8h+BX%C`=`B*2coM%GkB!q%r^ zqu}56TGs#2&km4VUyg#}4%#5uY{gJhb?bDYgSH^S>=wB4bS)34o;;)3>JTlM9Nr{c zwZogJt9ETp=dD<%0}WbGgOx#pWi(hqgA+73MuXO@2n`z0fv8J^SQ^-AFpUPKG$^D& zJ`K`n;iee4P6=sa<*cDH)<~IS4sD@~p_en{a)w&Q5X%`_8ACFi8!~Ab8BE$HR6Hi_ zLPOeDXsiVlfK7iUEi=eWTFH>MF*Uec+#WPW#dXZwLfyUb&@oF>33^$>va}Y`HCWzL zYX+}mX({+8a5AE`jOv^!D}2~Ti|`qbI#=F0Ufc&5zZI^%7TFpqyW_O8ch~B}(Ow$; zAUmxD;hXStqoF;uM$oFOR!_orD2>#J9+=wM$HxYzx@!K?22&Pv!L0BHV&bGdrqorv zF|}`gOd@`n*aZ{b6;tO_#>C+Fh>cWV^fAAnU5JIEPw{VYU@jAL`$)Mb5cKaKXf( zz?-@>HlN16qOlb;_9cyNps}kowui>9)7XnNc7w)F(AXC=c8bQX(AXs!yGdiWY3wqM z{YqmOXv}vT#y+R9_-%DD`WcNjp^2AhtPRGdRQQ$_jwzv^0Ed4%#I%LbKH35@%*2q- z;B9908O(S}hn&we{7}?@mi~+*{H(s1qQtZz+1nuN;ndy8@b3k0@c`K9 zYJK2Dt$%fopTdRyzsdTRMNVvkjOCgT;?V)Ha@h4b7Z%6OMfyuG0pw%!f znmEiY>=>rSkZ~R@jAbcIP#u5{C~O#xb6}YnKzb;GM*$ECU zH`JsR9P6do$QuH6(|TRMUh_abiYaFOdSt9W-1ji5;+L+!0FsWm16J2>swdL+a>q9sed5YdiV)BuZ1!6lXmMbG<35EIVUL)rlN_nKrEgP6L5 zTAM7qaElntA-pQ4G34xv35C$nS`dWiXbtF}KciXuBV*!B_zh~~>+^tV;N>PHM&Lgr z@Q1nZSC7`Z;`L$!)TGe^@l8{mwcla}z$4?dX!ro%(+%Y>4)VFXP+;QUWH4k7-=`^% zeJC~#631%M68@DYFET$yQ!_Xx(~(BO?YwueskbI!Q~L{uAB@P;!pH&9#y(RUg(s1h z%f%W#Q7XVyp!1_z1pfUQZw=wc1iUqrCHmBuTo&*bOz^A==~GA|JUAYaKlO_Iv3F#o zeGFtiK|)~d1kDN`b=TUmzcUcHlh1snET@Wb7+In3-q#|C-%fXfLUz*mn?+3AAn+{G zW+zh;($WJheI+)zCm+$8d!VIxqUlU0kvsu8+6=j@Kq1^3B=Uw-N!W>B<>3w>&m_2kAbUi;3y{+sNr))Yy5KjFTtw>%*NL3; z0DIjNOeeJ|`Gd;`cfUmKtb8&i36RI;tLNcVKGHung8bwGcgF?CRxPxgY}G;cNvy9a~6Y>hWyUF!OhlLNot0@h^>gT+e_ z@_;+!KJSpsc3EpsRXZJz<#rbT3^9}XnhPAzh6yHEF=}b0%kE8F_+L#tyvrv9t}fH8 z_=gYfOhT?hAtGPv$>+1H3091nU;MjYbxX7XCdLD4g?ljm?FwYP69;Z@0xozF89#MA zHXcqEAZ8nP%$D9U8QGh<$68^iB06W zH!<3K6FT`x(i#qo??=?;BOFjg152=DE8Q{i(>mU$U}C@b4$iRwYqVfU1kDfnm7?r# z@Frd}HNlpCD*Nh7KHM@(N8Ot_{C{XBM!L(vzrP2#KeStm6X+Xv@LS%&xks@M-NJ-D z+>wig<5P7-DcY{3LiTSyR+v2l$+puh4@XW0X_nT7m}Vs-CcY((=O)QF2$pX^W8YW6 z_jbXvd6X^rhQWl5h~C31de{Fz-yDtT8#W>O41qq?4ZYHW=+ibMdWl!`BJb!-7vF8{ zYlUaF;A6oj1v>6K3~F>`Yz!4!wMaY@_D0P{4|tvLF!+$dThT(3vjYB<2_BihUwYpw z=sN}|Gu&uu-3@m}C9aGEcH()c^(j86L2&vBoXl)xVBUHBK0KOCdlDtbH_K?2n@i*K zlwrW{Jf)3<7Q4`kX(iC^GodAxNqY9%W98~tK%D=$M=G|3A`*5 z9`-o}=DwiC<2v9C6qf}zP~Bg%!23@0Q;!`)e{HfrE-)eEBGLoRzc)}^4gL#MBbx-? z`r3Hu@WM-|oNK&-;!5BK>N4zGqW!|Sv-++;e#?Z+Yyi{!cA&krsfMuolW6%>~MPtcJN_$tG7j^Wz&00$mm0!GzJf$xrKn$*`Fv$uCl7s30xBf;sf zAu#@_QYtb2^>9OC7r)qkAXrXlHfe@?6H{w9!E7R0FL#@Wd_M%oUdOHdOT3|ju7+?S zLPv3sUkq%21G#&SHDU5*pWSO1LtXM{*!!jyC4J7ZuDGzE@?9i+`AKB>BEvCFwDUAU zFnn&WVGCWe?Z{g=+rpmVTQKW0rkw%vA2z*>kMMlm)I2`$BadrGbfPZTSXJll*7h9LPmgKev_)Sl6He?$<(KNo@kJ|^w-^7jA z>1TDfOy7@Z;+L&4)x#r;rm3EKrsFmt_v03Y9@_Qv0-6FFK1Jp2<`p^1J2D@O_jWUt5t-jSKi%pLpTf@UW>L>pU8ZLkUV>HkyNmj~u_baD5& zNFsY4vE|-KVy}HEwbYW(TGA3~t38Mk5lc}@1+}H3s4ztpUA$V=Qc7*Ll=8OLT563Y z#8yj6t7z-{&6&CL%(LYEzVDxTo_l8IH|Lx=b7sAF&VlETd?GLTzafV|>lfm-K6q4? za>%2Ug|U7`#AxzopC#@0U6Pv-2C$rJennZ$i|F?MmE}Cq%5k$sQzZW4Wh=t*m(L>q z@LeP-q#t{)8B|Uq%&K3r$;V(qaX;9dfvaLD6<;JkpMiM2M?mkf0|Nti6Y{EXgSJ3iQ&BKkj=gsmZgl4&)9Jt~^1M(F_~yRg+p(|mqnhvM z(Pn693u>Chjj3K>lm8c3(n0^iZhm%?1m55R?qjU;0{zMbO0^9IQf)t8>n?i#U;Sg) z@(O0KaZdu@mcVBUn_Y~XUclERuqRLxKeN6gn#JW{JQ~GTTt>f3?Gcrdj4l@hA6+h} zvdh)rsF7y`nAIF@1zal)4nCtB`dMFa@to=nM>V`L(0m@ZRuXrkG`M$z%mI!OKH<`R z!`a-0vzl=M;mis#gYl_W0$!m3liPqr$BAU2p>S{?`78&=oC{>TT9{eWaa5om($Ix7 z4mVr!FOB-p?0(;v)TtIeW9W~#Or-(-X=?fjVT^7jkyT#1f zM%DGybvo9I*4-`A>}^z7@7boyt{1HlRZk`gU*XdswJl*r83Wb}kC7}fF@FkWVI@u6 zpzHYAVeI<>CQFYtD;t-+&@L2!_DLDD zilaC?`WTJS$vXUFH^S5yv!f%76TBK>FsI5^0|BWfpg^BBkrZdfINAyLL=7He>r!mE zqiA{7x-7cK)~5fa413mhzoP%qEN{fEG0jBAErc#ehE^JCSj4Ep9sKaU( zG4;`3&2P2tnbw*men$=8(A`Yrj~thZL^nS zI%U@;_wVo&vO*_)t16U+jmPVlRgKLOYNG~)*3kp5g^Qv=t#yYYRe?KFRTmdDx$jx^ z%xcE(68f$NEe3nJMe%wQACdm%S;!5o5DgS&L!vv`-G@cP*wEXUr^IX&m0+=m;tg5h39J9ej`S<`q~BI8P3cVt*pPwWT~)dR1E!h>QO zN2qT=iL)Ir1KXrXZ-`4x0(f(U^|*(c)3w!b+VXdW?9s!N7l81>optI2$fdpn-?k+Ne2#%b5a$j zc|r`xA7B&rUUTyWj7EKF;h18D%pf8GX5hC;)KeiA5o5N398NK3`nS1hu`&r}I4jSv z;{Obf_Hv&82nHWR68$h(-Ig%jx|_t_uY#pfGr=C&9vH~(eG^!OjvHVn*cWycmLClh z(6DLz{Kw8fbPF$Gz}8oC-pj=~E&ka>1hZFK!HB#2MDOZ_PJ@HA*643$OJLklW~&4% z*P*Og8?%uE*UtJ-1g@F$V3u6z^tNUdV~d1?K5RHznX~yU!a{Bb^5Z06c7soJ4A(u- z$wPelGSqxcqF-^LW2-ilar6a!@ecaKmB78^6E{cUlGz{ID4GH6&8|+ex5V}sfW%@6 zlsi=naqDQN7R_Rk;J%|I)qRtoB&Q}Az$5&50^ji-x0(i`S4`8zhRkNJu*@jG_0k6DKQ;`}O|%dE`WbuugB zx&jZRv4j-O+Fy+-U5KwH(2=)AZG+0mqhzaH+&I}6oza!8A`Gp8e@0T`xFg4AYxji& z8h|B-G8(yM!-(K)w(bfx&r3GXNH+27V)KP=VDnecB92oLh9_L&YcQ{n%_Mc9z|9W! zbWl(fn>ZNGC2+F_8sFWl?7$0TjolnmVNOW!03B*H5qL(U&FpXwvn>C0v6tA>eAe;2 zC(?7ikm6adUXXUEgiGBlDh0nTxDLG`?dzU!1AN2v?E~k(RKhKmaQJn>b?b}aAM=FE zR&e$q6{_UE$!0O*r_IXPoa|t-S=zCWvTNhEJ)70Ijp}e^KeLu`Te5LevVmV08_W8e zRUOwn*|;LuxP%gQlUP5%tbs?d2$25hGT6$t`8wf}BiaTbZwp$!5e^-!wMzXCA{ln{+9=0NA&9GZ?LW1Fmo;wJw z;B61|w}9@lzPEJnoWW*w%sn~Z8u%y$PQC$Jwp$E6qlr@&+(ou3-UUBcrmYpyA^M*= z7h-U+@Kd`7-cLnoHMn<+szLI~S=WL}_=}$ZHU~&>++>pz%vOMKvJ2O-H(hhKS(FXV z3kqXX)8Rd@@o2Bk?~0UQi>gpDe0~#oR}V8SIK>W~P5#nBgi&%U?aNRJ*i*v-Q?cLx zw)Qvp=L+qyEfcxbb9NZ9Rm=`AL6!2jH^KWqQOvh;;kVTAT@s*>P&Rj@=``ZK@S6f( zP7<+O*PhLI!z_oD0L5{-hM3kGTkEkiAQuoZz8hthG=_K~4w4+FY}FOgp1nUB^^aF$ zZCxzUkkMhcGCuHvTHq6^9b5aRSpidi1+`y;qLXEl#-efV^}^fj!XxW~@MLXJuH6_( zx#u^Qw$H>D-bVeMfn{EP)($ln!$LC5Kvpw4xF};E;egz~UgbQI<#^&gH^D4t)Ru@f z6rz(4)^O@M!^D+QZ<}#O)oq?;P}3r$bQ)GZE_mUb^TwHc!hDr=nGP|X+eM9rZMSRG$!yE6X#{Wg zRDDrgm&y+&dsb%8nOOE{Cc$3Nz|gRp8x6g1>U-nRuqyps46D*4&R`9v!YuPSW1tsK ze{UR8(!eZ?brwmSg&L0S2%a_Odx6b$fl-TqkK`?ajca4pfyeR}qq90!wb2=WLCH9^ zU38ekf0v^(;{+i+uld_wKvCN>5OuKeSaSCexht66gxP<;1T&1Z8WCav-FV=|V?N=~ z@DPLZPORB7c%U9dLV{S0!e*FJ{(DiMao-D28lxXMZ2Ga`fg$C@Vpf^&J!{qco@&)m zip9Sv-lD;RdM}o~z%0S$Sb*&yVcSXAwM)#ZJi4-x=mpl=3yf+c{Vq;OeZJ5vZ%mY6 z<0Tjd{*epwtn%zg12lxOUVx*01Md6)BdOIAYn3hUF2X9sj(mW{OujK=eC7rCu@@l3 zonoAlSSMUUzH0p9mHV()Zjvv2DMn&Nc8Cdq!PbpM=eYA$R3%1>il|r23YMC=8@oP1pR+)s;eI2f z4eXbOGH4^54f{AGmZ}_Y4|*_G|+>dhf`QyReD*yjrW^uN)d7J4K6c|1w_731rEc zG^Fv@6ym>ADTGGWi@(6gx|%Cn1oK;sw-j;tuFR_q11l0y3}ee7iyRsg&OfU$y=kxG zO#0HSjRQkIaN4-z*h41aXzSt4`xrO|WAsj8vm<$Gyq3}fuSYfnoFEtb=DS2C8=812 z%pRB@kcIr$vygkA;}|#Vi@7A`Q8G%J5+m$GuWt6r?uHt>LTSxC;-GqbK{O+Cgyp=EZ#9KyGo zWpFuyFX7h^qYj+n{6O?Wq|X<=hdy%!>Mx7jP|3)E8p|s0fE&d3XMCvij3+9s6t&)o z{v&)h89yuZp&M-2E;G>x-0j&<`tKI~q>De&8@jgga%rTAz%v@{rty?eWUV$39i6br zc61FY&eDE>BBy_Zs^<%`nl_*F1>c@c-GlY>RLN+YrR1uQnUJ|8AgWrdWkdVowj56^%rR z-`WG8*+$Ta<$W%zOY?&`QdA%)PXBig!^UPth#x!jBHkbxE6W&NP#LDk(O@}*7%38Y z2rA$3|Aa5JdB0*<9khok*a+C8wZMg^%tl6$J)Z5^ z*dt~$8b|b6Zq8|Vp9T`Bo(_~WRmwYmM|}AFrl|q!t9@pmQO66qrZ+VCimPYQ_EIEt zKONfk=JCn_jZS?RLXG!*{v%$zEF(Ed-b~E?C1~Zbu~kv6@|+F5iyeOmn41* z4c}$`R*{I(EaV!jzqwC*d>qgNpZKqO9jiufNaW!fa_ns3JBuy6VV1z2n=hVI6(;rS z7;*9jjF-^)kjgb*UC}|?q~o8)FuuWiRs72eHM^T~H{ojzrSB$uxmR`U#AxH+FrPjy z89gc(MRq5n6{hn`gNm^U`FKxh{&1)Or&4^V7)L$13ij`HA9N5$7`TyF{#QeObO#Hz zPh3!1NBNhFJ9yrnEN4JOFsq6AFL3C5X8u7`ao>(+MaHXWK`kuR9T|ce!Va#JAyOZL zmgNLF1dYKx&2qGTDc>A#bd!8_=4mA25&q^OBsN*E-?6-Ux-um0=n2~1Hz?_{!vhTA zr%B`~8ZvbegdENy@D}nPK+f<)p5Pl9?Dk~6zlaEDv;M?{{Tm67W0&rXhkO}Pjdhw2 zWSpCKSH$POk)h!+#s!IYPQz2G9sUSg45vNeP8JB)i-qPz1hE%xMTHu{`$WwbW$|aw zY{{nZ;z}shS?r>qP*&?U(h|pb!|Ie<)fHm#mtay_t&R8_FR5Eroq8_(<)mGckh?lrMObuZKkV@Uy4NU?0M5#3{ARcojZ3DQ0a z(vH39Z^al@Bx)r#;szSt+B|H~(>pckFJU}+WT3MI>m6VfXWcJjsLMZgK|4G7m+hUM zGW%7XP11A&{%A<5o z9K;FI6Ke&~5r@)|RwW}|f;JVP7r($aQs~%#3pxA~XDCbg0sgJACwv2U_}XtqBslgf zwcE{{OlorpnABUcG~6`EMWE7LcA7K^bK>R?u{*Z1B+mTf8bo(tMrfs>R^8zDl(Nbh z|B>*YYVaO_Hm&ivoXAESTN5V2QY~U3S)_7gyB+9&3`9omeQ(2=Zs=qOCx5;2wJU%Xb+xN_ zgU1k_JOS&e5k=8W*srmeT_Pi-np;TR<{B<`y-3X=3#(bCqlt*|0B+J#{N4Om}HC+#hjsEZY9eQw01SXjr<-zp(PU9!WjU|XbZ4D z%_EDj@CM)yH;uR>zUYZa(>Z+PrUK485!hJ8np3E+*}k=@{*aHqsM~1QlPb zXbh`cB_KajkcIshB%kE>X|moMqsj=;pQc5IvKL+ew;y}rFZ0AlQ|iuEzZn_GhBtxy zXr)}6zbJes@1lz@Y#-!g&6`?L4qT4sF8={fL|gt~c6K_<a@L@UGyKO|~0gvHg6`X@7CNk2#8uBH=cP4og}AdlB8z@HQ3 zUZKl7*!l{=cMMS#^!{TLSwthP2vxpD*Y0jC4#HTs&Yaa|N!OkzS z$~&e}seCC!bAwY{tQZ-G)W8h8Yl+4tJoA+ieN$r?Lullb zOY+3;M?Fx7BRuia3C}(tn`kW6S-9HMD&<&ASv2t&CnOlzNGVr$sH%4AIa~KeP8_!Y z^IFa=Dklw_P&Vme$YG@mlIUJ_MZNlVLA=Rc`Zmnoyk5tyUt|zTVS#$fog)k z=99^p8k4V%2b0q%pT^`APDsE)wu?zX`DF4Y5>2!!8(VbtHt~!e>=kCkGtjecAWV(N zb;P6U8ypuk?lw&TcjqaG#vKM#oV#Dyh{0AFdfS0?Ux>{cXzRYyBus^$ImWjNpVx9? zQ4~3iUw;uRcqrPZOs6KZb=yjomF}Y+$K_)I@y&Ik&M~n|Nyg!vYQ-8gMM0WS)j-i& zmZOKp+jo<}TQ{#Porw}}bUfzfIItG!607qxWF7C7b*w8ZwH%c0Q?93(?Bpz~GRC^@ z60OlCTA2ljzVIsJKcMImoz&RcJRNKu^U88WvUSiyqDNZRm)}L!KfSWvcV#7sP`Xcv zw$5dt$4l8O^Hq;)?YJ`QFw8cGE%%Y)2V2GfHIZ zM#2Cwg9V^y!@#l`B!=N~=o!un&yCs1LKp~&_j2TiuouX3j)Y>|O5X>0-;=>P#Gu_Y z>ali7r9-95+ThCVWTzHlKDo}5%ddz_V>MFhr_l~G%W3?oXK(xgJpFOc><|D#>ea!c8OXCf)MHmP^)-jeX!kqe{C&mMXK}vxx@?fGlMa-z8!NvQytJc?Zk5K7a0bL^jdU)J)Mq&xOWPgF zC<&4E5nL56qDKx5BAo~lf+PYrB+;`JBc?ukv$fYdT-OGCNzgB`*^BJ@#)S&*vaKZ9 zXoBI=$(Jjzu=cYnvy)Z$7#;e4&&+!%v+U&f%%t!wTt&eqm%`l$7h7S~;LZtG>o9Je z;8zG$lh%YM*E9?aI+^oRtG461XBk%|gZzv1E%-$PS^g>Mqec!+c_TYD1h-gZ1rJW| zpEi0x%D};CoEFJx0Yj6=4oDe3YEX8fk>%e%dHATo!_u=;`TZ9xaHS)$QECaEEO2D< zn{JVE+vk7WMij=@O|lyxSfd7a8KTJdOh^f}cri)|4%})oU3caUPx4!bsv7w9(7>nv zv8p@jQwf@5uX|GX3||`P$i?u`!0Vh=fCl)TLsA2Sc``Q*{J&jD)JxLtnRh)l zt}ec&)$9w)5AS?J_*UEkoov|`*r%LI*)NON`$b{`U44;QiSE5f45Ujh5<}?5i^K@J?jkXm?z%{frHd}`#BaGk z9KYfsF_P}LNGwm6TO<~yi!Blh;g-7aHCBtlydd_$XO8-<=$?ySxXW3;$_f`${Qutm zbbO6fPF&!@?Rjo$J}$qS16aD#Ly+!!lm74~J@h6$@+Lj;CjC=7#jD7t-pL$Mu2geL zYR;zMkl*CxdUCowafMLarn6sJtsNDvoP?HcL)O%*_%}cM*~$Ed5IWx1F7*aT?NV=^ zWUbd)b>n`cr`r_rJFD8I-ogLO)Vm0At7861_TgGg_b;(sYq3OpZqws@;tL)YFRxd{$Telv|cDd}&_0~s@3v9s#JY8dFHXtsCHTc#_bDZ7u z*|%1ZBctYz1Z{b6 zjR!Y)Fnuh7nLIGZA&BO|y0;Ll=RwkV1S`g8ApC^?Ek6N4MIQXigJ<4Gu#yL>crbV( zf+0M(%!4aD=)v>$;=%Gs2tMXPxycAB@L=u~1n={p!8-^V@gQU>f-oK&;lVEmGE&=2 z!{0<6?B>B99wbjk(4PlqcyNvf<7OZj&x2Ak5k&DImj_pQFfbFrARc`FE`rrO=r9Yx zt2~IzLQsMSvw1Lw2Nh={sGP>bTpnEI!Ibw9Oyxn`90cWfu#*S7c`#xgf;V`O{62#I zJP4SNAP_+cHD%ZUzoP~}++=%Yj~<<6q|)UysrOH^Bi~uE8TVmUZ)azP3`%~ZPs)hV z$-JKsDR^VdB=?d@-X)WqOD6f2OmZ!m)-T;raxFOt3305(AYb#KRmlfgC4g>%X46lRZ0Qe+G90Q4>k8%3F=|& zUaN&J(wepqsc0h0zmAgt?f2q+9(>5zPbClfQL~4h`oo$ZHLX3?V-ojix>&3~+}Nja z-*CT`pmXw|131}-GjocQwUvsvIQeUQ8el6Y|A0V@O2h;*y=4&uCq~xt?ugK#9^z4dU*bb)l)qzK4PV)2fw3M zKlL!|sItcE?7gGPPOq~|N3E_ZS+ifP{_5fLU#w*H5OGX<7^gp6I%aiK$(kS60KPb` zaUFER8mN+uJ)v=Z_Jk&B^OG9dvXfTd+EP2*ZbnT-&}^Emyfye|E00Ha=Fg`>*@&HJ zJI%WUR4As$Ugfdh&gR~-`20K5wXcT-*vZ(>zpCoL&dQy#dMS=)oU%IU^~h!cZPjd> zl|S)Mp*T(}^SaKuowf!jlpju8JxxuZ=xk*B7XfuFSshq>sbcb%rtLMXRYQug68JihQ`rvMyQ;)x&{{%IjWb z#V=_woiACtxKwpy2|QYw(6>6X_r-@SJ}GDR=kRNblGa89vbB;zkiiY z%(WV*nC-b%Gbtq940v`wgq-zX;ca`(4h~_pu2{uY@|Ukz_0>b>6|12%3Cg?b0P-$9 zWLHf8!>VHP*!3%l(L7fDs#0?vn|RggEFtsQnXAgb=CNvds-E&#MxK`JY@YJ3dF;7s zTCy3}td>$9y5F$VX)y8M^V}mApFeaXy+|6TimP(n>L^W%Qm;CT)LYNn63od_63`Wi zZF2YkD~io-6BaEoa#`MWRiU}8<_)WbiWzr9bxpbK#~W5l6%%n&b>z9M*G=mM6|?-N zs`p%W@1_Rb@RkxYmu1~j8q8(qZ>e5@*vz{NwnyJ%HGhJkzKvI(Y$MHOQ-4z?lFJVK zrj(t_%G}nN9dcWP-=;r=+)B3YkCc#)~rJ=J66viA2hq$T$>R&L%?wn#`-iUTR41m=u1 zRQ?tJqtej#F%Y1CL zl9rgmetoQ*Zw`xoVl~$xFSP|^R-y~i$tLmB$v9GG4@7g=7f&>}zn-Yt&S9k(Ey7*t~rDjqKe2CJq z3*a6hpyn|;)xwOE&qVJABeDV>vVvY2HehsG%8OWJ9hW^HQI}ZEQ>&!^q0@YBdX6>0 zLxz0dh(BOfIcWBv*>Y;y0wgWg56`Yx8i#AKRWROm#ct$7QxU6%s;*cXsmj6yl7lcLI%wJznJ=*4-N=U}w#RWkF3Q>X_Q0TFy$w1TS2Q^(5q)97CB^Qw1y9v~*rp>oj;|LqcSP56oMj^% z(IrdMy}UDCb38LWJGBmeQcHKI|7Y0>6&)-{6#bzceN;uy(V|=QkhvX(4PIZ6DEE(c zbZr&AS&MGdQ|3-q(Ju%R-L853!9~qsmq916{tL*5w zLN@111c`F5?<;e6P|+&|iK53O%jn4}daxi-^dmcZor?ZVkP-$$=W_Yeyed(cfv& zO$W)`jv_W|wFQZCpSPoHtLP(w)HxM$ho{Nh$tt>#AW`(!cJw?I{jnC^Zm7(?OGU>E z66M}!N9U{PEn4)zbeTKO4=tLS!E1uFek52+#>y?%8g~<&#DAi{TLAqTtnb?C?`!Fw zEr7mEqrX1_%dW^w1?+c=aM7EBE4zT&;y0>qe5b>W1Sm90okS|tu!Ya0n(@Oj&`rG)Q;Va_4mLX5eU||v5POsD7 z*XYy4e=1;O0rX1XO5((&Mu`W?kmQPx^sJIBqIt=Z8QH1Z-%^=U*NXq|oq=?D1<<>U zccpJH{!{uj8hyD&KUo017MAg+qkJ;Ra{M7Xm4IFo|8;r>U*iu%U~B0gk%s7X3!s0a z(LWRaDg9ZEo}ovK#;$=~z##FTGAt^9en+EU($YJH@sj{L{dJArUHmUi1R?mWluCc=enpfL?R5D}7nzm^vhcMQrM5O1=HyxZF&a!iWKoc1uU^6T=Xh@|LR+8XW2lj#DAja6hQBVOm_Mt z@t@L9_n>nxN)fSHt_;P*f1i|0KYs0_fGTpEo@_LwLtndJvlEBL0(e(dh>?`VKAqJ#YH&^H61P zBd{4AF8&jJrB2V#B8I;2%FtK*rwj`VphsfQ(JsJW{HOFyyy&B`^~h&jS$=8B{Zi6s zuQ4m&^_29%0qFx$#%8BRpJg4xqx%KNo^?EfeeyvKQp=uYJHw-6i&X<<(Ck#Vi2LEu z<&D~BS?P%Ave-m?LHzWIh_>p|X#yv9@KgN}%*akJbgVz$MNhr?4U3BjiY$sG|H1lR>Q#KuJh}q*)SEk_W3i{6 z?2L}Vp890|bB(QVMwgAHx%l}Od?wjt@PL$IuZ|j-l01|b@_v8R#aWi?jIN3aOjxn# z=%KTQaS|`-{$S(?9gs3ArT?hv{fDKG!YLn~X}}wHiU~-Y6(mz&!*&pl{%DLH-5Cj8 z(SzTh+zIH|1^%2d4t6Qsip)T!_2^LrH5Kt$K`CR04;wkE`k+xm(>UfuxFQk#DH3J{ zr2(w^8~sz#alQ!AhtRu-=%Yx8=wZnNwCF$JH$?OfB+LqWBY8|p^}$1vUl+OiuA6Je z=OHEHho=o5RecOs6-WOPCL^+cjD%T*M-9e%*r4Yu2K_SER4WF$TkW;~2yuL?JGI{u z2U{__bO|nHOGQ1nl;`M_GIV%a@+d;HmLmt>6;CbA|M7!S$T3V&)A&Dr9%x4P=&Zox z^kL~PbA^c_k_Urk!{{sWr%Lt{H`3HN|)6A)+e?%Gg0zzzJl_ zGrNk;Oc*>zozai-IQYDYl59a+KpuDd2f^LkL2x&45Zp|fW4K#02(aG_SqwK|P~1%x z1a~6^!QCoBaJNGc+zk)}H>=~NXa-jf76*#EnSr2N7)vV|-O*TZcGJ$1(X}1_2OClb AYXATM diff --git a/docs/head/_sources/cli.rst.txt b/docs/head/_sources/cli.rst.txt index 54d4da26..64a11446 100644 --- a/docs/head/_sources/cli.rst.txt +++ b/docs/head/_sources/cli.rst.txt @@ -143,7 +143,7 @@ Detectors ``detect-adaptive`` ======================================================================== -Perform adaptive detection algorithm on input video. +Find fast cuts using diffs in HSL colorspace (rolling average). Two-pass algorithm that first calculates frame scores with :ref:`detect-content `, and then applies a rolling average when processing the result. This can help mitigate false detections in situations such as camera movement. @@ -214,19 +214,19 @@ Options ``detect-content`` ======================================================================== -Perform content detection algorithm on input video. +Find fast cuts using differences in HSL (filtered). For each frame, a score from 0 to 255.0 is calculated which represents the difference in content between the current and previous frame (higher = more different). A cut is generated when a frame score exceeds :option:`-t/--threshold <-t>`. Frame scores are saved under the "content_val" column in a statsfile. Scores are calculated from several components which are also recorded in the statsfile: - - *delta_hue*: Difference between pixel hue values of adjacent frames. + - *delta_hue*: Difference between pixel hue values of adjacent frames. - - *delta_sat*: Difference between pixel saturation values of adjacent frames. + - *delta_sat*: Difference between pixel saturation values of adjacent frames. - - *delta_lum*: Difference between pixel luma (brightness) values of adjacent frames. + - *delta_lum*: Difference between pixel luma (brightness) values of adjacent frames. - - *delta_edges*: Difference between calculated edges of adjacent frames. Typically larger than other components, so threshold may need to be increased to compensate. + - *delta_edges*: Difference between calculated edges of adjacent frames. Typically larger than other components, so threshold may need to be increased to compensate. Once calculated, these components are multiplied by the specified :option:`-w/--weights <-w>` to calculate the final frame score ("content_val"). Weights are set as a set of 4 numbers in the form (*delta_hue*, *delta_sat*, *delta_lum*, *delta_edges*). For example, "--weights 1.0 0.5 1.0 0.2 --threshold 32" is a good starting point for trying edge detection. The final sum is normalized by the weight of all components, so they need not equal 100%. Edge detection is disabled by default to improve performance. @@ -246,7 +246,7 @@ Options .. option:: -t VAL, --threshold VAL - Threshold (float) that frame score must exceed to trigger a cut. Refers to "content_val" in stats file. + The max difference (0.0 to 255.0) that adjacent frames score must exceed to trigger a cut. Lower values are more sensitive to shot changes. Refers to "content_val" in stats file. Default: ``27.0`` @@ -258,7 +258,7 @@ Options .. option:: -l, --luma-only - Only use luma (brightness) channel. Useful for greyscale videos. Equivalent to setting "-w 0 0 1 0". + Only use luma (brightness) channel. Useful for greyscale videos. Equivalent to setting -w="0 0 1 0". .. option:: -k N, --kernel-size N @@ -268,7 +268,13 @@ Options .. option:: -m TIMECODE, --min-scene-len TIMECODE - Minimum length of any scene. Overrides global option :option:`-m/--min-scene-len `. TIMECODE can be specified in frames (:option:`-m=100 <-m>`), in seconds with `s` suffix (:option:`-m=3.5s <-m>`), or timecode (:option:`-m=00:01:52.778 <-m>`). + Minimum length of any scene. Overrides global option :option:`-m/--min-scene-len `. + +.. option:: -f MODE, --filter-mode MODE + + Mode used to enforce :option:`-m/--min-scene-len <-m>` option. Can be one of: merge, suppress. + + Default: ``Mode.MERGE`` .. _command-detect-hash: @@ -283,12 +289,13 @@ Find fast cuts using perceptual hashing. The perceptual hash is taken of adjacent frames, and used to calculate the hamming distance between them. The distance is then normalized by the squared size of the hash, and compared to the threshold. -Saved as the `hash_dist` metric in a statsfile. +Saved as the ``hash_dist`` metric in a statsfile. Examples ------------------------------------------------------------------------ + ``scenedetect -i video.mp4 detect-hash`` ``scenedetect -i video.mp4 detect-hash --size 32 --lowpass 3`` @@ -297,6 +304,7 @@ Examples Options ------------------------------------------------------------------------ + .. option:: -t VAL, --threshold VAL Max distance between hash values (0.0 to 1.0) of adjacent frames. Lower values are more sensitive to changes. @@ -317,7 +325,7 @@ Options .. option:: -m TIMECODE, --min-scene-len TIMECODE - Minimum length of any scene. Overrides global option :option:`-m/--min-scene-len `. TIMECODE can be specified in frames (:option:`-m=100 <-m>`), in seconds with `s` suffix (:option:`-m=3.5s <-m>`), or timecode (:option:`-m=00:01:52.778 <-m>`). + Minimum length of any scene. Overrides global min-scene-len (-m) setting. TIMECODE can be specified as exact number of frames, a time in seconds followed by s, or a timecode in the format HH:MM:SS or HH:MM:SS.nnn. .. _command-detect-hist: @@ -332,12 +340,13 @@ Find fast cuts by differencing YUV histograms. Uses Y channel after converting each frame to YUV to create a histogram of each frame. Histograms between frames are compared to determine a score for how similar they are. -Saved as the `hist_diff` metric in a statsfile. +Saved as the ``hist_diff`` metric in a statsfile. Examples ------------------------------------------------------------------------ + ``scenedetect -i video.mp4 detect-hist`` ``scenedetect -i video.mp4 detect-hist --threshold 0.1 --bins 240`` @@ -346,6 +355,7 @@ Examples Options ------------------------------------------------------------------------ + .. option:: -t VAL, --threshold VAL Max difference (0.0 to 1.0) between histograms of adjacent frames. Lower values are more sensitive to changes. @@ -354,13 +364,13 @@ Options .. option:: -b NUM, --bins NUM - The number of bins to use for the histogram calculation + The number of bins to use for the histogram calculation. - Default: ``16`` + Default: ``256`` .. option:: -m TIMECODE, --min-scene-len TIMECODE - Minimum length of any scene. Overrides global option :option:`-m/--min-scene-len `. TIMECODE can be specified in frames (:option:`-m=100 <-m>`), in seconds with `s` suffix (:option:`-m=3.5s <-m>`), or timecode (:option:`-m=00:01:52.778 <-m>`). + Minimum length of any scene. Overrides global min-scene-len (-m) setting. TIMECODE can be specified as exact number of frames, a time in seconds followed by s, or a timecode in the format HH:MM:SS or HH:MM:SS.nnn. .. _command-detect-threshold: @@ -371,7 +381,7 @@ Options ``detect-threshold`` ======================================================================== -Perform threshold detection algorithm on input video. +Find fade in/out using averaging. Detects fade-in and fade-out events using average pixel values. Resulting cuts are placed between adjacent fade-out and fade-in events. @@ -425,7 +435,9 @@ Commands ``export-html`` ======================================================================== -Export scene list to HTML file. Requires save-images unless --no-images is specified. +Export scene list to HTML file. + +To customize image generation, specify the :ref:`save-images ` command before :ref:`export-html `. This command always uses the result of the preceeding :ref:`save-images ` command, or runs it with the default config values unless ``--no-images`` is set. Options @@ -438,9 +450,9 @@ Options Default: ``$VIDEO_NAME-Scenes.html`` -.. option:: --no-images +.. option:: -n, --no-images - Export the scene list including or excluding the saved images. + Do not include images with the result. .. option:: -w pixels, --image-width pixels @@ -450,6 +462,10 @@ Options Height in pixels of the images in the resulting HTML table. +.. option:: -s, --show + + Automatically open resulting HTML when processing is complete. + .. _command-list-scenes: @@ -462,13 +478,26 @@ Options Create scene list CSV file (will be named $VIDEO_NAME-Scenes.csv by default). +Examples +------------------------------------------------------------------------ + + +Default: + + ``scenedetect -i video.mp4 list-scenes`` + +Without cut list (RFC 4180 compliant CSV): + + ``scenedetect -i video.mp4 list-scenes --skip-cuts`` + + Options ------------------------------------------------------------------------ .. option:: -o DIR, --output DIR - Output directory to save videos to. Overrides global option :option:`-o/--output ` if set. + Output directory to save videos to. Overrides global option :option:`-o/--output `. .. option:: -f NAME, --filename NAME @@ -532,16 +561,14 @@ Options ``save-images`` ======================================================================== -Create images for each detected scene. - -Images can be resized +Extract images from each detected scene. Examples ------------------------------------------------------------------------ - ``scenedetect -i video.mp4 save-images`` + ``scenedetect -i video.mp4 save-images --num-images 5`` ``scenedetect -i video.mp4 save-images --width 1024`` @@ -554,7 +581,7 @@ Options .. option:: -o DIR, --output DIR - Output directory for images. Overrides global option :option:`-o/--output ` if set. + Output directory for images. Overrides global option :option:`-o/--output `. .. option:: -f NAME, --filename NAME @@ -611,6 +638,38 @@ Options Width (pixels) of images. +.. _command-save-qp: + +.. program:: scenedetect save-qp + + +``save-qp`` +======================================================================== + +Save cuts as keyframes (I-frames) for video encoding. + +The resulting QP file can be used with the ``--qpfile`` argument in x264/x265. + + +Options +------------------------------------------------------------------------ + + +.. option:: -f NAME, --filename NAME + + Filename format to use. + + Default: ``$VIDEO_NAME.qp`` + +.. option:: -o DIR, --output DIR + + Output directory to save QP file to. Overrides global option :option:`-o/--output `. + +.. option:: -d, --disable-shift + + Disable shifting frame numbers by start time. + + .. _command-split-video: .. program:: scenedetect split-video @@ -626,10 +685,16 @@ Examples ------------------------------------------------------------------------ +Default: + ``scenedetect -i video.mp4 split-video`` +Codec-copy mode (not frame accurate): + ``scenedetect -i video.mp4 split-video --copy`` +Customized filenames: + ``scenedetect -i video.mp4 split-video --filename \$VIDEO_NAME-Clip-\$SCENE_NUMBER`` @@ -639,7 +704,7 @@ Options .. option:: -o DIR, --output DIR - Output directory to save videos to. Overrides global option :option:`-o/--output ` if set. + Output directory to save videos to. Overrides global option :option:`-o/--output `. .. option:: -f NAME, --filename NAME @@ -653,7 +718,7 @@ Options .. option:: -c, --copy - Copy instead of re-encode. Faster but less precise. Equivalent to: :option:`--args="-map 0:v:0 -map 0:a? -map 0:s? -c:v copy -c:a copy" <--args>` + Copy instead of re-encode. Faster but less precise. .. option:: -hq, --high-quality @@ -692,11 +757,11 @@ Options Set start/end/duration of input video. -Values can be specified as frames (NNNN), seconds (NNNN.NNs), or timecode (HH:MM:SS.nnn or MM:SS.nnn). For example, to process only the first minute of a video: +Values can be specified as seconds (SSSS.nn), frames (NNNN), or timecode (HH:MM:SS.nnn). For example, to process only the first minute of a video: - ``scenedetect -i video.mp4 time --end 1:00`` + ``scenedetect -i video.mp4 time --end 00:01:00`` - ``scenedetect -i video.mp4 time --duration 60s`` + ``scenedetect -i video.mp4 time --duration 60.0`` Note that --end and --duration are mutually exclusive (i.e. only one of the two can be set). Lastly, the following is an example using absolute frame numbers to process frames 0 through 1000: @@ -709,7 +774,7 @@ Options .. option:: -s TIMECODE, --start TIMECODE - Time in video to start detection. TIMECODE can be specified as number of frames (:option:`--start=100 <--start>` for frame 100), time in seconds (:option:`--start=100.0 <--start>` for 100 seconds), or timecode (:option:`--start=00:01:40 <--start>` for 1m40s). + Time in video to start detection. TIMECODE can be specified as seconds (:option:`--start=100.0 <--start>`), frames (:option:`--start=100 <--start>`), or timecode (:option:`--start=00:01:40.000 <--start>`). .. option:: -d TIMECODE, --duration TIMECODE diff --git a/docs/head/cli.html b/docs/head/cli.html index 5eb66a93..44bbd709 100644 --- a/docs/head/cli.html +++ b/docs/head/cli.html @@ -168,7 +168,7 @@

Options

detect-adaptive

-

Perform adaptive detection algorithm on input video.

+

Find fast cuts using diffs in HSL colorspace (rolling average).

Two-pass algorithm that first calculates frame scores with detect-content, and then applies a rolling average when processing the result. This can help mitigate false detections in situations such as camera movement.

Examples

@@ -237,7 +237,7 @@

Options

detect-content

-

Perform content detection algorithm on input video.

+

Find fast cuts using differences in HSL (filtered).

For each frame, a score from 0 to 255.0 is calculated which represents the difference in content between the current and previous frame (higher = more different). A cut is generated when a frame score exceeds -t/--threshold. Frame scores are saved under the “content_val” column in a statsfile.

Scores are calculated from several components which are also recorded in the statsfile:

@@ -261,7 +261,7 @@

Options
-t VAL, --threshold VAL
-

Threshold (float) that frame score must exceed to trigger a cut. Refers to “content_val” in stats file.

+

The max difference (0.0 to 255.0) that adjacent frames score must exceed to trigger a cut. Lower values are more sensitive to shot changes. Refers to “content_val” in stats file.

Default: 27.0

@@ -275,7 +275,7 @@

Options
-l, --luma-only
-

Only use luma (brightness) channel. Useful for greyscale videos. Equivalent to setting “-w 0 0 1 0”.

+

Only use luma (brightness) channel. Useful for greyscale videos. Equivalent to setting -w=”0 0 1 0”.

@@ -288,7 +288,14 @@

Options
-m TIMECODE, --min-scene-len TIMECODE
-

Minimum length of any scene. Overrides global option -m/--min-scene-len. TIMECODE can be specified in frames (-m=100), in seconds with s suffix (-m=3.5s), or timecode (-m=00:01:52.778).

+

Minimum length of any scene. Overrides global option -m/--min-scene-len.

+
+ +
+
+-f MODE, --filter-mode MODE
+

Mode used to enforce -m/--min-scene-len option. Can be one of: merge, suppress.

+

Default: Mode.MERGE

@@ -297,7 +304,7 @@

Options

detect-hash

Find fast cuts using perceptual hashing.

The perceptual hash is taken of adjacent frames, and used to calculate the hamming distance between them. The distance is then normalized by the squared size of the hash, and compared to the threshold.

-

Saved as the hash_dist metric in a statsfile.

+

Saved as the hash_dist metric in a statsfile.

Examples

@@ -331,7 +338,7 @@

Options
-m TIMECODE, --min-scene-len TIMECODE
-

Minimum length of any scene. Overrides global option -m/--min-scene-len. TIMECODE can be specified in frames (-m=100), in seconds with s suffix (-m=3.5s), or timecode (-m=00:01:52.778).

+

Minimum length of any scene. Overrides global min-scene-len (-m) setting. TIMECODE can be specified as exact number of frames, a time in seconds followed by s, or a timecode in the format HH:MM:SS or HH:MM:SS.nnn.

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

Options

detect-hist

Find fast cuts by differencing YUV histograms.

Uses Y channel after converting each frame to YUV to create a histogram of each frame. Histograms between frames are compared to determine a score for how similar they are.

-

Saved as the hist_diff metric in a statsfile.

+

Saved as the hist_diff metric in a statsfile.

Examples

@@ -360,21 +367,21 @@

Options
-b NUM, --bins NUM
-

The number of bins to use for the histogram calculation

-

Default: 16

+

The number of bins to use for the histogram calculation.

+

Default: 256

-m TIMECODE, --min-scene-len TIMECODE
-

Minimum length of any scene. Overrides global option -m/--min-scene-len. TIMECODE can be specified in frames (-m=100), in seconds with s suffix (-m=3.5s), or timecode (-m=00:01:52.778).

+

Minimum length of any scene. Overrides global min-scene-len (-m) setting. TIMECODE can be specified as exact number of frames, a time in seconds followed by s, or a timecode in the format HH:MM:SS or HH:MM:SS.nnn.

detect-threshold

-

Perform threshold detection algorithm on input video.

+

Find fade in/out using averaging.

Detects fade-in and fade-out events using average pixel values. Resulting cuts are placed between adjacent fade-out and fade-in events.

Examples

@@ -419,7 +426,8 @@

Options

Commands

export-html

-

Export scene list to HTML file. Requires save-images unless –no-images is specified.

+

Export scene list to HTML file.

+

To customize image generation, specify the save-images command before export-html. This command always uses the result of the preceeding save-images command, or runs it with the default config values unless --no-images is set.

Options

@@ -430,9 +438,9 @@

Options

-
---no-images
-

Export the scene list including or excluding the saved images.

+
+-n, --no-images
+

Do not include images with the result.

@@ -447,17 +455,34 @@

Options

Height in pixels of the images in the resulting HTML table.

+
+
+-s, --show
+

Automatically open resulting HTML when processing is complete.

+
+

list-scenes

Create scene list CSV file (will be named $VIDEO_NAME-Scenes.csv by default).

-

Options

+

Examples

+

Default:

+
+

scenedetect -i video.mp4 list-scenes

+
+

Without cut list (RFC 4180 compliant CSV):

+
+

scenedetect -i video.mp4 list-scenes --skip-cuts

+
+
+
+

Options

-o DIR, --output DIR
-

Output directory to save videos to. Overrides global option -o/--output if set.

+

Output directory to save videos to. Overrides global option -o/--output.

@@ -490,15 +515,15 @@

Options

load-scenes

Load scenes from CSV instead of detecting. Can be used with CSV generated by list-scenes. Scenes are loaded using the specified column as cut locations (frame number or timecode).

-
-

Examples

+
+

Examples

scenedetect -i video.mp4 load-scenes -i scenes.csv

scenedetect -i video.mp4 load-scenes -i scenes.csv --start-col-name "Start Timecode"

-
-

Options

+
+

Options

-i FILE, --input FILE
@@ -516,22 +541,21 @@

Options

save-images

-

Create images for each detected scene.

-

Images can be resized

-
-

Examples

+

Extract images from each detected scene.

+
+

Examples

-

scenedetect -i video.mp4 save-images

+

scenedetect -i video.mp4 save-images --num-images 5

scenedetect -i video.mp4 save-images --width 1024

scenedetect -i video.mp4 save-images --filename \$SCENE_NUMBER-img\$IMAGE_NUMBER

-
-

Options

+
+

Options

-o DIR, --output DIR
-

Output directory for images. Overrides global option -o/--output if set.

+

Output directory for images. Overrides global option -o/--output.

@@ -605,25 +629,59 @@

Options

Width (pixels) of images.

+
+
+
+

save-qp

+

Save cuts as keyframes (I-frames) for video encoding.

+

The resulting QP file can be used with the --qpfile argument in x264/x265.

+
+

Options

+
+
+-f NAME, --filename NAME
+

Filename format to use.

+

Default: $VIDEO_NAME.qp

+
+ +
+
+-o DIR, --output DIR
+

Output directory to save QP file to. Overrides global option -o/--output.

+
+ +
+
+-d, --disable-shift
+

Disable shifting frame numbers by start time.

+
+

split-video

Split input video using ffmpeg or mkvmerge.

-
-

Examples

+
+

Examples

+

Default:

scenedetect -i video.mp4 split-video

-

scenedetect -i video.mp4 split-video --copy

-

scenedetect -i video.mp4 split-video --filename \$VIDEO_NAME-Clip-\$SCENE_NUMBER

+
+

Codec-copy mode (not frame accurate):

+
+

scenedetect -i video.mp4 split-video --copy

+
+

Customized filenames:

+
+

scenedetect -i video.mp4 split-video --filename \$VIDEO_NAME-Clip-\$SCENE_NUMBER

-
-

Options

+
+

Options

-o DIR, --output DIR
-

Output directory to save videos to. Overrides global option -o/--output if set.

+

Output directory to save videos to. Overrides global option -o/--output.

@@ -642,7 +700,7 @@

Options
-c, --copy
-

Copy instead of re-encode. Faster but less precise. Equivalent to: --args="-map 0:v:0 -map 0:a? -map 0:s? -c:v copy -c:a copy"

+

Copy instead of re-encode. Faster but less precise.

@@ -683,21 +741,21 @@

Options

time

Set start/end/duration of input video.

-

Values can be specified as frames (NNNN), seconds (NNNN.NNs), or timecode (HH:MM:SS.nnn or MM:SS.nnn). For example, to process only the first minute of a video:

+

Values can be specified as seconds (SSSS.nn), frames (NNNN), or timecode (HH:MM:SS.nnn). For example, to process only the first minute of a video:

-

scenedetect -i video.mp4 time --end 1:00

-

scenedetect -i video.mp4 time --duration 60s

+

scenedetect -i video.mp4 time --end 00:01:00

+

scenedetect -i video.mp4 time --duration 60.0

Note that –end and –duration are mutually exclusive (i.e. only one of the two can be set). Lastly, the following is an example using absolute frame numbers to process frames 0 through 1000:

scenedetect -i video.mp4 time --start 0 --end 1000

-
-

Options

+
+

Options

-s TIMECODE, --start TIMECODE
-

Time in video to start detection. TIMECODE can be specified as number of frames (--start=100 for frame 100), time in seconds (--start=100.0 for 100 seconds), or timecode (--start=00:01:40 for 1m40s).

+

Time in video to start detection. TIMECODE can be specified as seconds (--start=100.0), frames (--start=100), or timecode (--start=00:01:40.000).

@@ -783,6 +841,7 @@

Navigation

  • list-scenes
  • load-scenes
  • save-images
  • +
  • save-qp
  • split-video
  • time
  • diff --git a/docs/head/genindex.html b/docs/head/genindex.html index 279e51c6..22439e5d 100644 --- a/docs/head/genindex.html +++ b/docs/head/genindex.html @@ -107,6 +107,13 @@

    Symbols

    +
  • + --disable-shift + +
  • @@ -153,8 +160,17 @@

    Symbols

  • scenedetect-list-scenes command line option
  • scenedetect-save-images command line option +
  • +
  • scenedetect-save-qp command line option
  • scenedetect-split-video command line option +
  • + +
  • + --filter-mode + +
  • @@ -310,7 +326,7 @@

    Symbols

    --no-images
  • @@ -336,6 +352,8 @@

    Symbols

  • scenedetect-list-scenes command line option
  • scenedetect-save-images command line option +
  • +
  • scenedetect-save-qp command line option
  • scenedetect-split-video command line option
  • @@ -384,6 +402,13 @@

    Symbols

    +
  • + --show + +
  • @@ -513,6 +538,8 @@

    Symbols

  • scenedetect command line option
  • scenedetect-detect-adaptive command line option +
  • +
  • scenedetect-save-qp command line option
  • scenedetect-time command line option
  • @@ -531,6 +558,8 @@

    Symbols

  • scenedetect command line option
  • scenedetect-detect-adaptive command line option +
  • +
  • scenedetect-detect-content command line option
  • scenedetect-detect-threshold command line option
  • @@ -539,6 +568,8 @@

    Symbols

  • scenedetect-list-scenes command line option
  • scenedetect-save-images command line option +
  • +
  • scenedetect-save-qp command line option
  • scenedetect-split-video command line option
  • @@ -636,6 +667,8 @@

    Symbols

    -n -
    • scenedetect-save-images command line option @@ -1577,6 +1622,25 @@

      S

    • -w
    • -W +
    • +
    + + diff --git a/docs/head/objects.inv b/docs/head/objects.inv index 3192f922b02bf3e67c9be3043291dbb79feb7128..5b3b52e9c327dd7dce6ee391763d4e52d3599aa7 100644 GIT binary patch delta 3780 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 delta 3694 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 M{~W;o0qU{m%ag`SNdN!< diff --git a/docs/head/searchindex.js b/docs/head/searchindex.js index 34007408..b59e39ce 100644 --- a/docs/head/searchindex.js +++ b/docs/head/searchindex.js @@ -1 +1 @@ -Search.setIndex({"docnames": ["api", "api/backends", "api/detectors", "api/frame_timecode", "api/migration_guide", "api/platform", "api/scene_detector", "api/scene_manager", "api/stats_manager", "api/video_splitter", "api/video_stream", "cli", "cli/backends", "cli/config_file", "index"], "filenames": ["api.rst", "api/backends.rst", "api/detectors.rst", "api/frame_timecode.rst", "api/migration_guide.rst", "api/platform.rst", "api/scene_detector.rst", "api/scene_manager.rst", "api/stats_manager.rst", "api/video_splitter.rst", "api/video_stream.rst", "cli.rst", "cli/backends.rst", "cli/config_file.rst", "index.rst"], "titles": ["scenedetect \ud83c\udfac Package", "Backends", "Detection Algorithms", "FrameTimecode", "Migration Guide", "Platform & Logging", "SceneDetector", "SceneManager", "StatsManager", "Video Splitting", "VideoStream", "scenedetect \ud83c\udfac Command", "Backends", "Configuration File", "PySceneDetect Documentation"], "terms": {"The": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "api": [0, 1, 4, 6, 12], "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "easi": 0, "integr": [0, 12], "most": [0, 4, 12, 13], "applic": [0, 1, 4], "workflow": [0, 4], "while": [0, 1, 7, 10], "also": [0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13], "being": [0, 2, 6, 9, 13], "highli": 0, "extens": [0, 1, 5, 7, 10, 11, 13], "see": [0, 1, 2, 3, 4, 5, 6, 10, 11, 13, 14], "section": [0, 4, 12], "below": [0, 2, 3, 13], "some": [0, 2, 4, 5, 7, 12, 13], "common": 0, "us": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "case": [0, 1, 2, 4, 11], "contain": [0, 1, 2, 5, 6, 7, 8, 9, 10, 13], "sever": [0, 11], "includ": [0, 3, 7, 11, 12, 13], "detect": [0, 1, 6, 7, 8, 12, 13, 14], "which": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13], "take": [0, 1, 2, 4, 11, 13], "path": [0, 1, 4, 5, 7, 8, 9, 10, 11, 13], "detector": [0, 2, 6, 7, 8, 13, 14], "find": [0, 2, 4, 7, 8, 11], "scene": [0, 1, 2, 6, 7, 9, 12, 13, 14], "transit": [0, 2, 4, 11], "exampl": [0, 1, 4, 6, 7, 10, 12, 14], "open_video": [0, 1, 4, 7, 10], "video": [0, 2, 3, 4, 6, 7, 10, 12, 13, 14], "input": [0, 1, 2, 4, 7, 8, 9, 10, 11, 12, 13], "scene_manag": [0, 1, 4, 7], "scenemanag": [0, 1, 2, 8, 14], "act": 0, "wai": [0, 2, 3, 5], "coordin": [0, 7], "via": [0, 1, 4, 7, 12, 13], "scenedetector": [0, 2, 7, 8, 14], "instanc": [0, 2, 5, 8, 10], "frame": [0, 1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14], "videostream": [0, 1, 4, 7, 14], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "export": [0, 13, 14], "inform": [0, 1, 2, 7, 9, 10, 11, 13], "about": [0, 1, 9, 14], "variou": [0, 1, 12], "format": [0, 3, 5, 7, 9, 11, 13], "save_imag": [0, 7, 14], "save": [0, 7, 8, 13, 14], "imag": [0, 1, 2, 5, 7, 12, 13, 14], "each": [0, 1, 2, 3, 7, 8, 9, 10, 11, 13], "write_scene_list": [0, 7, 14], "cut": [0, 2, 3, 6, 7, 11, 13], "info": [0, 5, 11, 13], "csv": [0, 7, 8, 11, 13], "write_scene_list_html": [0, 7, 14], "viewabl": 0, "html": [0, 1, 2, 7, 9, 13, 14], "algorithm": [0, 1, 6, 8, 11, 14], "contentdetector": [0, 1, 2, 7, 14], "fast": [0, 2, 7, 11, 12, 13], "weight": [0, 2, 11, 13], "averag": [0, 2, 11, 13], "hsv": [0, 2, 11], "chang": [0, 2, 4, 6, 11, 13], "thresholddetector": [0, 2, 7, 14], "fade": [0, 2, 7, 11, 13], "out": [0, 2, 6, 7, 8, 11, 13], "pixel": [0, 1, 2, 7, 10, 11, 13], "intens": [0, 2, 13], "rgb": [0, 2], "adaptivedetector": [0, 2, 14], "roll": [0, 2, 11], "hsl": 0, "histogramdetector": [0, 2, 14], "histogram": [0, 2, 11, 13], "hashdetector": [0, 2, 14], "perceptu": [0, 2, 11], "hash": [0, 2, 13, 14], "video_stream": [0, 10], "handl": [0, 2, 4, 5, 7, 8, 12], "through": [0, 1, 7, 11], "interfac": [0, 2, 6, 10, 13], "implement": [0, 1, 2, 3, 6, 7, 10], "librari": [0, 1, 5, 10, 13], "ar": [0, 1, 2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 14], "provid": [0, 1, 4, 5, 6, 7, 8, 9, 10], "backend": [0, 4, 7, 10, 11, 13, 14], "opencv": [0, 1, 5, 7, 10, 11, 13, 14], "videostreamcv2": [0, 1, 7, 14], "pyav": [0, 1, 11, 13, 14], "videostreamav": [0, 1, 14], "moviepi": [0, 1, 11, 14], "videostreammoviepi": [0, 1, 14], "video_splitt": [0, 4, 9], "split_video_ffmpeg": [0, 4, 9, 14], "split_video_mkvmerg": [0, 4, 9, 14], "split": [0, 7, 13, 14], "base": [0, 1, 2, 3, 6, 7, 9, 10, 11, 13], "frame_timecod": [0, 3, 4], "frametimecod": [0, 1, 2, 4, 7, 8, 9, 10, 14], "class": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10], "store": [0, 3, 6, 8, 14], "convert": [0, 1, 2, 3, 10, 11], "perform": [0, 1, 2, 5, 6, 7, 11, 13], "arithmet": [0, 3], "timecod": [0, 1, 2, 3, 6, 7, 8, 9, 10, 11, 13], "accur": [0, 1, 3, 12], "precis": [0, 3, 8, 11], "scene_detector": [0, 6], "must": [0, 1, 2, 6, 7, 8, 10, 11, 12, 13], "stats_manag": [0, 2, 6, 7, 8], "statsmanag": [0, 2, 6, 7, 14], "cach": [0, 6, 7], "metric": [0, 2, 6, 7, 8, 11, 13], "load": [0, 1, 8, 12, 13, 14], "them": [0, 11], "disk": [0, 7, 8], "analysi": [0, 7, 11], "platform": [0, 4, 14], "util": [0, 5], "type": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 12], "avail": [0, 1, 2, 5, 7, 9, 11], "directli": [0, 1, 2, 3, 6, 7], "make": [0, 2, 4, 12], "import": [0, 1, 4, 7, 10], "simpler": 0, "still": [0, 6, 7, 9, 12], "under": [0, 11, 12, 13], "develop": [0, 12, 14], "It": [0, 2, 4, 12, 13], "recommend": [0, 4, 7, 13], "you": [0, 1, 3, 4, 9, 10, 11, 12, 13, 14], "pin": 0, "version": [0, 4, 5, 7, 12, 14], "your": [0, 1, 9, 12, 13], "requir": [0, 1, 2, 4, 5, 6, 7, 8, 11, 12, 13, 14], "next": [0, 1, 2, 6, 10], "major": [0, 4], "releas": [0, 4, 6, 8, 14], "7": [0, 9], "veri": [0, 7, 8], "mp4": [0, 1, 4, 9, 10, 11], "scene_start": 0, "scene_end": 0, "print": [0, 1, 2, 3, 4, 7, 10, 11], "f": [0, 11, 12], "now": [0, 4], "list": [0, 2, 4, 5, 6, 7, 8, 9, 13, 14], "pair": [0, 6, 7, 9], "repres": [0, 1, 2, 6, 7, 9, 10, 11, 13], "end": [0, 1, 2, 7, 9, 10, 11, 13], "note": [0, 1, 4, 7, 9, 11, 12, 13], "can": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14], "set": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13], "show_progress": [0, 4, 7, 9], "true": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "when": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13], "call": [0, 1, 4, 5, 7, 8, 9, 10], "displai": [0, 1, 7, 13], "progress": [0, 7, 9], "bar": [0, 5, 7, 9], "estim": [0, 11], "time": [0, 1, 2, 3, 5, 6, 7, 9, 10, 12, 13, 14], "remain": [0, 1, 2, 6], "here": 0, "we": [0, 1, 10], "There": [0, 2, 6], "mani": [0, 2, 4, 11], "data": [0, 2, 8, 11, 13], "automat": [0, 2, 7, 9, 11, 13], "ffmpeg": [0, 1, 5, 9, 11, 12, 13, 14], "scene_list": [0, 7, 9], "my_video": 0, "recip": 0, "found": [0, 1, 5, 7, 8], "github": [0, 2, 5, 13, 14], "limit": [0, 1, 5], "per": [0, 3, 11, 14], "For": [0, 1, 2, 4, 7, 8, 9, 10, 11], "advanc": [0, 1, 10], "usag": [0, 2, 14], "come": 0, "helper": [0, 7], "simplifi": [0, 4], "open": [0, 1, 4, 7, 8, 10, 13], "video_path": [0, 7], "stats_file_path": [0, 7], "none": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13], "fals": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "start_tim": [0, 4, 7, 9], "end_tim": [0, 4, 7, 9], "start_in_scen": [0, 7], "given": [0, 1, 2, 5, 6, 7, 8, 10, 13], "specifi": [0, 1, 2, 3, 5, 7, 9, 10, 11, 12, 13], "paramet": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13], "str": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10], "absolut": [0, 5, 11], "rel": [0, 2, 5, 9, 13], "work": [0, 1, 4, 5, 7, 9, 11, 12, 13], "directori": [0, 1, 5, 7, 9, 11, 13], "A": [0, 2, 3, 7, 8, 11, 13], "full": [0, 5, 11], "statist": [0, 8, 14], "determin": [0, 2, 3, 8, 11], "better": [0, 7, 11, 13], "threshold": [0, 2, 4, 7, 8, 13, 14], "valu": [0, 1, 2, 3, 6, 7, 8, 10, 11, 13], "bool": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10], "show": [0, 5, 7, 9, 11, 13], "default": [0, 1, 2, 4, 5, 7, 8, 9, 11, 12, 13], "float": [0, 1, 2, 3, 4, 7, 8, 10, 11], "int": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "point": [0, 1, 3, 8, 10, 11, 13], "form": [0, 3, 7, 11], "hh": [0, 3, 11], "mm": [0, 3, 11], "ss": [0, 3, 11], "nnn": [0, 3, 11], "number": [0, 1, 2, 3, 6, 7, 8, 9, 10, 11, 13], "second": [0, 1, 3, 4, 10, 11, 13], "123": 0, "45": [0, 3], "200": [0, 7], "assum": [0, 1, 2, 6, 7], "begin": [0, 6, 7, 10, 11, 13], "mean": [0, 2, 7, 11, 13], "result": [0, 1, 2, 3, 4, 5, 6, 7, 11, 13], "singl": [0, 1, 4, 6, 7, 11], "span": [0, 7], "entir": [0, 7, 8], "instead": [0, 1, 2, 4, 6, 7, 11, 13], "portion": [0, 7], "alwai": [0, 1, 5, 7, 9, 11], "until": [0, 1, 4, 7, 10, 13], "first": [0, 1, 4, 5, 7, 9, 10, 11, 13], "event": [0, 1, 2, 6, 7, 11, 13], "return": [0, 1, 3, 5, 6, 7, 8, 9, 10], "object": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "rais": [0, 1, 3, 5, 7, 8, 10, 14], "videoopenfailur": [0, 1, 10, 14], "could": [0, 1, 8], "statsfilecorrupt": [0, 8, 14], "an": [0, 1, 2, 4, 5, 6, 7, 8, 10, 11, 13, 14], "invalid": [0, 1, 7], "stat": [0, 2, 6, 8, 11, 13], "file": [0, 2, 4, 5, 7, 8, 9, 11, 12, 14], "valueerror": [0, 1, 3, 7, 10], "incorrectli": 0, "typeerror": [0, 3], "tupl": [0, 1, 6, 7, 9, 10], "framer": [0, 1, 3, 7, 10, 11, 12], "kwarg": 0, "If": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14], "current": [0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 12], "system": [0, 1, 5, 9, 11, 13], "fallback": [0, 1], "overrid": [0, 1, 2, 5, 7, 9, 11, 13], "name": [0, 1, 2, 5, 6, 7, 8, 9, 10, 11, 13], "specif": [0, 1, 4, 5, 6, 10], "possibl": [0, 3, 10, 13], "available_backend": [0, 1, 14], "fail": [0, 1, 7, 10, 13], "option": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 13, 14], "argument": [0, 1, 4, 5, 7, 9, 11, 13], "pass": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13], "constructor": [0, 1, 3, 4, 7], "creat": [0, 1, 2, 3, 4, 5, 6, 7, 11, 13], "construct": [0, 1, 4, 7, 8], "multipl": [0, 12], "have": [0, 1, 2, 4, 6, 8, 11], "been": [0, 1, 2, 4, 6, 7, 8], "attempt": [0, 1, 10, 13], "error": [0, 1, 5, 7, 10, 11, 12, 13, 14], "get_content_v": [0, 2], "get_metr": [0, 2, 6, 8], "post_process": [0, 2, 6], "process_fram": [0, 2, 6], "stats_manager_requir": [0, 2, 6], "event_buffer_length": [0, 2, 6], "compon": [0, 2, 11, 13], "is_processing_requir": [0, 2, 6], "default_component_weight": [0, 2], "frame_score_kei": [0, 2], "luma_only_weight": [0, 2], "metric_kei": [0, 2, 8], "hash_fram": [0, 2], "calculate_histogram": [0, 2], "method": [0, 1, 2, 3, 4, 5, 6, 7, 8, 13], "devic": [0, 7, 10, 14], "camera": [0, 2, 10, 11, 14], "pipe": [0, 14], "videocaptureadapt": [0, 1, 7, 14], "read": [0, 1, 6, 7, 10, 11, 13], "reset": [0, 1, 7, 10], "seek": [0, 1, 7, 10, 12], "backend_nam": [0, 1, 10], "aspect_ratio": [0, 1, 4, 10], "captur": [0, 1], "durat": [0, 1, 4, 7, 10, 11], "frame_numb": [0, 1, 2, 6, 7, 8, 10, 11, 13], "frame_r": [0, 1, 10], "frame_s": [0, 1, 10], "is_seek": [0, 1, 10], "posit": [0, 1, 2, 3, 4, 7, 10, 11, 13], "position_m": [0, 1, 10], "interpol": [0, 7, 14], "area": [0, 7, 13], "cubic": [0, 7, 13], "lanczos4": [0, 7, 13], "linear": [0, 7, 13], "nearest": [0, 7, 13], "add_detector": [0, 1, 4, 7], "clear": [0, 7], "clear_detector": [0, 7], "detect_scen": [0, 1, 4, 7, 8], "get_num_detector": [0, 7], "get_scene_list": [0, 4, 7], "stop": [0, 1, 7, 13], "auto_downscal": [0, 7], "downscal": [0, 7, 11, 13], "compute_downscale_factor": [0, 7, 14], "get_scenes_from_cut": [0, 7, 14], "cutlist": [0, 7, 14], "default_min_width": [0, 7, 14], "max_frame_queue_length": [0, 7, 14], "max_frame_size_error": [0, 7, 14], "progress_bar_descript": [0, 7, 14], "scenelist": [0, 7, 14], "scenemetadata": [0, 9, 14], "index": [0, 2, 5, 9, 14], "videometadata": [0, 9, 14], "total_scen": [0, 9], "default_formatt": [0, 9, 14], "is_ffmpeg_avail": [0, 9, 14], "is_mkvmerge_avail": [0, 9, 14], "default_ffmpeg_arg": [0, 9, 14], "ffmpeg_path": [0, 9, 14], "timecodepair": [0, 9, 14], "is_save_requir": [0, 8], "metrics_exist": [0, 8], "register_metr": [0, 8], "save_to_csv": [0, 4, 7, 8], "set_metr": [0, 8], "valid_head": [0, 8], "column_name_frame_numb": [0, 8, 14], "column_name_timecod": [0, 8, 14], "equal_framer": [0, 3], "get_framer": [0, 3], "get_fram": [0, 3], "get_second": [0, 3], "get_timecod": [0, 3], "previous_fram": [0, 3], "max_fps_delta": [0, 3, 4, 14], "sparsescenedetector": [0, 6, 14], "framerateunavail": [0, 10, 14], "seekerror": [0, 1, 10, 14], "base_timecod": [0, 1, 4, 7, 8, 10], "commandtoolong": [0, 5, 14], "faketqdmloggingredirect": [0, 5, 14], "faketqdmobject": [0, 5, 14], "close": [0, 1, 5, 7, 10], "set_descript": [0, 5], "updat": [0, 4, 5, 8], "templat": [0, 5, 7, 9, 14], "get_and_create_path": [0, 5, 14], "get_cv2_imwrite_param": [0, 5, 14], "get_ffmpeg_path": [0, 5, 14], "get_ffmpeg_vers": [0, 5, 14], "get_file_nam": [0, 5, 14], "get_mkvmerge_vers": [0, 5, 14], "get_system_version_info": [0, 5, 14], "init_logg": [0, 4, 5, 14], "invoke_command": [0, 5, 14], "guid": 0, "videomanag": 0, "split_video_": 0, "other": [0, 1, 2, 3, 7, 8, 11, 12], "minimum_frames_per_second_": 0, "constant": [0, 3, 7, 11], "get_aspect_ratio": 0, "output": [0, 1, 3, 5, 6, 7, 9, 11, 12, 13], "messag": [0, 5, 7, 8, 10], "logger": [0, 4, 5], "doe": [0, 1, 11, 13], "ani": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 14], "handler": [0, 4, 5], "show_stdout": [0, 4, 5], "verbos": [0, 5, 11, 13], "attach": [0, 2, 4], "getlogg": 0, "manual": [0, 1, 12], "6": [0, 4, 11, 13], "introduc": 0, "break": [0, 2, 4, 7, 10], "incompat": 0, "detail": [0, 1, 4, 5, 10, 11, 13], "how": [0, 2, 4, 6, 11, 13], "In": [0, 1, 2, 3, 4], "addit": [0, 1, 2, 10], "demonstr": [0, 4], "test": [0, 2, 3, 4, 6, 10], "test_api": [0, 4], "py": [0, 4, 10], "scenedetect": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13], "modul": [1, 2, 3, 5, 6, 7, 8, 9, 10], "back": [1, 3, 7, 10], "python": [1, 4, 5, 9, 12], "multimedia": 1, "fall": [1, 2], "all": [1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13], "alreadi": [1, 2, 5, 6], "cv2": [1, 2, 5, 7, 12], "videocaptur": [1, 7, 12], "want": [1, 10, 12, 14], "stream": [1, 10, 12], "our": 1, "from": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "e": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "g": [1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13], "keyword": 1, "forward": 1, "unavail": [1, 10], "tri": 1, "lastli": [1, 11], "both": [1, 2, 7, 11], "abov": [1, 2, 3, 4, 9], "exist": [1, 2, 4, 5, 7, 8, 9, 11], "pyscenedetect": [1, 3, 4, 5, 6, 9, 11, 12, 13], "webcam": [1, 7], "id": 1, "2": [1, 2, 4, 7, 9, 11, 13], "cap": 1, "total_fram": 1, "1000": [1, 11], "live": [1, 12], "callback": [1, 7, 9], "everi": [1, 5, 7, 11, 13], "dict": [1, 5, 7, 8], "consid": [1, 2, 7], "These": [1, 9], "support": [1, 5, 9, 10, 11, 12, 14], "follow": [1, 2, 3, 7, 9, 10, 11, 13], "signatur": 1, "backendtyp": 1, "sequenc": [1, 9, 11, 12], "network": [1, 12], "url": [1, 9, 11], "wrap": [1, 11], "allow": [1, 2, 3, 5, 7, 8, 9, 10], "do": [1, 2, 3, 6, 7, 8, 9, 13], "max_read_attempt": 1, "5": [1, 3, 4, 7, 10, 11, 13, 14], "adapt": [1, 2, 13, 14], "unlik": [1, 6], "mai": [1, 2, 6, 7, 8, 9, 10, 11], "readi": 1, "continu": [1, 7], "decod": [1, 2, 7, 8, 10, 12, 13], "after": [1, 2, 6, 7, 8, 11, 12, 13], "process": [1, 2, 4, 6, 7, 11, 12, 13], "few": 1, "corrupt": [1, 12], "metadata": 1, "accuraci": [1, 7, 11], "lower": [1, 2, 11, 13], "onc": [1, 2, 9, 11], "emit": 1, "np": [1, 2, 10], "ndarrai": [1, 2, 6, 7, 10], "maximum": [1, 2, 3, 6, 7, 11], "ha": [1, 2, 4, 5, 6, 7, 10, 13], "last": [1, 2, 6, 7, 9, 10, 11, 13], "indic": [1, 2, 6, 7, 10, 11, 13], "succeed": [1, 10], "Not": [1, 2, 7, 13], "target": [1, 7, 10], "underli": [1, 10], "opencv_adapt": 1, "uniqu": [1, 10], "identifi": [1, 5, 10], "properti": [1, 2, 3, 4, 6, 7, 10], "aspect": [1, 7, 10], "ratio": [1, 2, 7, 10, 13], "1": [1, 2, 3, 4, 5, 7, 10, 11, 13], "0": [1, 2, 3, 4, 6, 7, 9, 10, 11, 13, 14], "squar": [1, 2, 10, 11, 13], "refer": [1, 2, 5, 11, 13], "caution": 1, "prefer": [1, 12, 13], "onli": [1, 2, 3, 4, 5, 7, 8, 9, 11, 13], "ownership": 1, "grab": 1, "unsupport": [1, 3], "leav": 1, "inconsist": 1, "state": [1, 10], "non": [1, 10], "termin": [1, 9, 10, 11], "within": [1, 3, 10], "wa": [1, 2, 4, 7], "just": [1, 6, 13], "wherea": 1, "sec": [1, 10, 11], "report": [1, 5], "size": [1, 2, 7, 10, 11, 13], "width": [1, 2, 7, 10, 11, 13], "height": [1, 2, 7, 10, 11, 13], "cap_adapt": 1, "elaps": 1, "off": 1, "devicesor": 1, "equal": [1, 2, 3, 11, 13], "present": [1, 10, 11], "millisecond": [1, 10], "m": [1, 11], "max_decode_attempt": 1, "path_or_devic": 1, "anystr": [1, 5, 9], "folder": [1, 13], "dsc_": 1, "04d": 1, "jpg": [1, 2, 5, 7, 12], "byte": [1, 8, 10], "deprec": [1, 2, 4, 6, 7, 8, 9, 11], "oserror": [1, 8], "access": [1, 3, 7, 9], "deni": 1, "re": [1, 7, 10, 11], "should": [1, 2, 4, 5, 6, 7, 8, 10, 12, 13], "equival": [1, 2, 3, 10, 11, 13], "pointer": [1, 10], "need": [1, 2, 6, 7, 10, 11], "subtract": [1, 3, 10], "one": [1, 2, 3, 5, 7, 10, 11, 13, 14], "5th": [1, 10], "4": [1, 2, 7, 10, 11, 13], "untest": 1, "web": 1, "interpret": [1, 10], "occur": [1, 2, 7, 8, 10, 13], "valid": [1, 2, 3, 6, 8, 10], "neg": [1, 3, 7, 10], "otherwis": [1, 2, 3, 6, 8, 9, 10], "without": [1, 2, 10, 11], "stamp": [1, 10], "av": [1, 12], "inputcontain": 1, "path_or_io": 1, "threading_mod": 1, "suppress_output": [1, 4, 9], "caus": [1, 2, 13], "lockup": 1, "document": 1, "http": [1, 2, 5, 9], "org": [1, 9], "doc": [1, 14], "stabl": [1, 4, 6], "overview": 1, "caveat": 1, "sub": 1, "interpet": 1, "binaryio": 1, "like": [1, 2, 5, 9], "deriv": [1, 6, 10], "thread_typ": 1, "codec": [1, 11, 13], "context": [1, 5, 10], "threadtyp": 1, "thread": [1, 7, 13], "mode": [1, 2, 7, 8, 11, 13], "auto": [1, 11, 13], "slice": [1, 13], "reopen": 1, "seekabl": [1, 10], "sent": 1, "stdout": [1, 5, 11], "stderr": 1, "log": [1, 4, 7, 11, 13, 14], "restore_default_callback": 1, "befor": [1, 2, 11, 13], "deadlock": 1, "Will": [1, 7, 10, 11], "rate": [1, 10, 11, 13], "thu": [1, 2, 6, 7, 10], "correspond": [1, 2, 6, 7, 10], "even": [1, 8, 10], "pt": [1, 10], "": [1, 2, 3, 5, 7, 9, 11, 12, 13], "ffmpeg_videoread": 1, "launch": [1, 12], "subprocess": [1, 5, 12], "gener": [1, 2, 7, 9, 11, 12, 13], "necessarili": [1, 2, 6], "avisynth": [1, 12], "script": [1, 12], "print_info": 1, "shot": [2, 6, 7, 13], "colorspac": 2, "slow": [2, 11, 13], "differ": [2, 3, 5, 9, 11, 13], "improv": [2, 6, 7, 11, 14], "motion": 2, "y": [2, 11, 13], "channel": [2, 11, 13], "yuv": [2, 11, 13], "space": 2, "calcul": [2, 3, 6, 7, 8, 9, 10, 11, 12, 13], "similar": [2, 11], "between": [2, 3, 7, 11, 13], "adjac": [2, 11, 13], "typic": [2, 9, 11], "howev": [2, 3, 12], "thei": [2, 11], "compar": [2, 3, 11, 13], "content": [2, 13], "except": [2, 5, 7, 8, 10], "isn": 2, "t": [2, 5, 11], "fix": [2, 5], "help": [2, 4, 13, 14], "mitig": [2, 11], "situat": [2, 11], "command": [2, 5, 9, 12, 13], "line": [2, 5, 9, 12, 13], "adaptive_detector": 2, "adaptive_threshold": 2, "3": [2, 3, 4, 7, 9, 11, 13], "min_scene_len": 2, "15": [2, 11, 13], "window_width": 2, "min_content_v": 2, "delta_hu": [2, 11, 13], "delta_sat": [2, 11, 13], "delta_lum": [2, 11, 13], "delta_edg": [2, 11, 13], "luma_onli": 2, "kernel_s": 2, "video_manag": [2, 4, 7], "min_delta_hsv": 2, "two": [2, 3, 4, 8, 11, 14], "score": [2, 11, 13], "appli": [2, 11, 13], "movement": [2, 11], "exce": [2, 5, 11, 13], "trigger": [2, 11, 13], "new": [2, 3, 4, 7, 8, 9, 10, 11, 13], "adaptive_ratio": [2, 11, 13], "ad": [2, 3, 4, 6, 7, 10], "window": [2, 5, 11, 12, 13, 14], "togeth": [2, 13], "order": [2, 6, 8, 11, 13], "deviat": [2, 11], "least": [2, 7, 11], "minimum": [2, 7, 11, 13], "content_v": [2, 11, 13], "regist": [2, 7, 8], "same": [2, 3, 4, 5, 6, 7, 8, 11, 13], "place": [2, 3, 4, 11, 13], "statsfil": [2, 7, 8, 11, 13], "against": [2, 3, 13], "omit": 2, "lumin": [2, 13], "kernel": [2, 11, 13], "post": [2, 6, 12], "edg": [2, 11, 13], "filter": [2, 11, 13], "resolut": [2, 7, 11, 13], "NOT": [2, 6, 7, 8, 9], "backward": [2, 4, 7, 8, 9], "compat": [2, 4, 5, 6, 7, 8, 9], "frame_num": [2, 3, 6, 7], "combin": [2, 11, 13], "kei": [2, 6, 7, 8], "_unused_frame_num": 2, "frame_img": [2, 6, 7], "sequenti": [2, 6], "start": [2, 5, 6, 7, 9, 11, 13, 14], "numpi": [2, 6, 7], "where": [2, 3, 4, 6, 7, 9, 11, 13], "more": [2, 4, 6, 7, 11, 12, 13], "behind": [2, 6], "due": [2, 13], "buffer": [2, 6, 7], "exceed": 2, "content_detector": 2, "27": [2, 11, 13], "filter_mod": 2, "merg": [2, 11, 13], "colour": [2, 13], "color": 2, "expand": [2, 11, 13], "odd": [2, 11, 13], "integ": [2, 8, 11, 13], "greater": [2, 11, 13], "than": [2, 7, 11, 13], "meet": 2, "up": [2, 7, 8], "larger": [2, 7, 11], "so": [2, 3, 7, 11], "adjust": 2, "accordingli": 2, "hue": [2, 11, 13], "luma": [2, 11, 13], "bright": [2, 11, 13], "satur": [2, 11, 13], "get": [2, 3, 5, 6, 7, 14], "string": [2, 3, 4, 5, 6, 7, 9, 11], "done": [2, 3, 6, 7], "assign": [2, 6], "_metric_kei": [2, 6], "actual": [2, 6, 7], "final": [2, 11], "weigh": 2, "produc": [2, 11], "amount": [2, 3, 6, 7, 11, 12, 13], "hash_detector": 2, "Then": 2, "395": [2, 11, 13], "16": [2, 7, 11, 13], "lowpass": [2, 11, 13], "direct": [2, 13], "cosin": [2, 11, 13], "transform": [2, 11, 13], "dct": [2, 11, 13], "binari": [2, 9], "median": 2, "www": 2, "hackerfactor": 2, "com": [2, 5, 14], "blog": 2, "php": 2, "archiv": 2, "432": 2, "look": [2, 5, 8, 13], "johannesbuchn": 2, "imagehash": 2, "ham": [2, 11], "distanc": [2, 11], "correl": 2, "smaller": [2, 7, 11, 13], "sensit": [2, 11, 13], "divid": 2, "x": [2, 3], "normal": [2, 11], "low": [2, 11, 13], "frequenc": [2, 11, 13], "much": [2, 11, 13], "high": [2, 4, 7, 11, 13], "keep": [2, 11, 13], "etc": [2, 5, 6, 11, 13], "static": [2, 8, 10], "hash_siz": 2, "factor": [2, 7, 11, 13], "phash": 2, "self": [2, 3], "inheret": 2, "subsequ": [2, 7], "hist": [2, 13, 14], "histogram_detector": 2, "05": [2, 3, 11, 13], "bin": [2, 11, 13], "256": [2, 7, 13], "higher": [2, 7, 11, 13], "dicffer": 2, "impli": 2, "less": [2, 11], "bgr": 2, "function": [2, 5, 7, 9, 14], "extract": [2, 7, 9], "comput": [2, 3, 6, 7, 9], "its": [2, 4], "sum": [2, 11, 13], "across": [2, 10], "shape": 2, "dimens": 2, "boolean": 2, "flag": [2, 9], "whether": 2, "1d": 2, "arrai": 2, "length": [2, 5, 11, 13], "element": [2, 7, 13], "count": 2, "particular": [2, 6, 8], "img": [2, 11, 13], "imread": 2, "path_to_imag": 2, "previou": [2, 3, 4, 7, 11], "threshold_detector": 2, "12": [2, 9, 11, 13], "fade_bia": 2, "add_final_scen": 2, "floor": 2, "block_siz": [2, 4], "level": [2, 4, 11], "long": [2, 5], "appropri": 2, "chosen": 2, "especi": 2, "account": 2, "grei": 2, "black": 2, "8": [2, 13], "bit": 2, "r": 2, "b": [2, 3, 11, 12], "percentag": 2, "skew": [2, 11, 13], "middl": [2, 11], "right": 2, "treat": 2, "qualnam": [2, 7], "boundari": [2, 7, 11, 13], "ceil": 2, "happen": [2, 7, 10, 14], "rise": 2, "write": [2, 5, 7, 8, 11, 13], "bia": [2, 11, 13], "sinc": [2, 3, 8], "locat": [2, 11, 13], "exact": [2, 3, 7, 13], "cross": 2, "ty": [2, 9], "timestamp": 3, "part": [3, 9, 14], "29": 3, "fp": [3, 11], "97": 3, "seconds_float": 3, "10": [3, 11], "timecode_str": 3, "00": [3, 11], "000": [3, 11], "comparison": 3, "oper": [3, 5, 12], "operand": 3, "01": [3, 11], "add": [3, 5, 7, 9, 11, 13], "disallow": 3, "clamp": 3, "Be": 3, "care": 3, "c": [3, 9, 11, 13], "d": [3, 7, 10, 11], "assert": 3, "forth": 3, "compli": [3, 13], "three": 3, "23": 3, "678": 3, "ssss": 3, "nnnn": [3, 11], "nnnnn": 3, "456": 3, "thrown": 3, "either": [3, 4, 7, 10, 12], "defin": [3, 7], "match": 3, "along": [3, 5], "measur": 3, "use_round": 3, "decim": 3, "round": 3, "desir": [3, 7], "truncat": 3, "1e": 3, "page": [4, 7, 14], "program": [4, 9, 11, 13], "written": [4, 8, 9, 13], "review": 4, "cover": 4, "v0": 4, "step": [4, 12], "toward": 4, "biggest": 4, "commonli": 4, "exhaust": 4, "complet": [4, 7, 12, 13], "changelog": 4, "layer": 4, "avoid": [4, 11], "upon": [4, 8], "reli": 4, "remov": [4, 5, 6, 7, 8], "futur": [4, 8], "custom": [4, 9, 12], "replac": [4, 5, 9], "previous": 4, "accept": 4, "neither": 4, "nor": 4, "renam": 4, "downscale_factor": 4, "scale": [4, 7, 11, 13], "To": [4, 7, 8, 10, 12], "achiev": [4, 7], "hide_progress": [4, 9], "show_output": [4, 9], "consist": [4, 8, 10], "load_from_csv": 4, "longer": [4, 11], "calculate_frame_scor": 4, "_calculate_frame_scor": 4, "global": [4, 11, 12, 13], "minimum_frames_per_second_float": 4, "minimum_frames_per_second_delta_float": 4, "well": [5, 8, 11], "invok": [5, 7, 9], "extern": [5, 11], "kawrg": 5, "op": 5, "tqdm": [5, 7, 9], "manag": [5, 6, 9], "redirect": 5, "No": [5, 13], "desc": 5, "refresh": 5, "n": [5, 7, 11, 13], "matcher": 5, "filenam": [5, 7, 9, 11, 13], "file_path": 5, "output_directori": 5, "ignor": [5, 7, 11, 13], "drive": 5, "root": 5, "modif": 5, "ensur": [5, 9, 12], "output_dir": [5, 7, 9], "suitabl": 5, "imwrit": 5, "param": 5, "associ": [5, 7, 8], "qualiti": [5, 7, 11, 13], "compress": [5, 7, 11, 13], "dictionari": [5, 7], "png": [5, 7, 11, 13], "map": [5, 8, 9, 11, 13], "respect": [5, 8], "imwrite_jpeg_qu": 5, "imwrite_png_compress": 5, "check": [5, 8, 9], "imageio_ffmpeg": [5, 9], "packag": [5, 9, 12, 14], "couldn": 5, "include_extens": 5, "tmp": [5, 13], "foo": 5, "mkvmerg": [5, 9, 11, 13, 14], "tool": [5, 11, 13], "debug": [5, 11, 13], "bug": 5, "log_level": 5, "20": 5, "log_fil": 5, "initi": [5, 8], "By": [5, 13], "suppress": [5, 11, 13], "warn": [5, 11, 13], "critic": 5, "dump": 5, "arg": [5, 11, 13], "explicitli": 5, "too": 5, "breakthrough": [5, 14], "issu": [5, 12, 14], "164": 5, "code": [5, 9], "built": 5, "expect": [6, 7, 9], "unstabl": 6, "design": 6, "plan": 6, "v1": 6, "inherit": 6, "yet": [6, 8], "subject": 6, "dens": 6, "idea": 6, "prototyp": 6, "spars": 6, "oppos": 6, "motiondetector": 6, "individu": [6, 7], "run": [7, 11, 12, 13, 14], "over": [7, 13], "separ": [7, 14], "basic": 7, "def": 7, "on_new_scen": 7, "test_video_fil": 7, "print_scen": 7, "csv_file": [7, 8], "certain": [7, 8, 12], "resiz": [7, 11, 13], "relat": 7, "resampl": 7, "moir": 7, "free": [7, 14], "bicub": 7, "lanczo": 7, "8x8": 7, "neighborhood": 7, "bilinear": 7, "neighbor": [7, 11], "facilit": 7, "parallel": 7, "background": 7, "bind": 7, "own": [7, 8], "temporari": 7, "sourc": 7, "origin": 7, "were": 7, "frame_skip": 7, "frame_sourc": 7, "obtain": [7, 8, 9], "get_cut_list": 7, "left": [7, 10], "reach": 7, "cannot": [7, 8, 10], "extrem": 7, "skip": [7, 11, 13], "percent": [7, 11, 13], "speed": [7, 11], "expens": [7, 11], "callabl": [7, 9], "safe": 7, "inter_": 7, "getter": 7, "frame_width": 7, "effective_width": 7, "optim": [7, 8], "effect": 7, "rang": 7, "300": 7, "cut_list": 7, "start_po": 7, "end_po": 7, "contigu": 7, "empti": [7, 9], "num_fram": 7, "start_fram": [7, 9], "occupi": 7, "num_imag": 7, "frame_margin": 7, "image_extens": 7, "encoder_param": 7, "95": [7, 11, 13], "image_name_templ": 7, "video_nam": [7, 9, 11, 13], "scene_numb": [7, 9, 11, 13], "image_numb": [7, 11, 13], "pad": [7, 11], "around": [7, 11], "move": 7, "webp": [7, 11, 13], "effici": 7, "100": [7, 11, 13], "lossless": [7, 11, 13], "9": [7, 11, 13], "best": 7, "files": [7, 13], "slower": [7, 11, 13], "encod": [7, 9, 11, 13], "variabl": [7, 9, 11], "timestamp_m": [7, 13], "instal": [7, 9, 11, 12, 14], "rescal": 7, "would": 7, "regardless": 7, "preserv": 7, "wide": [7, 9], "image_path": 7, "scene_num": 7, "newli": 7, "output_csv_fil": 7, "include_cut_list": 7, "textio": [7, 8], "denot": [7, 9], "row": [7, 8, 11, 13], "rfc": [7, 11, 13], "4180": [7, 11, 13], "compliant": [7, 11], "output_html_filenam": 7, "css": 7, "css_class": 7, "mytabl": 7, "image_filenam": 7, "image_width": 7, "image_height": 7, "besid": 7, "0th": 7, "tabl": [7, 11, 13], "hint": 7, "alia": [7, 9], "wait": 7, "human": 8, "readabl": 8, "ideal": 8, "analyz": 8, "addition": 8, "plot": 8, "graph": 8, "matplotlib": 8, "interest": 8, "seri": 8, "iter": [8, 9], "request": 8, "retriev": 8, "force_sav": 8, "w": [8, 11], "failur": [8, 10, 13], "metric_kv_dict": 8, "header": 8, "reader": 8, "column": [8, 11, 13], "clip": [9, 11, 13], "mkvtoolnix": 9, "download": [9, 13, 14], "linux": [9, 13], "user": [9, 13], "prompt": 9, "whichev": 9, "depend": [9, 11], "total": 9, "end_fram": 9, "gracefulli": [9, 12], "input_video_path": 9, "output_file_templ": 9, "arg_overrid": 9, "v": [9, 11, 13], "libx264": [9, 11, 13], "preset": [9, 11, 13], "veryfast": [9, 11, 13], "crf": [9, 11, 13], "22": [9, 11, 13], "aac": [9, 11, 13], "formatt": 9, "substitut": 9, "success": 9, "mkv": 9, "001": 9, "suffix": [9, 11], "quiet": [9, 11, 13], "opt": 9, "hostedtoolcach": 9, "x64": 9, "lib": 9, "python3": 9, "site": 9, "linux64": 9, "v4": 9, "agnost": 10, "unless": [10, 11], "suit": 10, "test_video_stream": 10, "subclass": 10, "unrecover": 10, "guarante": 10, "unknown": 10, "abstract": 10, "backend_identifi": 10, "syntax": [11, 13], "wherev": 11, "summari": 11, "config": [11, 12, 13], "strict": 11, "o": 11, "dir": 11, "unset": [11, 13], "overridden": 11, "overwritten": 11, "tune": 11, "min": [11, 13], "len": [11, 13], "02": 11, "53": 11, "633": 11, "drop": [11, 13], "short": [11, 13], "shorter": [11, 13], "select": 11, "disabl": [11, 13], "dure": 11, "reduc": 11, "50": 11, "33": 11, "25": 11, "q": [11, 13], "l": 11, "logfil": 11, "append": 11, "copyright": 11, "licens": 11, "redistribut": 11, "third": 11, "parti": 11, "softwar": 11, "interact": 11, "val": [11, 13], "delta": 11, "greyscal": 11, "k": 11, "52": 11, "778": 11, "255": [11, 13], "record": 11, "increas": 11, "compens": 11, "multipli": 11, "32": 11, "good": 11, "try": 11, "sat": 11, "lum": 11, "taken": 11, "hash_dist": 11, "max": [11, 13], "discret": 11, "frac": 11, "differenc": 11, "hist_diff": 11, "240": 11, "num": [11, 13], "delta_rgb": 11, "placement": 11, "macro": [11, 13], "quot": [11, 13], "exclud": 11, "h": 11, "escap": 11, "charact": 11, "col": [11, 13], "mark": [11, 13], "1024": 11, "mid": 11, "j": 11, "jpeg": [11, 13], "p": 11, "affect": [11, 13], "margin": [11, 13], "control": 11, "tempor": 11, "copi": [11, 13], "expans": 11, "hide": 11, "faster": [11, 13], "hq": 11, "17": [11, 13], "x264": [11, 13], "ultrafast": 11, "superfast": 11, "medium": [11, 13], "veryslow": 11, "doubl": [11, 13], "audio": [11, 12], "nn": 11, "minut": 11, "60": 11, "mutual": [11, 13], "exclus": [11, 13], "40": 11, "1m40": 11, "configur": [12, 14], "verifi": 12, "abil": 12, "replai": 12, "usual": 12, "mostli": 12, "reliabl": 12, "although": 12, "occasion": 12, "track": 12, "small": 12, "headless": 12, "pip": [12, 14], "02d": 12, "frame001": 12, "frame002": 12, "frame003": 12, "sure": 12, "robust": 12, "fine": 12, "distribut": 12, "enabl": [12, 13], "cfg": 13, "usernam": 13, "appdata": 13, "local": 13, "xdg_config_hom": 13, "mac": 13, "preced": 13, "those": 13, "describ": 13, "comment": 13, "option_a": 13, "option_b": 13, "26": 13, "80": 13, "text": 13, "usr": 13, "ye": 13, "consol": 13, "behavior": 13, "descript": 13, "consecut": 13, "discard": 13, "enforc": 13, "highest": 13, "center": 13, "bitrat": 13, "significantli": 13, "inaccur": 13, "keyfram": 13, "drawback": 13, "visual": 13, "ident": 13, "One": 13, "half": 13, "complianc": 13, "qp": 13, "shift": 13, "fastest": 13, "exit": 13, "properli": 13, "osx": 13, "press": 13, "ctrl": 13, "quit": 13, "welcom": 14, "anoth": 14, "latest": 14, "build": 14, "suggest": 14, "feel": 14, "tracker": 14, "migrat": 14, "search": 14}, "objects": {"": [[0, 0, 0, "-", "scenedetect"]], "scenedetect": [[1, 0, 0, "-", "backends"], [0, 6, 1, "", "detect"], [2, 0, 0, "-", "detectors"], [3, 0, 0, "-", "frame_timecode"], [0, 6, 1, "", "open_video"], [5, 0, 0, "-", "platform"], [6, 0, 0, "-", "scene_detector"], [7, 0, 0, "-", "scene_manager"], [8, 0, 0, "-", "stats_manager"], [9, 0, 0, "-", "video_splitter"], [10, 0, 0, "-", "video_stream"], [11, 8, 1, "cmdoption-scenedetect-b", "--backend"], [11, 8, 1, "cmdoption-scenedetect-c", "--config"], [11, 8, 1, "cmdoption-scenedetect-d", "--downscale"], [11, 8, 1, "cmdoption-scenedetect-drop-short-scenes", "--drop-short-scenes"], [11, 8, 1, "cmdoption-scenedetect-fs", "--frame-skip"], [11, 8, 1, "cmdoption-scenedetect-f", "--framerate"], [11, 8, 1, "cmdoption-scenedetect-i", "--input"], [11, 8, 1, "cmdoption-scenedetect-l", "--logfile"], [11, 8, 1, "cmdoption-scenedetect-merge-last-scene", "--merge-last-scene"], [11, 8, 1, "cmdoption-scenedetect-m", "--min-scene-len"], [11, 8, 1, "cmdoption-scenedetect-o", "--output"], [11, 8, 1, "cmdoption-scenedetect-q", "--quiet"], [11, 8, 1, "cmdoption-scenedetect-s", "--stats"], [11, 8, 1, "cmdoption-scenedetect-v", "--verbosity"], [11, 8, 1, "cmdoption-scenedetect-b", "-b"], [11, 8, 1, "cmdoption-scenedetect-c", "-c"], [11, 8, 1, "cmdoption-scenedetect-d", "-d"], [11, 8, 1, "cmdoption-scenedetect-f", "-f"], [11, 8, 1, "cmdoption-scenedetect-fs", "-fs"], [11, 8, 1, "cmdoption-scenedetect-i", "-i"], [11, 8, 1, "cmdoption-scenedetect-l", "-l"], [11, 8, 1, "cmdoption-scenedetect-m", "-m"], [11, 8, 1, "cmdoption-scenedetect-o", "-o"], [11, 8, 1, "cmdoption-scenedetect-q", "-q"], [11, 8, 1, "cmdoption-scenedetect-s", "-s"], [11, 8, 1, "cmdoption-scenedetect-v", "-v"]], "scenedetect.backends": [[1, 1, 1, "", "AVAILABLE_BACKENDS"], [1, 0, 0, "-", "moviepy"], [1, 0, 0, "-", "opencv"], [1, 0, 0, "-", "pyav"]], "scenedetect.backends.moviepy": [[1, 2, 1, "", "VideoStreamMoviePy"]], "scenedetect.backends.moviepy.VideoStreamMoviePy": [[1, 3, 1, "", "BACKEND_NAME"], [1, 4, 1, "", "aspect_ratio"], [1, 4, 1, "", "duration"], [1, 4, 1, "", "frame_number"], [1, 4, 1, "", "frame_rate"], [1, 4, 1, "", "frame_size"], [1, 4, 1, "", "is_seekable"], [1, 4, 1, "", "name"], [1, 4, 1, "", "path"], [1, 4, 1, "", "position"], [1, 4, 1, "", "position_ms"], [1, 5, 1, "", "read"], [1, 5, 1, "", "reset"], [1, 5, 1, "", "seek"]], "scenedetect.backends.opencv": [[1, 2, 1, "", "VideoCaptureAdapter"], [1, 2, 1, "", "VideoStreamCv2"]], "scenedetect.backends.opencv.VideoCaptureAdapter": [[1, 3, 1, "", "BACKEND_NAME"], [1, 4, 1, "", "aspect_ratio"], [1, 4, 1, "", "capture"], [1, 4, 1, "", "duration"], [1, 4, 1, "", "frame_number"], [1, 4, 1, "", "frame_rate"], [1, 4, 1, "", "frame_size"], [1, 4, 1, "", "is_seekable"], [1, 4, 1, "", "name"], [1, 4, 1, "", "path"], [1, 4, 1, "", "position"], [1, 4, 1, "", "position_ms"], [1, 5, 1, "", "read"], [1, 5, 1, "", "reset"], [1, 5, 1, "", "seek"]], "scenedetect.backends.opencv.VideoStreamCv2": [[1, 3, 1, "", "BACKEND_NAME"], [1, 4, 1, "", "aspect_ratio"], [1, 4, 1, "", "capture"], [1, 4, 1, "", "duration"], [1, 4, 1, "", "frame_number"], [1, 4, 1, "", "frame_rate"], [1, 4, 1, "", "frame_size"], [1, 4, 1, "", "is_seekable"], [1, 4, 1, "", "name"], [1, 4, 1, "", "path"], [1, 4, 1, "", "position"], [1, 4, 1, "", "position_ms"], [1, 5, 1, "", "read"], [1, 5, 1, "", "reset"], [1, 5, 1, "", "seek"]], "scenedetect.backends.pyav": [[1, 2, 1, "", "VideoStreamAv"]], "scenedetect.backends.pyav.VideoStreamAv": [[1, 3, 1, "", "BACKEND_NAME"], [1, 4, 1, "", "aspect_ratio"], [1, 4, 1, "", "duration"], [1, 4, 1, "", "frame_number"], [1, 4, 1, "", "frame_rate"], [1, 4, 1, "", "frame_size"], [1, 4, 1, "", "is_seekable"], [1, 4, 1, "", "name"], [1, 4, 1, "", "path"], [1, 4, 1, "", "position"], [1, 4, 1, "", "position_ms"], [1, 5, 1, "", "read"], [1, 5, 1, "", "reset"], [1, 5, 1, "", "seek"]], "scenedetect.detectors": [[2, 0, 0, "-", "adaptive_detector"], [2, 0, 0, "-", "content_detector"], [2, 0, 0, "-", "hash_detector"], [2, 0, 0, "-", "histogram_detector"], [2, 0, 0, "-", "threshold_detector"]], "scenedetect.detectors.adaptive_detector": [[2, 2, 1, "", "AdaptiveDetector"]], "scenedetect.detectors.adaptive_detector.AdaptiveDetector": [[2, 4, 1, "", "event_buffer_length"], [2, 5, 1, "", "get_content_val"], [2, 5, 1, "", "get_metrics"], [2, 5, 1, "", "post_process"], [2, 5, 1, "", "process_frame"], [2, 5, 1, "", "stats_manager_required"]], "scenedetect.detectors.content_detector": [[2, 2, 1, "", "ContentDetector"]], "scenedetect.detectors.content_detector.ContentDetector": [[2, 2, 1, "", "Components"], [2, 3, 1, "", "DEFAULT_COMPONENT_WEIGHTS"], [2, 3, 1, "", "FRAME_SCORE_KEY"], [2, 3, 1, "", "LUMA_ONLY_WEIGHTS"], [2, 3, 1, "", "METRIC_KEYS"], [2, 4, 1, "", "event_buffer_length"], [2, 5, 1, "", "get_metrics"], [2, 5, 1, "", "is_processing_required"], [2, 5, 1, "", "process_frame"]], "scenedetect.detectors.content_detector.ContentDetector.Components": [[2, 3, 1, "", "delta_edges"], [2, 3, 1, "", "delta_hue"], [2, 3, 1, "", "delta_lum"], [2, 3, 1, "", "delta_sat"]], "scenedetect.detectors.hash_detector": [[2, 2, 1, "", "HashDetector"]], "scenedetect.detectors.hash_detector.HashDetector": [[2, 5, 1, "", "get_metrics"], [2, 5, 1, "", "hash_frame"], [2, 5, 1, "", "is_processing_required"], [2, 5, 1, "", "process_frame"]], "scenedetect.detectors.histogram_detector": [[2, 2, 1, "", "HistogramDetector"]], "scenedetect.detectors.histogram_detector.HistogramDetector": [[2, 5, 1, "", "calculate_histogram"], [2, 5, 1, "", "get_metrics"], [2, 5, 1, "", "is_processing_required"], [2, 5, 1, "", "process_frame"]], "scenedetect.detectors.threshold_detector": [[2, 2, 1, "", "ThresholdDetector"]], "scenedetect.detectors.threshold_detector.ThresholdDetector": [[2, 2, 1, "", "Method"], [2, 5, 1, "", "get_metrics"], [2, 5, 1, "", "post_process"], [2, 5, 1, "", "process_frame"]], "scenedetect.detectors.threshold_detector.ThresholdDetector.Method": [[2, 3, 1, "", "CEILING"], [2, 3, 1, "", "FLOOR"]], "scenedetect.frame_timecode": [[3, 2, 1, "", "FrameTimecode"], [3, 1, 1, "", "MAX_FPS_DELTA"]], "scenedetect.frame_timecode.FrameTimecode": [[3, 5, 1, "", "equal_framerate"], [3, 5, 1, "", "get_framerate"], [3, 5, 1, "", "get_frames"], [3, 5, 1, "", "get_seconds"], [3, 5, 1, "", "get_timecode"], [3, 5, 1, "", "previous_frame"]], "scenedetect.platform": [[5, 7, 1, "", "CommandTooLong"], [5, 2, 1, "", "FakeTqdmLoggingRedirect"], [5, 2, 1, "", "FakeTqdmObject"], [5, 2, 1, "", "Template"], [5, 6, 1, "", "get_and_create_path"], [5, 6, 1, "", "get_cv2_imwrite_params"], [5, 6, 1, "", "get_ffmpeg_path"], [5, 6, 1, "", "get_ffmpeg_version"], [5, 6, 1, "", "get_file_name"], [5, 6, 1, "", "get_mkvmerge_version"], [5, 6, 1, "", "get_system_version_info"], [5, 6, 1, "", "init_logger"], [5, 6, 1, "", "invoke_command"]], "scenedetect.platform.FakeTqdmObject": [[5, 5, 1, "", "close"], [5, 5, 1, "", "set_description"], [5, 5, 1, "", "update"]], "scenedetect.scene_detector": [[6, 2, 1, "", "SceneDetector"], [6, 2, 1, "", "SparseSceneDetector"]], "scenedetect.scene_detector.SceneDetector": [[6, 4, 1, "", "event_buffer_length"], [6, 5, 1, "", "get_metrics"], [6, 5, 1, "", "is_processing_required"], [6, 5, 1, "", "post_process"], [6, 5, 1, "", "process_frame"], [6, 3, 1, "", "stats_manager"], [6, 5, 1, "", "stats_manager_required"]], "scenedetect.scene_detector.SparseSceneDetector": [[6, 5, 1, "", "post_process"], [6, 5, 1, "", "process_frame"]], "scenedetect.scene_manager": [[7, 1, 1, "", "CutList"], [7, 1, 1, "", "DEFAULT_MIN_WIDTH"], [7, 2, 1, "", "Interpolation"], [7, 1, 1, "", "MAX_FRAME_QUEUE_LENGTH"], [7, 1, 1, "", "MAX_FRAME_SIZE_ERRORS"], [7, 1, 1, "", "PROGRESS_BAR_DESCRIPTION"], [7, 1, 1, "", "SceneList"], [7, 2, 1, "", "SceneManager"], [7, 6, 1, "", "compute_downscale_factor"], [7, 6, 1, "", "get_scenes_from_cuts"], [7, 6, 1, "", "save_images"], [7, 6, 1, "", "write_scene_list"], [7, 6, 1, "", "write_scene_list_html"]], "scenedetect.scene_manager.Interpolation": [[7, 3, 1, "", "AREA"], [7, 3, 1, "", "CUBIC"], [7, 3, 1, "", "LANCZOS4"], [7, 3, 1, "", "LINEAR"], [7, 3, 1, "", "NEAREST"]], "scenedetect.scene_manager.SceneManager": [[7, 5, 1, "", "add_detector"], [7, 4, 1, "", "auto_downscale"], [7, 5, 1, "", "clear"], [7, 5, 1, "", "clear_detectors"], [7, 5, 1, "", "detect_scenes"], [7, 4, 1, "", "downscale"], [7, 5, 1, "", "get_num_detectors"], [7, 5, 1, "", "get_scene_list"], [7, 4, 1, "", "interpolation"], [7, 4, 1, "", "stats_manager"], [7, 5, 1, "", "stop"]], "scenedetect.stats_manager": [[8, 1, 1, "", "COLUMN_NAME_FRAME_NUMBER"], [8, 1, 1, "", "COLUMN_NAME_TIMECODE"], [8, 7, 1, "", "StatsFileCorrupt"], [8, 2, 1, "", "StatsManager"]], "scenedetect.stats_manager.StatsManager": [[8, 5, 1, "", "get_metrics"], [8, 5, 1, "", "is_save_required"], [8, 5, 1, "", "metrics_exist"], [8, 5, 1, "", "register_metrics"], [8, 5, 1, "", "save_to_csv"], [8, 5, 1, "", "set_metrics"], [8, 5, 1, "", "valid_header"]], "scenedetect.video_splitter": [[9, 1, 1, "", "DEFAULT_FFMPEG_ARGS"], [9, 1, 1, "", "FFMPEG_PATH"], [9, 2, 1, "", "SceneMetadata"], [9, 1, 1, "", "TimecodePair"], [9, 2, 1, "", "VideoMetadata"], [9, 6, 1, "", "default_formatter"], [9, 6, 1, "", "is_ffmpeg_available"], [9, 6, 1, "", "is_mkvmerge_available"], [9, 6, 1, "", "split_video_ffmpeg"], [9, 6, 1, "", "split_video_mkvmerge"]], "scenedetect.video_splitter.SceneMetadata": [[9, 3, 1, "", "end"], [9, 3, 1, "", "index"], [9, 3, 1, "", "start"]], "scenedetect.video_splitter.VideoMetadata": [[9, 3, 1, "", "name"], [9, 3, 1, "", "path"], [9, 3, 1, "", "total_scenes"]], "scenedetect.video_stream": [[10, 7, 1, "", "FrameRateUnavailable"], [10, 7, 1, "", "SeekError"], [10, 7, 1, "", "VideoOpenFailure"], [10, 2, 1, "", "VideoStream"]], "scenedetect.video_stream.VideoStream": [[10, 5, 1, "", "BACKEND_NAME"], [10, 4, 1, "", "aspect_ratio"], [10, 4, 1, "", "base_timecode"], [10, 4, 1, "", "duration"], [10, 4, 1, "", "frame_number"], [10, 4, 1, "", "frame_rate"], [10, 4, 1, "", "frame_size"], [10, 4, 1, "", "is_seekable"], [10, 4, 1, "", "name"], [10, 4, 1, "", "path"], [10, 4, 1, "", "position"], [10, 4, 1, "", "position_ms"], [10, 5, 1, "", "read"], [10, 5, 1, "", "reset"], [10, 5, 1, "", "seek"]], "scenedetect-detect-adaptive": [[11, 8, 1, "cmdoption-scenedetect-detect-adaptive-f", "--frame-window"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-k", "--kernel-size"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-l", "--luma-only"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-c", "--min-content-val"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-d", "--min-delta-hsv"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-m", "--min-scene-len"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-t", "--threshold"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-w", "--weights"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-c", "-c"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-d", "-d"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-f", "-f"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-k", "-k"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-l", "-l"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-m", "-m"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-t", "-t"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-w", "-w"]], "scenedetect-detect-content": [[11, 8, 1, "cmdoption-scenedetect-detect-content-k", "--kernel-size"], [11, 8, 1, "cmdoption-scenedetect-detect-content-l", "--luma-only"], [11, 8, 1, "cmdoption-scenedetect-detect-content-m", "--min-scene-len"], [11, 8, 1, "cmdoption-scenedetect-detect-content-t", "--threshold"], [11, 8, 1, "cmdoption-scenedetect-detect-content-w", "--weights"], [11, 8, 1, "cmdoption-scenedetect-detect-content-k", "-k"], [11, 8, 1, "cmdoption-scenedetect-detect-content-l", "-l"], [11, 8, 1, "cmdoption-scenedetect-detect-content-m", "-m"], [11, 8, 1, "cmdoption-scenedetect-detect-content-t", "-t"], [11, 8, 1, "cmdoption-scenedetect-detect-content-w", "-w"]], "scenedetect-detect-hash": [[11, 8, 1, "cmdoption-scenedetect-detect-hash-l", "--lowpass"], [11, 8, 1, "cmdoption-scenedetect-detect-hash-m", "--min-scene-len"], [11, 8, 1, "cmdoption-scenedetect-detect-hash-s", "--size"], [11, 8, 1, "cmdoption-scenedetect-detect-hash-t", "--threshold"], [11, 8, 1, "cmdoption-scenedetect-detect-hash-l", "-l"], [11, 8, 1, "cmdoption-scenedetect-detect-hash-m", "-m"], [11, 8, 1, "cmdoption-scenedetect-detect-hash-s", "-s"], [11, 8, 1, "cmdoption-scenedetect-detect-hash-t", "-t"]], "scenedetect-detect-hist": [[11, 8, 1, "cmdoption-scenedetect-detect-hist-b", "--bins"], [11, 8, 1, "cmdoption-scenedetect-detect-hist-m", "--min-scene-len"], [11, 8, 1, "cmdoption-scenedetect-detect-hist-t", "--threshold"], [11, 8, 1, "cmdoption-scenedetect-detect-hist-b", "-b"], [11, 8, 1, "cmdoption-scenedetect-detect-hist-m", "-m"], [11, 8, 1, "cmdoption-scenedetect-detect-hist-t", "-t"]], "scenedetect-detect-threshold": [[11, 8, 1, "cmdoption-scenedetect-detect-threshold-l", "--add-last-scene"], [11, 8, 1, "cmdoption-scenedetect-detect-threshold-f", "--fade-bias"], [11, 8, 1, "cmdoption-scenedetect-detect-threshold-m", "--min-scene-len"], [11, 8, 1, "cmdoption-scenedetect-detect-threshold-t", "--threshold"], [11, 8, 1, "cmdoption-scenedetect-detect-threshold-f", "-f"], [11, 8, 1, "cmdoption-scenedetect-detect-threshold-l", "-l"], [11, 8, 1, "cmdoption-scenedetect-detect-threshold-m", "-m"], [11, 8, 1, "cmdoption-scenedetect-detect-threshold-t", "-t"]], "scenedetect-export-html": [[11, 8, 1, "cmdoption-scenedetect-export-html-f", "--filename"], [11, 8, 1, "cmdoption-scenedetect-export-html-h", "--image-height"], [11, 8, 1, "cmdoption-scenedetect-export-html-w", "--image-width"], [11, 8, 1, "cmdoption-scenedetect-export-html-no-images", "--no-images"], [11, 8, 1, "cmdoption-scenedetect-export-html-f", "-f"], [11, 8, 1, "cmdoption-scenedetect-export-html-h", "-h"], [11, 8, 1, "cmdoption-scenedetect-export-html-w", "-w"]], "scenedetect-list-scenes": [[11, 8, 1, "cmdoption-scenedetect-list-scenes-f", "--filename"], [11, 8, 1, "cmdoption-scenedetect-list-scenes-n", "--no-output-file"], [11, 8, 1, "cmdoption-scenedetect-list-scenes-o", "--output"], [11, 8, 1, "cmdoption-scenedetect-list-scenes-q", "--quiet"], [11, 8, 1, "cmdoption-scenedetect-list-scenes-s", "--skip-cuts"], [11, 8, 1, "cmdoption-scenedetect-list-scenes-f", "-f"], [11, 8, 1, "cmdoption-scenedetect-list-scenes-n", "-n"], [11, 8, 1, "cmdoption-scenedetect-list-scenes-o", "-o"], [11, 8, 1, "cmdoption-scenedetect-list-scenes-q", "-q"], [11, 8, 1, "cmdoption-scenedetect-list-scenes-s", "-s"]], "scenedetect-load-scenes": [[11, 8, 1, "cmdoption-scenedetect-load-scenes-i", "--input"], [11, 8, 1, "cmdoption-scenedetect-load-scenes-c", "--start-col-name"], [11, 8, 1, "cmdoption-scenedetect-load-scenes-c", "-c"], [11, 8, 1, "cmdoption-scenedetect-load-scenes-i", "-i"]], "scenedetect-save-images": [[11, 8, 1, "cmdoption-scenedetect-save-images-c", "--compression"], [11, 8, 1, "cmdoption-scenedetect-save-images-f", "--filename"], [11, 8, 1, "cmdoption-scenedetect-save-images-m", "--frame-margin"], [11, 8, 1, "cmdoption-scenedetect-save-images-H", "--height"], [11, 8, 1, "cmdoption-scenedetect-save-images-j", "--jpeg"], [11, 8, 1, "cmdoption-scenedetect-save-images-n", "--num-images"], [11, 8, 1, "cmdoption-scenedetect-save-images-o", "--output"], [11, 8, 1, "cmdoption-scenedetect-save-images-p", "--png"], [11, 8, 1, "cmdoption-scenedetect-save-images-q", "--quality"], [11, 8, 1, "cmdoption-scenedetect-save-images-s", "--scale"], [11, 8, 1, "cmdoption-scenedetect-save-images-w", "--webp"], [11, 8, 1, "cmdoption-scenedetect-save-images-W", "--width"], [11, 8, 1, "cmdoption-scenedetect-save-images-H", "-H"], [11, 8, 1, "cmdoption-scenedetect-save-images-W", "-W"], [11, 8, 1, "cmdoption-scenedetect-save-images-c", "-c"], [11, 8, 1, "cmdoption-scenedetect-save-images-f", "-f"], [11, 8, 1, "cmdoption-scenedetect-save-images-j", "-j"], [11, 8, 1, "cmdoption-scenedetect-save-images-m", "-m"], [11, 8, 1, "cmdoption-scenedetect-save-images-n", "-n"], [11, 8, 1, "cmdoption-scenedetect-save-images-o", "-o"], [11, 8, 1, "cmdoption-scenedetect-save-images-p", "-p"], [11, 8, 1, "cmdoption-scenedetect-save-images-q", "-q"], [11, 8, 1, "cmdoption-scenedetect-save-images-s", "-s"], [11, 8, 1, "cmdoption-scenedetect-save-images-w", "-w"]], "scenedetect-split-video": [[11, 8, 1, "cmdoption-scenedetect-split-video-a", "--args"], [11, 8, 1, "cmdoption-scenedetect-split-video-c", "--copy"], [11, 8, 1, "cmdoption-scenedetect-split-video-f", "--filename"], [11, 8, 1, "cmdoption-scenedetect-split-video-hq", "--high-quality"], [11, 8, 1, "cmdoption-scenedetect-split-video-m", "--mkvmerge"], [11, 8, 1, "cmdoption-scenedetect-split-video-o", "--output"], [11, 8, 1, "cmdoption-scenedetect-split-video-p", "--preset"], [11, 8, 1, "cmdoption-scenedetect-split-video-q", "--quiet"], [11, 8, 1, "cmdoption-scenedetect-split-video-crf", "--rate-factor"], [11, 8, 1, "cmdoption-scenedetect-split-video-a", "-a"], [11, 8, 1, "cmdoption-scenedetect-split-video-c", "-c"], [11, 8, 1, "cmdoption-scenedetect-split-video-crf", "-crf"], [11, 8, 1, "cmdoption-scenedetect-split-video-f", "-f"], [11, 8, 1, "cmdoption-scenedetect-split-video-hq", "-hq"], [11, 8, 1, "cmdoption-scenedetect-split-video-m", "-m"], [11, 8, 1, "cmdoption-scenedetect-split-video-o", "-o"], [11, 8, 1, "cmdoption-scenedetect-split-video-p", "-p"], [11, 8, 1, "cmdoption-scenedetect-split-video-q", "-q"]], "scenedetect-time": [[11, 8, 1, "cmdoption-scenedetect-time-d", "--duration"], [11, 8, 1, "cmdoption-scenedetect-time-e", "--end"], [11, 8, 1, "cmdoption-scenedetect-time-s", "--start"], [11, 8, 1, "cmdoption-scenedetect-time-d", "-d"], [11, 8, 1, "cmdoption-scenedetect-time-e", "-e"], [11, 8, 1, "cmdoption-scenedetect-time-s", "-s"]]}, "objtypes": {"0": "py:module", "1": "py:data", "2": "py:class", "3": "py:attribute", "4": "py:property", "5": "py:method", "6": "py:function", "7": "py:exception", "8": "std:cmdoption"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "data", "Python data"], "2": ["py", "class", "Python class"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "property", "Python property"], "5": ["py", "method", "Python method"], "6": ["py", "function", "Python function"], "7": ["py", "exception", "Python exception"], "8": ["std", "cmdoption", "program option"]}, "titleterms": {"scenedetect": [0, 11, 14], "packag": 0, "get": 0, "start": [0, 4], "function": [0, 4], "modul": [0, 14], "refer": [0, 14], "pyscenedetect": [0, 14], "document": [0, 14], "log": [0, 5], "migrat": [0, 4], "from": 0, "0": 0, "5": 0, "backend": [1, 12], "video": [1, 9, 11], "file": [1, 13], "devic": 1, "camera": 1, "pipe": 1, "detect": [2, 11], "algorithm": 2, "arg": 2, "return": 2, "exampl": [2, 3, 11, 13], "frametimecod": 3, "usag": [3, 7], "guid": 4, "videomanag": 4, "class": 4, "seek": 4, "end": 4, "time": [4, 11], "scenemanag": [4, 7], "save_imag": 4, "split_video_": 4, "statsmanag": [4, 8], "adaptivedetector": 4, "other": 4, "thresholddetector": 4, "contentdetector": 4, "minimum_frames_per_second_": 4, "constant": 4, "get_aspect_ratio": 4, "platform": 5, "scenedetector": 6, "store": 7, "per": 7, "frame": 7, "statist": 7, "split": [9, 11], "videostream": 10, "command": [11, 14], "option": 11, "help": 11, "version": 11, "about": 11, "detector": 11, "adapt": 11, "content": [11, 14], "hash": 11, "hist": 11, "threshold": 11, "export": 11, "html": 11, "list": 11, "scene": 11, "load": 11, "save": 11, "imag": 11, "opencv": 12, "pyav": 12, "moviepi": 12, "configur": 13, "templat": 13, "tabl": 14, "line": 14, "interfac": 14, "python": 14, "api": 14, "indic": 14}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"scenedetect \ud83c\udfac Package": [[0, "scenedetect-package"]], "Getting Started": [[0, "getting-started"]], "Functions": [[0, "module-scenedetect"]], "Module Reference": [[0, "module-reference"]], "PySceneDetect Module Documentation": [[0, null]], "Logging": [[0, "logging"]], "Migrating From 0.5": [[0, "migrating-from-0-5"]], "Backends": [[1, "module-scenedetect.backends"], [12, "backends"]], "Video Files": [[1, "video-files"]], "Devices / Cameras / Pipes": [[1, "devices-cameras-pipes"]], "Detection Algorithms": [[2, "module-scenedetect.detectors"]], "Args:": [[2, "args"]], "Returns:": [[2, "returns"]], "Examples:": [[2, "examples"]], "FrameTimecode": [[3, "module-scenedetect.frame_timecode"]], "Usage Examples": [[3, "usage-examples"]], "Migration Guide": [[4, "migration-guide"]], "VideoManager Class": [[4, "videomanager-class"]], "Seeking and Start/End Times": [[4, "seeking-and-start-end-times"]], "SceneManager Class": [[4, "scenemanager-class"]], "save_images Function": [[4, "save-images-function"]], "split_video_* Functions": [[4, "split-video-functions"]], "StatsManager Class": [[4, "statsmanager-class"]], "AdaptiveDetector Class": [[4, "adaptivedetector-class"]], "Other": [[4, "other"]], "ThresholdDetector Class": [[4, "thresholddetector-class"]], "ContentDetector Class": [[4, "contentdetector-class"]], "MINIMUM_FRAMES_PER_SECOND_* Constants": [[4, "minimum-frames-per-second-constants"]], "get_aspect_ratio Function": [[4, "get-aspect-ratio-function"]], "Platform & Logging": [[5, "module-scenedetect.platform"]], "SceneDetector": [[6, "module-scenedetect.scene_detector"]], "SceneManager": [[7, "module-scenedetect.scene_manager"]], "Usage": [[7, "usage"]], "Storing Per-Frame Statistics": [[7, "storing-per-frame-statistics"]], "StatsManager": [[8, "module-scenedetect.stats_manager"]], "Video Splitting": [[9, "module-scenedetect.video_splitter"]], "VideoStream": [[10, "module-scenedetect.video_stream"]], "scenedetect \ud83c\udfac Command": [[11, "scenedetect-command"]], "Examples": [[11, "examples"], [11, "id1"], [11, "id3"], [11, "id5"], [11, "id7"], [11, "id9"], [11, "id13"], [11, "id15"], [11, "id17"]], "Options": [[11, "options"], [11, "id2"], [11, "id4"], [11, "id6"], [11, "id8"], [11, "id10"], [11, "id11"], [11, "id12"], [11, "id14"], [11, "id16"], [11, "id18"], [11, "id19"]], "help, version, and about": [[11, "help-version-and-about"]], "Detectors": [[11, "detectors"]], "detect-adaptive": [[11, "detect-adaptive"]], "detect-content": [[11, "detect-content"]], "detect-hash": [[11, "detect-hash"]], "detect-hist": [[11, "detect-hist"]], "detect-threshold": [[11, "detect-threshold"]], "Commands": [[11, "commands"]], "export-html": [[11, "export-html"]], "list-scenes": [[11, "list-scenes"]], "load-scenes": [[11, "load-scenes"]], "save-images": [[11, "save-images"]], "split-video": [[11, "split-video"]], "time": [[11, "time"]], "OpenCV": [[12, "opencv"]], "PyAV": [[12, "pyav"]], "MoviePy": [[12, "moviepy"]], "Configuration File": [[13, "configuration-file"]], "Example": [[13, "example"]], "Template": [[13, "template"]], "PySceneDetect Documentation": [[14, "pyscenedetect-documentation"]], "Table of Contents": [[14, "table-of-contents"]], "scenedetect Command Reference \ud83d\udda5\ufe0f": [[14, "scenedetect-command-reference"]], "Command-Line Interface:": [[14, null]], "scenedetect Python Module \ud83d\udc0d": [[14, "scenedetect-python-module"]], "API Documentation:": [[14, null]], "Indices and Tables": [[14, "indices-and-tables"]]}, "indexentries": {"detect() (in module scenedetect)": [[0, "scenedetect.detect"]], "module": [[0, "module-scenedetect"], [1, "module-scenedetect.backends"], [1, "module-scenedetect.backends.moviepy"], [1, "module-scenedetect.backends.opencv"], [1, "module-scenedetect.backends.pyav"], [2, "module-scenedetect.detectors"], [2, "module-scenedetect.detectors.adaptive_detector"], [2, "module-scenedetect.detectors.content_detector"], [2, "module-scenedetect.detectors.hash_detector"], [2, "module-scenedetect.detectors.histogram_detector"], [2, "module-scenedetect.detectors.threshold_detector"], [3, "module-scenedetect.frame_timecode"], [5, "module-scenedetect.platform"], [6, "module-scenedetect.scene_detector"], [7, "module-scenedetect.scene_manager"], [8, "module-scenedetect.stats_manager"], [9, "module-scenedetect.video_splitter"], [10, "module-scenedetect.video_stream"]], "open_video() (in module scenedetect)": [[0, "scenedetect.open_video"]], "scenedetect": [[0, "module-scenedetect"]], "available_backends (in module scenedetect.backends)": [[1, "scenedetect.backends.AVAILABLE_BACKENDS"]], "backend_name (scenedetect.backends.moviepy.videostreammoviepy attribute)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.BACKEND_NAME"]], "backend_name (scenedetect.backends.opencv.videocaptureadapter attribute)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.BACKEND_NAME"]], "backend_name (scenedetect.backends.opencv.videostreamcv2 attribute)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.BACKEND_NAME"]], "backend_name (scenedetect.backends.pyav.videostreamav attribute)": [[1, "scenedetect.backends.pyav.VideoStreamAv.BACKEND_NAME"]], "videocaptureadapter (class in scenedetect.backends.opencv)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter"]], "videostreamav (class in scenedetect.backends.pyav)": [[1, "scenedetect.backends.pyav.VideoStreamAv"]], "videostreamcv2 (class in scenedetect.backends.opencv)": [[1, "scenedetect.backends.opencv.VideoStreamCv2"]], "videostreammoviepy (class in scenedetect.backends.moviepy)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy"]], "aspect_ratio (scenedetect.backends.moviepy.videostreammoviepy property)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.aspect_ratio"]], "aspect_ratio (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.aspect_ratio"]], "aspect_ratio (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.aspect_ratio"]], "aspect_ratio (scenedetect.backends.pyav.videostreamav property)": [[1, "scenedetect.backends.pyav.VideoStreamAv.aspect_ratio"]], "capture (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.capture"]], "capture (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.capture"]], "duration (scenedetect.backends.moviepy.videostreammoviepy property)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.duration"]], "duration (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.duration"]], "duration (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.duration"]], "duration (scenedetect.backends.pyav.videostreamav property)": [[1, "scenedetect.backends.pyav.VideoStreamAv.duration"]], "frame_number (scenedetect.backends.moviepy.videostreammoviepy property)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.frame_number"]], "frame_number (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.frame_number"]], "frame_number (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.frame_number"]], "frame_number (scenedetect.backends.pyav.videostreamav property)": [[1, "scenedetect.backends.pyav.VideoStreamAv.frame_number"]], "frame_rate (scenedetect.backends.moviepy.videostreammoviepy property)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.frame_rate"]], "frame_rate (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.frame_rate"]], "frame_rate (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.frame_rate"]], "frame_rate (scenedetect.backends.pyav.videostreamav property)": [[1, "scenedetect.backends.pyav.VideoStreamAv.frame_rate"]], "frame_size (scenedetect.backends.moviepy.videostreammoviepy property)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.frame_size"]], "frame_size (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.frame_size"]], "frame_size (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.frame_size"]], "frame_size (scenedetect.backends.pyav.videostreamav property)": [[1, "scenedetect.backends.pyav.VideoStreamAv.frame_size"]], "is_seekable (scenedetect.backends.moviepy.videostreammoviepy property)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.is_seekable"]], "is_seekable (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.is_seekable"]], "is_seekable (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.is_seekable"]], "is_seekable (scenedetect.backends.pyav.videostreamav property)": [[1, "scenedetect.backends.pyav.VideoStreamAv.is_seekable"]], "name (scenedetect.backends.moviepy.videostreammoviepy property)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.name"]], "name (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.name"]], "name (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.name"]], "name (scenedetect.backends.pyav.videostreamav property)": [[1, "scenedetect.backends.pyav.VideoStreamAv.name"]], "path (scenedetect.backends.moviepy.videostreammoviepy property)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.path"]], "path (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.path"]], "path (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.path"]], "path (scenedetect.backends.pyav.videostreamav property)": [[1, "scenedetect.backends.pyav.VideoStreamAv.path"]], "position (scenedetect.backends.moviepy.videostreammoviepy property)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.position"]], "position (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.position"]], "position (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.position"]], "position (scenedetect.backends.pyav.videostreamav property)": [[1, "scenedetect.backends.pyav.VideoStreamAv.position"]], "position_ms (scenedetect.backends.moviepy.videostreammoviepy property)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.position_ms"]], "position_ms (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.position_ms"]], "position_ms (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.position_ms"]], "position_ms (scenedetect.backends.pyav.videostreamav property)": [[1, "scenedetect.backends.pyav.VideoStreamAv.position_ms"]], "read() (scenedetect.backends.moviepy.videostreammoviepy method)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.read"]], "read() (scenedetect.backends.opencv.videocaptureadapter method)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.read"]], "read() (scenedetect.backends.opencv.videostreamcv2 method)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.read"]], "read() (scenedetect.backends.pyav.videostreamav method)": [[1, "scenedetect.backends.pyav.VideoStreamAv.read"]], "reset() (scenedetect.backends.moviepy.videostreammoviepy method)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.reset"]], "reset() (scenedetect.backends.opencv.videocaptureadapter method)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.reset"]], "reset() (scenedetect.backends.opencv.videostreamcv2 method)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.reset"]], "reset() (scenedetect.backends.pyav.videostreamav method)": [[1, "scenedetect.backends.pyav.VideoStreamAv.reset"]], "scenedetect.backends": [[1, "module-scenedetect.backends"]], "scenedetect.backends.moviepy": [[1, "module-scenedetect.backends.moviepy"]], "scenedetect.backends.opencv": [[1, "module-scenedetect.backends.opencv"]], "scenedetect.backends.pyav": [[1, "module-scenedetect.backends.pyav"]], "seek() (scenedetect.backends.moviepy.videostreammoviepy method)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.seek"]], "seek() (scenedetect.backends.opencv.videocaptureadapter method)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.seek"]], "seek() (scenedetect.backends.opencv.videostreamcv2 method)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.seek"]], "seek() (scenedetect.backends.pyav.videostreamav method)": [[1, "scenedetect.backends.pyav.VideoStreamAv.seek"]], "adaptivedetector (class in scenedetect.detectors.adaptive_detector)": [[2, "scenedetect.detectors.adaptive_detector.AdaptiveDetector"]], "ceiling (scenedetect.detectors.threshold_detector.thresholddetector.method attribute)": [[2, "scenedetect.detectors.threshold_detector.ThresholdDetector.Method.CEILING"]], "contentdetector (class in scenedetect.detectors.content_detector)": [[2, "scenedetect.detectors.content_detector.ContentDetector"]], "contentdetector.components (class in scenedetect.detectors.content_detector)": [[2, "scenedetect.detectors.content_detector.ContentDetector.Components"]], "default_component_weights (scenedetect.detectors.content_detector.contentdetector attribute)": [[2, "scenedetect.detectors.content_detector.ContentDetector.DEFAULT_COMPONENT_WEIGHTS"]], "floor (scenedetect.detectors.threshold_detector.thresholddetector.method attribute)": [[2, "scenedetect.detectors.threshold_detector.ThresholdDetector.Method.FLOOR"]], "frame_score_key (scenedetect.detectors.content_detector.contentdetector attribute)": [[2, "scenedetect.detectors.content_detector.ContentDetector.FRAME_SCORE_KEY"]], "hashdetector (class in scenedetect.detectors.hash_detector)": [[2, "scenedetect.detectors.hash_detector.HashDetector"]], "histogramdetector (class in scenedetect.detectors.histogram_detector)": [[2, "scenedetect.detectors.histogram_detector.HistogramDetector"]], "luma_only_weights (scenedetect.detectors.content_detector.contentdetector attribute)": [[2, "scenedetect.detectors.content_detector.ContentDetector.LUMA_ONLY_WEIGHTS"]], "metric_keys (scenedetect.detectors.content_detector.contentdetector attribute)": [[2, "scenedetect.detectors.content_detector.ContentDetector.METRIC_KEYS"]], "thresholddetector (class in scenedetect.detectors.threshold_detector)": [[2, "scenedetect.detectors.threshold_detector.ThresholdDetector"]], "thresholddetector.method (class in scenedetect.detectors.threshold_detector)": [[2, "scenedetect.detectors.threshold_detector.ThresholdDetector.Method"]], "calculate_histogram() (scenedetect.detectors.histogram_detector.histogramdetector static method)": [[2, "scenedetect.detectors.histogram_detector.HistogramDetector.calculate_histogram"]], "delta_edges (scenedetect.detectors.content_detector.contentdetector.components attribute)": [[2, "scenedetect.detectors.content_detector.ContentDetector.Components.delta_edges"]], "delta_hue (scenedetect.detectors.content_detector.contentdetector.components attribute)": [[2, "scenedetect.detectors.content_detector.ContentDetector.Components.delta_hue"]], "delta_lum (scenedetect.detectors.content_detector.contentdetector.components attribute)": [[2, "scenedetect.detectors.content_detector.ContentDetector.Components.delta_lum"]], "delta_sat (scenedetect.detectors.content_detector.contentdetector.components attribute)": [[2, "scenedetect.detectors.content_detector.ContentDetector.Components.delta_sat"]], "event_buffer_length (scenedetect.detectors.adaptive_detector.adaptivedetector property)": [[2, "scenedetect.detectors.adaptive_detector.AdaptiveDetector.event_buffer_length"]], "event_buffer_length (scenedetect.detectors.content_detector.contentdetector property)": [[2, "scenedetect.detectors.content_detector.ContentDetector.event_buffer_length"]], "get_content_val() (scenedetect.detectors.adaptive_detector.adaptivedetector method)": [[2, "scenedetect.detectors.adaptive_detector.AdaptiveDetector.get_content_val"]], "get_metrics() (scenedetect.detectors.adaptive_detector.adaptivedetector method)": [[2, "scenedetect.detectors.adaptive_detector.AdaptiveDetector.get_metrics"]], "get_metrics() (scenedetect.detectors.content_detector.contentdetector method)": [[2, "scenedetect.detectors.content_detector.ContentDetector.get_metrics"]], "get_metrics() (scenedetect.detectors.hash_detector.hashdetector method)": [[2, "scenedetect.detectors.hash_detector.HashDetector.get_metrics"]], "get_metrics() (scenedetect.detectors.histogram_detector.histogramdetector method)": [[2, "scenedetect.detectors.histogram_detector.HistogramDetector.get_metrics"]], "get_metrics() (scenedetect.detectors.threshold_detector.thresholddetector method)": [[2, "scenedetect.detectors.threshold_detector.ThresholdDetector.get_metrics"]], "hash_frame() (scenedetect.detectors.hash_detector.hashdetector static method)": [[2, "scenedetect.detectors.hash_detector.HashDetector.hash_frame"]], "is_processing_required() (scenedetect.detectors.content_detector.contentdetector method)": [[2, "scenedetect.detectors.content_detector.ContentDetector.is_processing_required"]], "is_processing_required() (scenedetect.detectors.hash_detector.hashdetector method)": [[2, "scenedetect.detectors.hash_detector.HashDetector.is_processing_required"]], "is_processing_required() (scenedetect.detectors.histogram_detector.histogramdetector method)": [[2, "scenedetect.detectors.histogram_detector.HistogramDetector.is_processing_required"]], "post_process() (scenedetect.detectors.adaptive_detector.adaptivedetector method)": [[2, "scenedetect.detectors.adaptive_detector.AdaptiveDetector.post_process"]], "post_process() (scenedetect.detectors.threshold_detector.thresholddetector method)": [[2, "scenedetect.detectors.threshold_detector.ThresholdDetector.post_process"]], "process_frame() (scenedetect.detectors.adaptive_detector.adaptivedetector method)": [[2, "scenedetect.detectors.adaptive_detector.AdaptiveDetector.process_frame"]], "process_frame() (scenedetect.detectors.content_detector.contentdetector method)": [[2, "scenedetect.detectors.content_detector.ContentDetector.process_frame"]], "process_frame() (scenedetect.detectors.hash_detector.hashdetector method)": [[2, "scenedetect.detectors.hash_detector.HashDetector.process_frame"]], "process_frame() (scenedetect.detectors.histogram_detector.histogramdetector method)": [[2, "scenedetect.detectors.histogram_detector.HistogramDetector.process_frame"]], "process_frame() (scenedetect.detectors.threshold_detector.thresholddetector method)": [[2, "scenedetect.detectors.threshold_detector.ThresholdDetector.process_frame"]], "scenedetect.detectors": [[2, "module-scenedetect.detectors"]], "scenedetect.detectors.adaptive_detector": [[2, "module-scenedetect.detectors.adaptive_detector"]], "scenedetect.detectors.content_detector": [[2, "module-scenedetect.detectors.content_detector"]], "scenedetect.detectors.hash_detector": [[2, "module-scenedetect.detectors.hash_detector"]], "scenedetect.detectors.histogram_detector": [[2, "module-scenedetect.detectors.histogram_detector"]], "scenedetect.detectors.threshold_detector": [[2, "module-scenedetect.detectors.threshold_detector"]], "stats_manager_required() (scenedetect.detectors.adaptive_detector.adaptivedetector method)": [[2, "scenedetect.detectors.adaptive_detector.AdaptiveDetector.stats_manager_required"]], "frametimecode (class in scenedetect.frame_timecode)": [[3, "scenedetect.frame_timecode.FrameTimecode"]], "max_fps_delta (in module scenedetect.frame_timecode)": [[3, "scenedetect.frame_timecode.MAX_FPS_DELTA"]], "equal_framerate() (scenedetect.frame_timecode.frametimecode method)": [[3, "scenedetect.frame_timecode.FrameTimecode.equal_framerate"]], "get_framerate() (scenedetect.frame_timecode.frametimecode method)": [[3, "scenedetect.frame_timecode.FrameTimecode.get_framerate"]], "get_frames() (scenedetect.frame_timecode.frametimecode method)": [[3, "scenedetect.frame_timecode.FrameTimecode.get_frames"]], "get_seconds() (scenedetect.frame_timecode.frametimecode method)": [[3, "scenedetect.frame_timecode.FrameTimecode.get_seconds"]], "get_timecode() (scenedetect.frame_timecode.frametimecode method)": [[3, "scenedetect.frame_timecode.FrameTimecode.get_timecode"]], "previous_frame() (scenedetect.frame_timecode.frametimecode method)": [[3, "scenedetect.frame_timecode.FrameTimecode.previous_frame"]], "scenedetect.frame_timecode": [[3, "module-scenedetect.frame_timecode"]], "commandtoolong": [[5, "scenedetect.platform.CommandTooLong"]], "faketqdmloggingredirect (class in scenedetect.platform)": [[5, "scenedetect.platform.FakeTqdmLoggingRedirect"]], "faketqdmobject (class in scenedetect.platform)": [[5, "scenedetect.platform.FakeTqdmObject"]], "template (class in scenedetect.platform)": [[5, "scenedetect.platform.Template"]], "close() (scenedetect.platform.faketqdmobject method)": [[5, "scenedetect.platform.FakeTqdmObject.close"]], "get_and_create_path() (in module scenedetect.platform)": [[5, "scenedetect.platform.get_and_create_path"]], "get_cv2_imwrite_params() (in module scenedetect.platform)": [[5, "scenedetect.platform.get_cv2_imwrite_params"]], "get_ffmpeg_path() (in module scenedetect.platform)": [[5, "scenedetect.platform.get_ffmpeg_path"]], "get_ffmpeg_version() (in module scenedetect.platform)": [[5, "scenedetect.platform.get_ffmpeg_version"]], "get_file_name() (in module scenedetect.platform)": [[5, "scenedetect.platform.get_file_name"]], "get_mkvmerge_version() (in module scenedetect.platform)": [[5, "scenedetect.platform.get_mkvmerge_version"]], "get_system_version_info() (in module scenedetect.platform)": [[5, "scenedetect.platform.get_system_version_info"]], "init_logger() (in module scenedetect.platform)": [[5, "scenedetect.platform.init_logger"]], "invoke_command() (in module scenedetect.platform)": [[5, "scenedetect.platform.invoke_command"]], "scenedetect.platform": [[5, "module-scenedetect.platform"]], "set_description() (scenedetect.platform.faketqdmobject method)": [[5, "scenedetect.platform.FakeTqdmObject.set_description"]], "update() (scenedetect.platform.faketqdmobject method)": [[5, "scenedetect.platform.FakeTqdmObject.update"]], "scenedetector (class in scenedetect.scene_detector)": [[6, "scenedetect.scene_detector.SceneDetector"]], "sparsescenedetector (class in scenedetect.scene_detector)": [[6, "scenedetect.scene_detector.SparseSceneDetector"]], "event_buffer_length (scenedetect.scene_detector.scenedetector property)": [[6, "scenedetect.scene_detector.SceneDetector.event_buffer_length"]], "get_metrics() (scenedetect.scene_detector.scenedetector method)": [[6, "scenedetect.scene_detector.SceneDetector.get_metrics"]], "is_processing_required() (scenedetect.scene_detector.scenedetector method)": [[6, "scenedetect.scene_detector.SceneDetector.is_processing_required"]], "post_process() (scenedetect.scene_detector.scenedetector method)": [[6, "scenedetect.scene_detector.SceneDetector.post_process"]], "post_process() (scenedetect.scene_detector.sparsescenedetector method)": [[6, "scenedetect.scene_detector.SparseSceneDetector.post_process"]], "process_frame() (scenedetect.scene_detector.scenedetector method)": [[6, "scenedetect.scene_detector.SceneDetector.process_frame"]], "process_frame() (scenedetect.scene_detector.sparsescenedetector method)": [[6, "scenedetect.scene_detector.SparseSceneDetector.process_frame"]], "scenedetect.scene_detector": [[6, "module-scenedetect.scene_detector"]], "stats_manager (scenedetect.scene_detector.scenedetector attribute)": [[6, "scenedetect.scene_detector.SceneDetector.stats_manager"]], "stats_manager_required() (scenedetect.scene_detector.scenedetector method)": [[6, "scenedetect.scene_detector.SceneDetector.stats_manager_required"]], "area (scenedetect.scene_manager.interpolation attribute)": [[7, "scenedetect.scene_manager.Interpolation.AREA"]], "cubic (scenedetect.scene_manager.interpolation attribute)": [[7, "scenedetect.scene_manager.Interpolation.CUBIC"]], "cutlist (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.CutList"]], "default_min_width (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.DEFAULT_MIN_WIDTH"]], "interpolation (class in scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.Interpolation"]], "lanczos4 (scenedetect.scene_manager.interpolation attribute)": [[7, "scenedetect.scene_manager.Interpolation.LANCZOS4"]], "linear (scenedetect.scene_manager.interpolation attribute)": [[7, "scenedetect.scene_manager.Interpolation.LINEAR"]], "max_frame_queue_length (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.MAX_FRAME_QUEUE_LENGTH"]], "max_frame_size_errors (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.MAX_FRAME_SIZE_ERRORS"]], "nearest (scenedetect.scene_manager.interpolation attribute)": [[7, "scenedetect.scene_manager.Interpolation.NEAREST"]], "progress_bar_description (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.PROGRESS_BAR_DESCRIPTION"]], "scenelist (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.SceneList"]], "scenemanager (class in scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.SceneManager"]], "add_detector() (scenedetect.scene_manager.scenemanager method)": [[7, "scenedetect.scene_manager.SceneManager.add_detector"]], "auto_downscale (scenedetect.scene_manager.scenemanager property)": [[7, "scenedetect.scene_manager.SceneManager.auto_downscale"]], "clear() (scenedetect.scene_manager.scenemanager method)": [[7, "scenedetect.scene_manager.SceneManager.clear"]], "clear_detectors() (scenedetect.scene_manager.scenemanager method)": [[7, "scenedetect.scene_manager.SceneManager.clear_detectors"]], "compute_downscale_factor() (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.compute_downscale_factor"]], "detect_scenes() (scenedetect.scene_manager.scenemanager method)": [[7, "scenedetect.scene_manager.SceneManager.detect_scenes"]], "downscale (scenedetect.scene_manager.scenemanager property)": [[7, "scenedetect.scene_manager.SceneManager.downscale"]], "get_num_detectors() (scenedetect.scene_manager.scenemanager method)": [[7, "scenedetect.scene_manager.SceneManager.get_num_detectors"]], "get_scene_list() (scenedetect.scene_manager.scenemanager method)": [[7, "scenedetect.scene_manager.SceneManager.get_scene_list"]], "get_scenes_from_cuts() (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.get_scenes_from_cuts"]], "interpolation (scenedetect.scene_manager.scenemanager property)": [[7, "scenedetect.scene_manager.SceneManager.interpolation"]], "save_images() (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.save_images"]], "scenedetect.scene_manager": [[7, "module-scenedetect.scene_manager"]], "stats_manager (scenedetect.scene_manager.scenemanager property)": [[7, "scenedetect.scene_manager.SceneManager.stats_manager"]], "stop() (scenedetect.scene_manager.scenemanager method)": [[7, "scenedetect.scene_manager.SceneManager.stop"]], "write_scene_list() (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.write_scene_list"]], "write_scene_list_html() (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.write_scene_list_html"]], "column_name_frame_number (in module scenedetect.stats_manager)": [[8, "scenedetect.stats_manager.COLUMN_NAME_FRAME_NUMBER"]], "column_name_timecode (in module scenedetect.stats_manager)": [[8, "scenedetect.stats_manager.COLUMN_NAME_TIMECODE"]], "statsfilecorrupt": [[8, "scenedetect.stats_manager.StatsFileCorrupt"]], "statsmanager (class in scenedetect.stats_manager)": [[8, "scenedetect.stats_manager.StatsManager"]], "get_metrics() (scenedetect.stats_manager.statsmanager method)": [[8, "scenedetect.stats_manager.StatsManager.get_metrics"]], "is_save_required() (scenedetect.stats_manager.statsmanager method)": [[8, "scenedetect.stats_manager.StatsManager.is_save_required"]], "metrics_exist() (scenedetect.stats_manager.statsmanager method)": [[8, "scenedetect.stats_manager.StatsManager.metrics_exist"]], "register_metrics() (scenedetect.stats_manager.statsmanager method)": [[8, "scenedetect.stats_manager.StatsManager.register_metrics"]], "save_to_csv() (scenedetect.stats_manager.statsmanager method)": [[8, "scenedetect.stats_manager.StatsManager.save_to_csv"]], "scenedetect.stats_manager": [[8, "module-scenedetect.stats_manager"]], "set_metrics() (scenedetect.stats_manager.statsmanager method)": [[8, "scenedetect.stats_manager.StatsManager.set_metrics"]], "valid_header() (scenedetect.stats_manager.statsmanager static method)": [[8, "scenedetect.stats_manager.StatsManager.valid_header"]], "default_ffmpeg_args (in module scenedetect.video_splitter)": [[9, "scenedetect.video_splitter.DEFAULT_FFMPEG_ARGS"]], "ffmpeg_path (in module scenedetect.video_splitter)": [[9, "scenedetect.video_splitter.FFMPEG_PATH"]], "scenemetadata (class in scenedetect.video_splitter)": [[9, "scenedetect.video_splitter.SceneMetadata"]], "timecodepair (in module scenedetect.video_splitter)": [[9, "scenedetect.video_splitter.TimecodePair"]], "videometadata (class in scenedetect.video_splitter)": [[9, "scenedetect.video_splitter.VideoMetadata"]], "default_formatter() (in module scenedetect.video_splitter)": [[9, "scenedetect.video_splitter.default_formatter"]], "end (scenedetect.video_splitter.scenemetadata attribute)": [[9, "scenedetect.video_splitter.SceneMetadata.end"]], "index (scenedetect.video_splitter.scenemetadata attribute)": [[9, "scenedetect.video_splitter.SceneMetadata.index"]], "is_ffmpeg_available() (in module scenedetect.video_splitter)": [[9, "scenedetect.video_splitter.is_ffmpeg_available"]], "is_mkvmerge_available() (in module scenedetect.video_splitter)": [[9, "scenedetect.video_splitter.is_mkvmerge_available"]], "name (scenedetect.video_splitter.videometadata attribute)": [[9, "scenedetect.video_splitter.VideoMetadata.name"]], "path (scenedetect.video_splitter.videometadata attribute)": [[9, "scenedetect.video_splitter.VideoMetadata.path"]], "scenedetect.video_splitter": [[9, "module-scenedetect.video_splitter"]], "split_video_ffmpeg() (in module scenedetect.video_splitter)": [[9, "scenedetect.video_splitter.split_video_ffmpeg"]], "split_video_mkvmerge() (in module scenedetect.video_splitter)": [[9, "scenedetect.video_splitter.split_video_mkvmerge"]], "start (scenedetect.video_splitter.scenemetadata attribute)": [[9, "scenedetect.video_splitter.SceneMetadata.start"]], "total_scenes (scenedetect.video_splitter.videometadata attribute)": [[9, "scenedetect.video_splitter.VideoMetadata.total_scenes"]], "backend_name() (scenedetect.video_stream.videostream static method)": [[10, "scenedetect.video_stream.VideoStream.BACKEND_NAME"]], "framerateunavailable": [[10, "scenedetect.video_stream.FrameRateUnavailable"]], "seekerror": [[10, "scenedetect.video_stream.SeekError"]], "videoopenfailure": [[10, "scenedetect.video_stream.VideoOpenFailure"]], "videostream (class in scenedetect.video_stream)": [[10, "scenedetect.video_stream.VideoStream"]], "aspect_ratio (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.aspect_ratio"]], "base_timecode (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.base_timecode"]], "duration (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.duration"]], "frame_number (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.frame_number"]], "frame_rate (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.frame_rate"]], "frame_size (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.frame_size"]], "is_seekable (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.is_seekable"]], "name (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.name"]], "path (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.path"]], "position (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.position"]], "position_ms (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.position_ms"]], "read() (scenedetect.video_stream.videostream method)": [[10, "scenedetect.video_stream.VideoStream.read"]], "reset() (scenedetect.video_stream.videostream method)": [[10, "scenedetect.video_stream.VideoStream.reset"]], "scenedetect.video_stream": [[10, "module-scenedetect.video_stream"]], "seek() (scenedetect.video_stream.videostream method)": [[10, "scenedetect.video_stream.VideoStream.seek"]], "--add-last-scene": [[11, "cmdoption-scenedetect-detect-threshold-l"]], "--args": [[11, "cmdoption-scenedetect-split-video-a"]], "--backend": [[11, "cmdoption-scenedetect-b"]], "--bins": [[11, "cmdoption-scenedetect-detect-hist-b"]], "--compression": [[11, "cmdoption-scenedetect-save-images-c"]], "--config": [[11, "cmdoption-scenedetect-c"]], "--copy": [[11, "cmdoption-scenedetect-split-video-c"]], "--downscale": [[11, "cmdoption-scenedetect-d"]], "--drop-short-scenes": [[11, "cmdoption-scenedetect-drop-short-scenes"]], "--duration": [[11, "cmdoption-scenedetect-time-d"]], "--end": [[11, "cmdoption-scenedetect-time-e"]], "--fade-bias": [[11, "cmdoption-scenedetect-detect-threshold-f"]], "--filename": [[11, "cmdoption-scenedetect-export-html-f"], [11, "cmdoption-scenedetect-list-scenes-f"], [11, "cmdoption-scenedetect-save-images-f"], [11, "cmdoption-scenedetect-split-video-f"]], "--frame-margin": [[11, "cmdoption-scenedetect-save-images-m"]], "--frame-skip": [[11, "cmdoption-scenedetect-fs"]], "--frame-window": [[11, "cmdoption-scenedetect-detect-adaptive-f"]], "--framerate": [[11, "cmdoption-scenedetect-f"]], "--height": [[11, "cmdoption-scenedetect-save-images-H"]], "--high-quality": [[11, "cmdoption-scenedetect-split-video-hq"]], "--image-height": [[11, "cmdoption-scenedetect-export-html-h"]], "--image-width": [[11, "cmdoption-scenedetect-export-html-w"]], "--input": [[11, "cmdoption-scenedetect-i"], [11, "cmdoption-scenedetect-load-scenes-i"]], "--jpeg": [[11, "cmdoption-scenedetect-save-images-j"]], "--kernel-size": [[11, "cmdoption-scenedetect-detect-adaptive-k"], [11, "cmdoption-scenedetect-detect-content-k"]], "--logfile": [[11, "cmdoption-scenedetect-l"]], "--lowpass": [[11, "cmdoption-scenedetect-detect-hash-l"]], "--luma-only": [[11, "cmdoption-scenedetect-detect-adaptive-l"], [11, "cmdoption-scenedetect-detect-content-l"]], "--merge-last-scene": [[11, "cmdoption-scenedetect-merge-last-scene"]], "--min-content-val": [[11, "cmdoption-scenedetect-detect-adaptive-c"]], "--min-delta-hsv": [[11, "cmdoption-scenedetect-detect-adaptive-d"]], "--min-scene-len": [[11, "cmdoption-scenedetect-detect-adaptive-m"], [11, "cmdoption-scenedetect-detect-content-m"], [11, "cmdoption-scenedetect-detect-hash-m"], [11, "cmdoption-scenedetect-detect-hist-m"], [11, "cmdoption-scenedetect-detect-threshold-m"], [11, "cmdoption-scenedetect-m"]], "--mkvmerge": [[11, "cmdoption-scenedetect-split-video-m"]], "--no-images": [[11, "cmdoption-scenedetect-export-html-no-images"]], "--no-output-file": [[11, "cmdoption-scenedetect-list-scenes-n"]], "--num-images": [[11, "cmdoption-scenedetect-save-images-n"]], "--output": [[11, "cmdoption-scenedetect-list-scenes-o"], [11, "cmdoption-scenedetect-o"], [11, "cmdoption-scenedetect-save-images-o"], [11, "cmdoption-scenedetect-split-video-o"]], "--png": [[11, "cmdoption-scenedetect-save-images-p"]], "--preset": [[11, "cmdoption-scenedetect-split-video-p"]], "--quality": [[11, "cmdoption-scenedetect-save-images-q"]], "--quiet": [[11, "cmdoption-scenedetect-list-scenes-q"], [11, "cmdoption-scenedetect-q"], [11, "cmdoption-scenedetect-split-video-q"]], "--rate-factor": [[11, "cmdoption-scenedetect-split-video-crf"]], "--scale": [[11, "cmdoption-scenedetect-save-images-s"]], "--size": [[11, "cmdoption-scenedetect-detect-hash-s"]], "--skip-cuts": [[11, "cmdoption-scenedetect-list-scenes-s"]], "--start": [[11, "cmdoption-scenedetect-time-s"]], "--start-col-name": [[11, "cmdoption-scenedetect-load-scenes-c"]], "--stats": [[11, "cmdoption-scenedetect-s"]], "--threshold": [[11, "cmdoption-scenedetect-detect-adaptive-t"], [11, "cmdoption-scenedetect-detect-content-t"], [11, "cmdoption-scenedetect-detect-hash-t"], [11, "cmdoption-scenedetect-detect-hist-t"], [11, "cmdoption-scenedetect-detect-threshold-t"]], "--verbosity": [[11, "cmdoption-scenedetect-v"]], "--webp": [[11, "cmdoption-scenedetect-save-images-w"]], "--weights": [[11, "cmdoption-scenedetect-detect-adaptive-w"], [11, "cmdoption-scenedetect-detect-content-w"]], "--width": [[11, "cmdoption-scenedetect-save-images-W"]], "-h": [[11, "cmdoption-scenedetect-save-images-H"], [11, "cmdoption-scenedetect-export-html-h"]], "-w": [[11, "cmdoption-scenedetect-save-images-W"], [11, "cmdoption-scenedetect-detect-adaptive-w"], [11, "cmdoption-scenedetect-detect-content-w"], [11, "cmdoption-scenedetect-export-html-w"], [11, "cmdoption-scenedetect-save-images-w"]], "-a": [[11, "cmdoption-scenedetect-split-video-a"]], "-b": [[11, "cmdoption-scenedetect-b"], [11, "cmdoption-scenedetect-detect-hist-b"]], "-c": [[11, "cmdoption-scenedetect-c"], [11, "cmdoption-scenedetect-detect-adaptive-c"], [11, "cmdoption-scenedetect-load-scenes-c"], [11, "cmdoption-scenedetect-save-images-c"], [11, "cmdoption-scenedetect-split-video-c"]], "-crf": [[11, "cmdoption-scenedetect-split-video-crf"]], "-d": [[11, "cmdoption-scenedetect-d"], [11, "cmdoption-scenedetect-detect-adaptive-d"], [11, "cmdoption-scenedetect-time-d"]], "-e": [[11, "cmdoption-scenedetect-time-e"]], "-f": [[11, "cmdoption-scenedetect-detect-adaptive-f"], [11, "cmdoption-scenedetect-detect-threshold-f"], [11, "cmdoption-scenedetect-export-html-f"], [11, "cmdoption-scenedetect-f"], [11, "cmdoption-scenedetect-list-scenes-f"], [11, "cmdoption-scenedetect-save-images-f"], [11, "cmdoption-scenedetect-split-video-f"]], "-fs": [[11, "cmdoption-scenedetect-fs"]], "-hq": [[11, "cmdoption-scenedetect-split-video-hq"]], "-i": [[11, "cmdoption-scenedetect-i"], [11, "cmdoption-scenedetect-load-scenes-i"]], "-j": [[11, "cmdoption-scenedetect-save-images-j"]], "-k": [[11, "cmdoption-scenedetect-detect-adaptive-k"], [11, "cmdoption-scenedetect-detect-content-k"]], "-l": [[11, "cmdoption-scenedetect-detect-adaptive-l"], [11, "cmdoption-scenedetect-detect-content-l"], [11, "cmdoption-scenedetect-detect-hash-l"], [11, "cmdoption-scenedetect-detect-threshold-l"], [11, "cmdoption-scenedetect-l"]], "-m": [[11, "cmdoption-scenedetect-detect-adaptive-m"], [11, "cmdoption-scenedetect-detect-content-m"], [11, "cmdoption-scenedetect-detect-hash-m"], [11, "cmdoption-scenedetect-detect-hist-m"], [11, "cmdoption-scenedetect-detect-threshold-m"], [11, "cmdoption-scenedetect-m"], [11, "cmdoption-scenedetect-save-images-m"], [11, "cmdoption-scenedetect-split-video-m"]], "-n": [[11, "cmdoption-scenedetect-list-scenes-n"], [11, "cmdoption-scenedetect-save-images-n"]], "-o": [[11, "cmdoption-scenedetect-list-scenes-o"], [11, "cmdoption-scenedetect-o"], [11, "cmdoption-scenedetect-save-images-o"], [11, "cmdoption-scenedetect-split-video-o"]], "-p": [[11, "cmdoption-scenedetect-save-images-p"], [11, "cmdoption-scenedetect-split-video-p"]], "-q": [[11, "cmdoption-scenedetect-list-scenes-q"], [11, "cmdoption-scenedetect-q"], [11, "cmdoption-scenedetect-save-images-q"], [11, "cmdoption-scenedetect-split-video-q"]], "-s": [[11, "cmdoption-scenedetect-detect-hash-s"], [11, "cmdoption-scenedetect-list-scenes-s"], [11, "cmdoption-scenedetect-s"], [11, "cmdoption-scenedetect-save-images-s"], [11, "cmdoption-scenedetect-time-s"]], "-t": [[11, "cmdoption-scenedetect-detect-adaptive-t"], [11, "cmdoption-scenedetect-detect-content-t"], [11, "cmdoption-scenedetect-detect-hash-t"], [11, "cmdoption-scenedetect-detect-hist-t"], [11, "cmdoption-scenedetect-detect-threshold-t"]], "-v": [[11, "cmdoption-scenedetect-v"]], "scenedetect command line option": [[11, "cmdoption-scenedetect-b"], [11, "cmdoption-scenedetect-c"], [11, "cmdoption-scenedetect-d"], [11, "cmdoption-scenedetect-drop-short-scenes"], [11, "cmdoption-scenedetect-f"], [11, "cmdoption-scenedetect-fs"], [11, "cmdoption-scenedetect-i"], [11, "cmdoption-scenedetect-l"], [11, "cmdoption-scenedetect-m"], [11, "cmdoption-scenedetect-merge-last-scene"], [11, "cmdoption-scenedetect-o"], [11, "cmdoption-scenedetect-q"], [11, "cmdoption-scenedetect-s"], [11, "cmdoption-scenedetect-v"]], "scenedetect-detect-adaptive command line option": [[11, "cmdoption-scenedetect-detect-adaptive-c"], [11, "cmdoption-scenedetect-detect-adaptive-d"], [11, "cmdoption-scenedetect-detect-adaptive-f"], [11, "cmdoption-scenedetect-detect-adaptive-k"], [11, "cmdoption-scenedetect-detect-adaptive-l"], [11, "cmdoption-scenedetect-detect-adaptive-m"], [11, "cmdoption-scenedetect-detect-adaptive-t"], [11, "cmdoption-scenedetect-detect-adaptive-w"]], "scenedetect-detect-content command line option": [[11, "cmdoption-scenedetect-detect-content-k"], [11, "cmdoption-scenedetect-detect-content-l"], [11, "cmdoption-scenedetect-detect-content-m"], [11, "cmdoption-scenedetect-detect-content-t"], [11, "cmdoption-scenedetect-detect-content-w"]], "scenedetect-detect-hash command line option": [[11, "cmdoption-scenedetect-detect-hash-l"], [11, "cmdoption-scenedetect-detect-hash-m"], [11, "cmdoption-scenedetect-detect-hash-s"], [11, "cmdoption-scenedetect-detect-hash-t"]], "scenedetect-detect-hist command line option": [[11, "cmdoption-scenedetect-detect-hist-b"], [11, "cmdoption-scenedetect-detect-hist-m"], [11, "cmdoption-scenedetect-detect-hist-t"]], "scenedetect-detect-threshold command line option": [[11, "cmdoption-scenedetect-detect-threshold-f"], [11, "cmdoption-scenedetect-detect-threshold-l"], [11, "cmdoption-scenedetect-detect-threshold-m"], [11, "cmdoption-scenedetect-detect-threshold-t"]], "scenedetect-export-html command line option": [[11, "cmdoption-scenedetect-export-html-f"], [11, "cmdoption-scenedetect-export-html-h"], [11, "cmdoption-scenedetect-export-html-no-images"], [11, "cmdoption-scenedetect-export-html-w"]], "scenedetect-list-scenes command line option": [[11, "cmdoption-scenedetect-list-scenes-f"], [11, "cmdoption-scenedetect-list-scenes-n"], [11, "cmdoption-scenedetect-list-scenes-o"], [11, "cmdoption-scenedetect-list-scenes-q"], [11, "cmdoption-scenedetect-list-scenes-s"]], "scenedetect-load-scenes command line option": [[11, "cmdoption-scenedetect-load-scenes-c"], [11, "cmdoption-scenedetect-load-scenes-i"]], "scenedetect-save-images command line option": [[11, "cmdoption-scenedetect-save-images-H"], [11, "cmdoption-scenedetect-save-images-W"], [11, "cmdoption-scenedetect-save-images-c"], [11, "cmdoption-scenedetect-save-images-f"], [11, "cmdoption-scenedetect-save-images-j"], [11, "cmdoption-scenedetect-save-images-m"], [11, "cmdoption-scenedetect-save-images-n"], [11, "cmdoption-scenedetect-save-images-o"], [11, "cmdoption-scenedetect-save-images-p"], [11, "cmdoption-scenedetect-save-images-q"], [11, "cmdoption-scenedetect-save-images-s"], [11, "cmdoption-scenedetect-save-images-w"]], "scenedetect-split-video command line option": [[11, "cmdoption-scenedetect-split-video-a"], [11, "cmdoption-scenedetect-split-video-c"], [11, "cmdoption-scenedetect-split-video-crf"], [11, "cmdoption-scenedetect-split-video-f"], [11, "cmdoption-scenedetect-split-video-hq"], [11, "cmdoption-scenedetect-split-video-m"], [11, "cmdoption-scenedetect-split-video-o"], [11, "cmdoption-scenedetect-split-video-p"], [11, "cmdoption-scenedetect-split-video-q"]], "scenedetect-time command line option": [[11, "cmdoption-scenedetect-time-d"], [11, "cmdoption-scenedetect-time-e"], [11, "cmdoption-scenedetect-time-s"]]}}) \ No newline at end of file +Search.setIndex({"docnames": ["api", "api/backends", "api/detectors", "api/frame_timecode", "api/migration_guide", "api/platform", "api/scene_detector", "api/scene_manager", "api/stats_manager", "api/video_splitter", "api/video_stream", "cli", "cli/backends", "cli/config_file", "index"], "filenames": ["api.rst", "api/backends.rst", "api/detectors.rst", "api/frame_timecode.rst", "api/migration_guide.rst", "api/platform.rst", "api/scene_detector.rst", "api/scene_manager.rst", "api/stats_manager.rst", "api/video_splitter.rst", "api/video_stream.rst", "cli.rst", "cli/backends.rst", "cli/config_file.rst", "index.rst"], "titles": ["scenedetect \ud83c\udfac Package", "Backends", "Detection Algorithms", "FrameTimecode", "Migration Guide", "Platform & Logging", "SceneDetector", "SceneManager", "StatsManager", "Video Splitting", "VideoStream", "scenedetect \ud83c\udfac Command", "Backends", "Configuration File", "PySceneDetect Documentation"], "terms": {"The": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "api": [0, 1, 4, 6, 12], "i": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "easi": 0, "integr": [0, 12], "most": [0, 4, 12, 13], "applic": [0, 1, 4], "workflow": [0, 4], "while": [0, 1, 7, 10], "also": [0, 1, 2, 3, 4, 6, 7, 8, 10, 11, 12, 13], "being": [0, 2, 6, 9, 13], "highli": 0, "extens": [0, 1, 5, 7, 10, 11, 13], "see": [0, 1, 2, 3, 4, 5, 6, 10, 11, 13, 14], "section": [0, 4, 12], "below": [0, 2, 3, 13], "some": [0, 2, 4, 5, 7, 12, 13], "common": 0, "us": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "case": [0, 1, 2, 4, 11], "contain": [0, 1, 2, 5, 6, 7, 8, 9, 10, 13], "sever": [0, 11], "includ": [0, 3, 7, 11, 12, 13], "detect": [0, 1, 6, 7, 8, 12, 13, 14], "which": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 13], "take": [0, 1, 2, 4, 11, 13], "path": [0, 1, 4, 5, 7, 8, 9, 10, 11, 13], "detector": [0, 2, 6, 7, 8, 13, 14], "find": [0, 2, 4, 7, 8, 11], "scene": [0, 1, 2, 6, 7, 9, 12, 13, 14], "transit": [0, 2, 4, 11], "exampl": [0, 1, 4, 6, 7, 10, 12, 14], "open_video": [0, 1, 4, 7, 10], "video": [0, 2, 3, 4, 6, 7, 10, 12, 13, 14], "input": [0, 1, 2, 4, 7, 8, 9, 10, 11, 12, 13], "scene_manag": [0, 1, 4, 7], "scenemanag": [0, 1, 2, 8, 14], "act": 0, "wai": [0, 2, 3, 5], "coordin": [0, 7], "via": [0, 1, 4, 7, 12, 13], "scenedetector": [0, 2, 7, 8, 14], "instanc": [0, 2, 5, 8, 10], "frame": [0, 1, 2, 3, 4, 6, 8, 9, 10, 11, 12, 13, 14], "videostream": [0, 1, 4, 7, 14], "thi": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13], "export": [0, 13, 14], "inform": [0, 1, 2, 7, 9, 10, 11, 13], "about": [0, 1, 9, 14], "variou": [0, 1, 12], "format": [0, 3, 5, 7, 9, 11, 13], "save_imag": [0, 7, 14], "save": [0, 7, 8, 13, 14], "imag": [0, 1, 2, 5, 7, 12, 13, 14], "each": [0, 1, 2, 3, 7, 8, 9, 10, 11, 13], "write_scene_list": [0, 7, 14], "cut": [0, 2, 3, 6, 7, 11, 13], "info": [0, 5, 11, 13], "csv": [0, 7, 8, 11, 13], "write_scene_list_html": [0, 7, 14], "viewabl": 0, "html": [0, 1, 2, 7, 9, 13, 14], "algorithm": [0, 1, 6, 8, 11, 14], "contentdetector": [0, 1, 2, 7, 14], "fast": [0, 2, 7, 11, 12, 13], "weight": [0, 2, 11, 13], "averag": [0, 2, 11, 13], "hsv": [0, 2, 11], "chang": [0, 2, 4, 6, 11, 13], "thresholddetector": [0, 2, 7, 14], "fade": [0, 2, 7, 11, 13], "out": [0, 2, 6, 7, 8, 11, 13], "pixel": [0, 1, 2, 7, 10, 11, 13], "intens": [0, 2, 13], "rgb": [0, 2], "adaptivedetector": [0, 2, 14], "roll": [0, 2, 11], "hsl": [0, 11], "histogramdetector": [0, 2, 14], "histogram": [0, 2, 11, 13], "hashdetector": [0, 2, 14], "perceptu": [0, 2, 11], "hash": [0, 2, 13, 14], "video_stream": [0, 10], "handl": [0, 2, 4, 5, 7, 8, 12], "through": [0, 1, 7, 11], "interfac": [0, 2, 6, 10, 13], "implement": [0, 1, 2, 3, 6, 7, 10], "librari": [0, 1, 5, 10, 13], "ar": [0, 1, 2, 3, 5, 6, 7, 8, 9, 11, 12, 13, 14], "provid": [0, 1, 4, 5, 6, 7, 8, 9, 10], "backend": [0, 4, 7, 10, 11, 13, 14], "opencv": [0, 1, 5, 7, 10, 11, 13, 14], "videostreamcv2": [0, 1, 7, 14], "pyav": [0, 1, 11, 13, 14], "videostreamav": [0, 1, 14], "moviepi": [0, 1, 11, 14], "videostreammoviepi": [0, 1, 14], "video_splitt": [0, 4, 9], "split_video_ffmpeg": [0, 4, 9, 14], "split_video_mkvmerg": [0, 4, 9, 14], "split": [0, 7, 13, 14], "base": [0, 1, 2, 3, 6, 7, 9, 10, 11, 13], "frame_timecod": [0, 3, 4], "frametimecod": [0, 1, 2, 4, 7, 8, 9, 10, 14], "class": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10], "store": [0, 3, 6, 8, 14], "convert": [0, 1, 2, 3, 10, 11], "perform": [0, 1, 2, 5, 6, 7, 11, 13], "arithmet": [0, 3], "timecod": [0, 1, 2, 3, 6, 7, 8, 9, 10, 11, 13], "accur": [0, 1, 3, 11, 12], "precis": [0, 3, 8, 11], "scene_detector": [0, 6], "must": [0, 1, 2, 6, 7, 8, 10, 11, 12, 13], "stats_manag": [0, 2, 6, 7, 8], "statsmanag": [0, 2, 6, 7, 14], "cach": [0, 6, 7], "metric": [0, 2, 6, 7, 8, 11, 13], "load": [0, 1, 8, 12, 13, 14], "them": [0, 11], "disk": [0, 7, 8], "analysi": [0, 7, 11], "platform": [0, 4, 14], "util": [0, 5], "type": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 12], "avail": [0, 1, 2, 5, 7, 9, 11], "directli": [0, 1, 2, 3, 6, 7], "make": [0, 2, 4, 12], "import": [0, 1, 4, 7, 10], "simpler": 0, "still": [0, 6, 7, 9, 12], "under": [0, 11, 12, 13], "develop": [0, 12, 14], "It": [0, 2, 4, 12, 13], "recommend": [0, 4, 7, 13], "you": [0, 1, 3, 4, 9, 10, 11, 12, 13, 14], "pin": 0, "version": [0, 4, 5, 7, 12, 14], "your": [0, 1, 9, 12, 13], "requir": [0, 1, 2, 4, 5, 6, 7, 8, 11, 12, 13, 14], "next": [0, 1, 2, 6, 10], "major": [0, 4], "releas": [0, 4, 6, 8, 14], "7": [0, 9], "veri": [0, 7, 8], "mp4": [0, 1, 4, 9, 10, 11], "scene_start": 0, "scene_end": 0, "print": [0, 1, 2, 3, 4, 7, 10, 11], "f": [0, 11, 12], "now": [0, 4], "list": [0, 2, 4, 5, 6, 7, 8, 9, 13, 14], "pair": [0, 6, 7, 9], "repres": [0, 1, 2, 6, 7, 9, 10, 11, 13], "end": [0, 1, 2, 7, 9, 10, 11, 13], "note": [0, 1, 4, 7, 9, 11, 12, 13], "can": [0, 1, 2, 3, 4, 6, 7, 8, 9, 10, 11, 12, 13, 14], "set": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 12, 13], "show_progress": [0, 4, 7, 9], "true": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "when": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13], "call": [0, 1, 4, 5, 7, 8, 9, 10], "displai": [0, 1, 7, 13], "progress": [0, 7, 9], "bar": [0, 5, 7, 9], "estim": [0, 11], "time": [0, 1, 2, 3, 5, 6, 7, 9, 10, 12, 13, 14], "remain": [0, 1, 2, 6], "here": 0, "we": [0, 1, 10], "There": [0, 2, 6], "mani": [0, 2, 4, 11], "data": [0, 2, 8, 11, 13], "automat": [0, 2, 7, 9, 11, 13], "ffmpeg": [0, 1, 5, 9, 11, 12, 13, 14], "scene_list": [0, 7, 9], "my_video": 0, "recip": 0, "found": [0, 1, 5, 7, 8], "github": [0, 2, 5, 13, 14], "limit": [0, 1, 5], "per": [0, 3, 11, 14], "For": [0, 1, 2, 4, 7, 8, 9, 10, 11], "advanc": [0, 1, 10], "usag": [0, 2, 14], "come": 0, "helper": [0, 7], "simplifi": [0, 4], "open": [0, 1, 4, 7, 8, 10, 11, 13], "video_path": [0, 7], "stats_file_path": [0, 7], "none": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 13], "fals": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11], "start_tim": [0, 4, 7, 9], "end_tim": [0, 4, 7, 9], "start_in_scen": [0, 7], "given": [0, 1, 2, 5, 6, 7, 8, 10, 13], "specifi": [0, 1, 2, 3, 5, 7, 9, 10, 11, 12, 13], "paramet": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 13], "str": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10], "absolut": [0, 5, 11], "rel": [0, 2, 5, 9, 13], "work": [0, 1, 4, 5, 7, 9, 11, 12, 13], "directori": [0, 1, 5, 7, 9, 11, 13], "A": [0, 2, 3, 7, 8, 11, 13], "full": [0, 5, 11], "statist": [0, 8, 14], "determin": [0, 2, 3, 8, 11], "better": [0, 7, 11, 13], "threshold": [0, 2, 4, 7, 8, 13, 14], "valu": [0, 1, 2, 3, 6, 7, 8, 10, 11, 13], "bool": [0, 1, 2, 3, 5, 6, 7, 8, 9, 10], "show": [0, 5, 7, 9, 11, 13], "default": [0, 1, 2, 4, 5, 7, 8, 9, 11, 12, 13], "float": [0, 1, 2, 3, 4, 7, 8, 10, 11], "int": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10], "point": [0, 1, 3, 8, 10, 11, 13], "form": [0, 3, 7, 11], "hh": [0, 3, 11], "mm": [0, 3, 11], "ss": [0, 3, 11], "nnn": [0, 3, 11], "number": [0, 1, 2, 3, 6, 7, 8, 9, 10, 11, 13], "second": [0, 1, 3, 4, 10, 11, 13], "123": 0, "45": [0, 3], "200": [0, 7], "assum": [0, 1, 2, 6, 7], "begin": [0, 6, 7, 10, 11, 13], "mean": [0, 2, 7, 11, 13], "result": [0, 1, 2, 3, 4, 5, 6, 7, 11, 13], "singl": [0, 1, 4, 6, 7, 11], "span": [0, 7], "entir": [0, 7, 8], "instead": [0, 1, 2, 4, 6, 7, 11, 13], "portion": [0, 7], "alwai": [0, 1, 5, 7, 9, 11], "until": [0, 1, 4, 7, 10, 13], "first": [0, 1, 4, 5, 7, 9, 10, 11, 13], "event": [0, 1, 2, 6, 7, 11, 13], "return": [0, 1, 3, 5, 6, 7, 8, 9, 10], "object": [0, 1, 2, 3, 4, 5, 6, 7, 8, 10], "rais": [0, 1, 3, 5, 7, 8, 10, 14], "videoopenfailur": [0, 1, 10, 14], "could": [0, 1, 8], "statsfilecorrupt": [0, 8, 14], "an": [0, 1, 2, 4, 5, 6, 7, 8, 10, 11, 13, 14], "invalid": [0, 1, 7], "stat": [0, 2, 6, 8, 11, 13], "file": [0, 2, 4, 5, 7, 8, 9, 11, 12, 14], "valueerror": [0, 1, 3, 7, 10], "incorrectli": 0, "typeerror": [0, 3], "tupl": [0, 1, 6, 7, 9, 10], "framer": [0, 1, 3, 7, 10, 11, 12], "kwarg": 0, "If": [0, 1, 2, 3, 4, 5, 7, 8, 9, 10, 11, 12, 13, 14], "current": [0, 1, 2, 3, 4, 5, 7, 8, 10, 11, 12], "system": [0, 1, 5, 9, 11, 13], "fallback": [0, 1], "overrid": [0, 1, 2, 5, 7, 9, 11, 13], "name": [0, 1, 2, 5, 6, 7, 8, 9, 10, 11, 13], "specif": [0, 1, 4, 5, 6, 10], "possibl": [0, 3, 10, 13], "available_backend": [0, 1, 14], "fail": [0, 1, 7, 10, 13], "option": [0, 1, 2, 3, 4, 5, 6, 7, 9, 10, 13, 14], "argument": [0, 1, 4, 5, 7, 9, 11, 13], "pass": [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 13], "constructor": [0, 1, 3, 4, 7], "creat": [0, 1, 2, 3, 4, 5, 6, 7, 11, 13], "construct": [0, 1, 4, 7, 8], "multipl": [0, 12], "have": [0, 1, 2, 4, 6, 8, 11], "been": [0, 1, 2, 4, 6, 7, 8], "attempt": [0, 1, 10, 13], "error": [0, 1, 5, 7, 10, 11, 12, 13, 14], "get_content_v": [0, 2], "get_metr": [0, 2, 6, 8], "post_process": [0, 2, 6], "process_fram": [0, 2, 6], "stats_manager_requir": [0, 2, 6], "event_buffer_length": [0, 2, 6], "compon": [0, 2, 11, 13], "is_processing_requir": [0, 2, 6], "default_component_weight": [0, 2], "frame_score_kei": [0, 2], "luma_only_weight": [0, 2], "metric_kei": [0, 2, 8], "hash_fram": [0, 2], "calculate_histogram": [0, 2], "method": [0, 1, 2, 3, 4, 5, 6, 7, 8, 13], "devic": [0, 7, 10, 14], "camera": [0, 2, 10, 11, 14], "pipe": [0, 14], "videocaptureadapt": [0, 1, 7, 14], "read": [0, 1, 6, 7, 10, 11, 13], "reset": [0, 1, 7, 10], "seek": [0, 1, 7, 10, 12], "backend_nam": [0, 1, 10], "aspect_ratio": [0, 1, 4, 10], "captur": [0, 1], "durat": [0, 1, 4, 7, 10, 11], "frame_numb": [0, 1, 2, 6, 7, 8, 10, 11, 13], "frame_r": [0, 1, 10], "frame_s": [0, 1, 10], "is_seek": [0, 1, 10], "posit": [0, 1, 2, 3, 4, 7, 10, 11, 13], "position_m": [0, 1, 10], "interpol": [0, 7, 14], "area": [0, 7, 13], "cubic": [0, 7, 13], "lanczos4": [0, 7, 13], "linear": [0, 7, 13], "nearest": [0, 7, 13], "add_detector": [0, 1, 4, 7], "clear": [0, 7], "clear_detector": [0, 7], "detect_scen": [0, 1, 4, 7, 8], "get_num_detector": [0, 7], "get_scene_list": [0, 4, 7], "stop": [0, 1, 7, 13], "auto_downscal": [0, 7], "downscal": [0, 7, 11, 13], "compute_downscale_factor": [0, 7, 14], "get_scenes_from_cut": [0, 7, 14], "cutlist": [0, 7, 14], "default_min_width": [0, 7, 14], "max_frame_queue_length": [0, 7, 14], "max_frame_size_error": [0, 7, 14], "progress_bar_descript": [0, 7, 14], "scenelist": [0, 7, 14], "scenemetadata": [0, 9, 14], "index": [0, 2, 5, 9, 14], "videometadata": [0, 9, 14], "total_scen": [0, 9], "default_formatt": [0, 9, 14], "is_ffmpeg_avail": [0, 9, 14], "is_mkvmerge_avail": [0, 9, 14], "default_ffmpeg_arg": [0, 9, 14], "ffmpeg_path": [0, 9, 14], "timecodepair": [0, 9, 14], "is_save_requir": [0, 8], "metrics_exist": [0, 8], "register_metr": [0, 8], "save_to_csv": [0, 4, 7, 8], "set_metr": [0, 8], "valid_head": [0, 8], "column_name_frame_numb": [0, 8, 14], "column_name_timecod": [0, 8, 14], "equal_framer": [0, 3], "get_framer": [0, 3], "get_fram": [0, 3], "get_second": [0, 3], "get_timecod": [0, 3], "previous_fram": [0, 3], "max_fps_delta": [0, 3, 4, 14], "sparsescenedetector": [0, 6, 14], "framerateunavail": [0, 10, 14], "seekerror": [0, 1, 10, 14], "base_timecod": [0, 1, 4, 7, 8, 10], "commandtoolong": [0, 5, 14], "faketqdmloggingredirect": [0, 5, 14], "faketqdmobject": [0, 5, 14], "close": [0, 1, 5, 7, 10], "set_descript": [0, 5], "updat": [0, 4, 5, 8], "templat": [0, 5, 7, 9, 14], "get_and_create_path": [0, 5, 14], "get_cv2_imwrite_param": [0, 5, 14], "get_ffmpeg_path": [0, 5, 14], "get_ffmpeg_vers": [0, 5, 14], "get_file_nam": [0, 5, 14], "get_mkvmerge_vers": [0, 5, 14], "get_system_version_info": [0, 5, 14], "init_logg": [0, 4, 5, 14], "invoke_command": [0, 5, 14], "guid": 0, "videomanag": 0, "split_video_": 0, "other": [0, 1, 2, 3, 7, 8, 11, 12], "minimum_frames_per_second_": 0, "constant": [0, 3, 7, 11], "get_aspect_ratio": 0, "output": [0, 1, 3, 5, 6, 7, 9, 11, 12, 13], "messag": [0, 5, 7, 8, 10], "logger": [0, 4, 5], "doe": [0, 1, 11, 13], "ani": [0, 1, 2, 4, 5, 6, 7, 8, 9, 11, 14], "handler": [0, 4, 5], "show_stdout": [0, 4, 5], "verbos": [0, 5, 11, 13], "attach": [0, 2, 4], "getlogg": 0, "manual": [0, 1, 12], "6": [0, 4, 11, 13], "introduc": 0, "break": [0, 2, 4, 7, 10], "incompat": 0, "detail": [0, 1, 4, 5, 10, 11, 13], "how": [0, 2, 4, 6, 11, 13], "In": [0, 1, 2, 3, 4], "addit": [0, 1, 2, 10], "demonstr": [0, 4], "test": [0, 2, 3, 4, 6, 10], "test_api": [0, 4], "py": [0, 4, 10], "scenedetect": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 13], "modul": [1, 2, 3, 5, 6, 7, 8, 9, 10], "back": [1, 3, 7, 10], "python": [1, 4, 5, 9, 12], "multimedia": 1, "fall": [1, 2], "all": [1, 2, 3, 5, 6, 7, 8, 10, 11, 12, 13], "alreadi": [1, 2, 5, 6], "cv2": [1, 2, 5, 7, 12], "videocaptur": [1, 7, 12], "want": [1, 10, 12, 14], "stream": [1, 10, 12], "our": 1, "from": [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14], "e": [1, 2, 3, 4, 5, 6, 7, 8, 10, 11, 12, 13], "g": [1, 2, 3, 4, 5, 7, 8, 10, 11, 12, 13], "keyword": 1, "forward": 1, "unavail": [1, 10], "tri": 1, "lastli": [1, 11], "both": [1, 2, 7, 11], "abov": [1, 2, 3, 4, 9], "exist": [1, 2, 4, 5, 7, 8, 9, 11], "pyscenedetect": [1, 3, 4, 5, 6, 9, 11, 12, 13], "webcam": [1, 7], "id": 1, "2": [1, 2, 4, 7, 9, 11, 13], "cap": 1, "total_fram": 1, "1000": [1, 11], "live": [1, 12], "callback": [1, 7, 9], "everi": [1, 5, 7, 11, 13], "dict": [1, 5, 7, 8], "consid": [1, 2, 7], "These": [1, 9], "support": [1, 5, 9, 10, 11, 12, 14], "follow": [1, 2, 3, 7, 9, 10, 11, 13], "signatur": 1, "backendtyp": 1, "sequenc": [1, 9, 11, 12], "network": [1, 12], "url": [1, 9, 11], "wrap": [1, 11], "allow": [1, 2, 3, 5, 7, 8, 9, 10], "do": [1, 2, 3, 6, 7, 8, 9, 11, 13], "max_read_attempt": 1, "5": [1, 3, 4, 7, 10, 11, 13, 14], "adapt": [1, 2, 13, 14], "unlik": [1, 6], "mai": [1, 2, 6, 7, 8, 9, 10, 11], "readi": 1, "continu": [1, 7], "decod": [1, 2, 7, 8, 10, 12, 13], "after": [1, 2, 6, 7, 8, 11, 12, 13], "process": [1, 2, 4, 6, 7, 11, 12, 13], "few": 1, "corrupt": [1, 12], "metadata": 1, "accuraci": [1, 7, 11], "lower": [1, 2, 11, 13], "onc": [1, 2, 9, 11], "emit": 1, "np": [1, 2, 10], "ndarrai": [1, 2, 6, 7, 10], "maximum": [1, 2, 3, 6, 7, 11], "ha": [1, 2, 4, 5, 6, 7, 10, 13], "last": [1, 2, 6, 7, 9, 10, 11, 13], "indic": [1, 2, 6, 7, 10, 11, 13], "succeed": [1, 10], "Not": [1, 2, 7, 13], "target": [1, 7, 10], "underli": [1, 10], "opencv_adapt": 1, "uniqu": [1, 10], "identifi": [1, 5, 10], "properti": [1, 2, 3, 4, 6, 7, 10], "aspect": [1, 7, 10], "ratio": [1, 2, 7, 10, 13], "1": [1, 2, 3, 4, 5, 7, 10, 11, 13], "0": [1, 2, 3, 4, 6, 7, 9, 10, 11, 13, 14], "squar": [1, 2, 10, 11, 13], "refer": [1, 2, 5, 11, 13], "caution": 1, "prefer": [1, 12, 13], "onli": [1, 2, 3, 4, 5, 7, 8, 9, 11, 13], "ownership": 1, "grab": 1, "unsupport": [1, 3], "leav": 1, "inconsist": 1, "state": [1, 10], "non": [1, 10], "termin": [1, 9, 10, 11], "within": [1, 3, 10], "wa": [1, 2, 4, 7], "just": [1, 6, 13], "wherea": 1, "sec": [1, 10, 11], "report": [1, 5], "size": [1, 2, 7, 10, 11, 13], "width": [1, 2, 7, 10, 11, 13], "height": [1, 2, 7, 10, 11, 13], "cap_adapt": 1, "elaps": 1, "off": 1, "devicesor": 1, "equal": [1, 2, 3, 11, 13], "present": [1, 10, 11], "millisecond": [1, 10], "m": [1, 11], "max_decode_attempt": 1, "path_or_devic": 1, "anystr": [1, 5, 9], "folder": [1, 13], "dsc_": 1, "04d": 1, "jpg": [1, 2, 5, 7, 12], "byte": [1, 8, 10], "deprec": [1, 2, 4, 6, 7, 8, 9, 11], "oserror": [1, 8], "access": [1, 3, 7, 9], "deni": 1, "re": [1, 7, 10, 11], "should": [1, 2, 4, 5, 6, 7, 8, 10, 12, 13], "equival": [1, 2, 3, 10, 11, 13], "pointer": [1, 10], "need": [1, 2, 6, 7, 10, 11], "subtract": [1, 3, 10], "one": [1, 2, 3, 5, 7, 10, 11, 13, 14], "5th": [1, 10], "4": [1, 2, 7, 10, 11, 13], "untest": 1, "web": 1, "interpret": [1, 10], "occur": [1, 2, 7, 8, 10, 13], "valid": [1, 2, 3, 6, 8, 10], "neg": [1, 3, 7, 10], "otherwis": [1, 2, 3, 6, 8, 9, 10], "without": [1, 2, 10, 11], "stamp": [1, 10], "av": [1, 12], "inputcontain": 1, "path_or_io": 1, "threading_mod": 1, "suppress_output": [1, 4, 9], "caus": [1, 2, 13], "lockup": 1, "document": 1, "http": [1, 2, 5, 9], "org": [1, 9], "doc": [1, 14], "stabl": [1, 4, 6], "overview": 1, "caveat": 1, "sub": 1, "interpet": 1, "binaryio": 1, "like": [1, 2, 5, 9], "deriv": [1, 6, 10], "thread_typ": 1, "codec": [1, 11, 13], "context": [1, 5, 10], "threadtyp": 1, "thread": [1, 7, 13], "mode": [1, 2, 7, 8, 11, 13], "auto": [1, 11, 13], "slice": [1, 13], "reopen": 1, "seekabl": [1, 10], "sent": 1, "stdout": [1, 5, 11], "stderr": 1, "log": [1, 4, 7, 11, 13, 14], "restore_default_callback": 1, "befor": [1, 2, 11, 13], "deadlock": 1, "Will": [1, 7, 10, 11], "rate": [1, 10, 11, 13], "thu": [1, 2, 6, 7, 10], "correspond": [1, 2, 6, 7, 10], "even": [1, 8, 10], "pt": [1, 10], "": [1, 2, 3, 5, 7, 9, 11, 12, 13], "ffmpeg_videoread": 1, "launch": [1, 12], "subprocess": [1, 5, 12], "gener": [1, 2, 7, 9, 11, 12, 13], "necessarili": [1, 2, 6], "avisynth": [1, 12], "script": [1, 12], "print_info": 1, "shot": [2, 6, 7, 11, 13], "colorspac": [2, 11], "slow": [2, 11, 13], "differ": [2, 3, 5, 9, 11, 13], "improv": [2, 6, 7, 11, 14], "motion": 2, "y": [2, 11, 13], "channel": [2, 11, 13], "yuv": [2, 11, 13], "space": 2, "calcul": [2, 3, 6, 7, 8, 9, 10, 11, 12, 13], "similar": [2, 11], "between": [2, 3, 7, 11, 13], "adjac": [2, 11, 13], "typic": [2, 9, 11], "howev": [2, 3, 12], "thei": [2, 11], "compar": [2, 3, 11, 13], "content": [2, 13], "except": [2, 5, 7, 8, 10], "isn": 2, "t": [2, 5, 11], "fix": [2, 5], "help": [2, 4, 13, 14], "mitig": [2, 11], "situat": [2, 11], "command": [2, 5, 9, 12, 13], "line": [2, 5, 9, 12, 13], "adaptive_detector": 2, "adaptive_threshold": 2, "3": [2, 3, 4, 7, 9, 11, 13], "min_scene_len": 2, "15": [2, 11, 13], "window_width": 2, "min_content_v": 2, "delta_hu": [2, 11, 13], "delta_sat": [2, 11, 13], "delta_lum": [2, 11, 13], "delta_edg": [2, 11, 13], "luma_onli": 2, "kernel_s": 2, "video_manag": [2, 4, 7], "min_delta_hsv": 2, "two": [2, 3, 4, 8, 11, 14], "score": [2, 11, 13], "appli": [2, 11, 13], "movement": [2, 11], "exce": [2, 5, 11, 13], "trigger": [2, 11, 13], "new": [2, 3, 4, 7, 8, 9, 10, 11, 13], "adaptive_ratio": [2, 11, 13], "ad": [2, 3, 4, 6, 7, 10], "window": [2, 5, 11, 12, 13, 14], "togeth": [2, 13], "order": [2, 6, 8, 11, 13], "deviat": [2, 11], "least": [2, 7, 11], "minimum": [2, 7, 11, 13], "content_v": [2, 11, 13], "regist": [2, 7, 8], "same": [2, 3, 4, 5, 6, 7, 8, 11, 13], "place": [2, 3, 4, 11, 13], "statsfil": [2, 7, 8, 11, 13], "against": [2, 3, 13], "omit": 2, "lumin": [2, 13], "kernel": [2, 11, 13], "post": [2, 6, 12], "edg": [2, 11, 13], "filter": [2, 11, 13], "resolut": [2, 7, 11, 13], "NOT": [2, 6, 7, 8, 9], "backward": [2, 4, 7, 8, 9], "compat": [2, 4, 5, 6, 7, 8, 9], "frame_num": [2, 3, 6, 7], "combin": [2, 11, 13], "kei": [2, 6, 7, 8], "_unused_frame_num": 2, "frame_img": [2, 6, 7], "sequenti": [2, 6], "start": [2, 5, 6, 7, 9, 11, 13, 14], "numpi": [2, 6, 7], "where": [2, 3, 4, 6, 7, 9, 11, 13], "more": [2, 4, 6, 7, 11, 12, 13], "behind": [2, 6], "due": [2, 13], "buffer": [2, 6, 7], "exceed": 2, "content_detector": 2, "27": [2, 11, 13], "filter_mod": 2, "merg": [2, 11, 13], "colour": [2, 13], "color": 2, "expand": [2, 11, 13], "odd": [2, 11, 13], "integ": [2, 8, 11, 13], "greater": [2, 11, 13], "than": [2, 7, 11, 13], "meet": 2, "up": [2, 7, 8], "larger": [2, 7, 11], "so": [2, 3, 7, 11], "adjust": 2, "accordingli": 2, "hue": [2, 11, 13], "luma": [2, 11, 13], "bright": [2, 11, 13], "satur": [2, 11, 13], "get": [2, 3, 5, 6, 7, 14], "string": [2, 3, 4, 5, 6, 7, 9, 11], "done": [2, 3, 6, 7], "assign": [2, 6], "_metric_kei": [2, 6], "actual": [2, 6, 7], "final": [2, 11], "weigh": 2, "produc": [2, 11], "amount": [2, 3, 6, 7, 11, 12, 13], "hash_detector": 2, "Then": 2, "395": [2, 11, 13], "16": [2, 7, 11, 13], "lowpass": [2, 11, 13], "direct": [2, 13], "cosin": [2, 11, 13], "transform": [2, 11, 13], "dct": [2, 11, 13], "binari": [2, 9], "median": 2, "www": 2, "hackerfactor": 2, "com": [2, 5, 14], "blog": 2, "php": 2, "archiv": 2, "432": 2, "look": [2, 5, 8, 13], "johannesbuchn": 2, "imagehash": 2, "ham": [2, 11], "distanc": [2, 11], "correl": 2, "smaller": [2, 7, 11, 13], "sensit": [2, 11, 13], "divid": 2, "x": [2, 3], "normal": [2, 11], "low": [2, 11, 13], "frequenc": [2, 11, 13], "much": [2, 11, 13], "high": [2, 4, 7, 11, 13], "keep": [2, 11, 13], "etc": [2, 5, 6, 11, 13], "static": [2, 8, 10], "hash_siz": 2, "factor": [2, 7, 11, 13], "phash": 2, "self": [2, 3], "inheret": 2, "subsequ": [2, 7], "hist": [2, 13, 14], "histogram_detector": 2, "05": [2, 3, 11, 13], "bin": [2, 11, 13], "256": [2, 7, 11, 13], "higher": [2, 7, 11, 13], "dicffer": 2, "impli": 2, "less": [2, 11], "bgr": 2, "function": [2, 5, 7, 9, 14], "extract": [2, 7, 9, 11], "comput": [2, 3, 6, 7, 9], "its": [2, 4], "sum": [2, 11, 13], "across": [2, 10], "shape": 2, "dimens": 2, "boolean": 2, "flag": [2, 9], "whether": 2, "1d": 2, "arrai": 2, "length": [2, 5, 11, 13], "element": [2, 7, 13], "count": 2, "particular": [2, 6, 8], "img": [2, 11, 13], "imread": 2, "path_to_imag": 2, "previou": [2, 3, 4, 7, 11], "threshold_detector": 2, "12": [2, 9, 11, 13], "fade_bia": 2, "add_final_scen": 2, "floor": 2, "block_siz": [2, 4], "level": [2, 4, 11], "long": [2, 5], "appropri": 2, "chosen": 2, "especi": 2, "account": 2, "grei": 2, "black": 2, "8": [2, 13], "bit": 2, "r": 2, "b": [2, 3, 11, 12], "percentag": 2, "skew": [2, 11, 13], "middl": [2, 11], "right": 2, "treat": 2, "qualnam": [2, 7], "boundari": [2, 7, 11, 13], "ceil": 2, "happen": [2, 7, 10, 14], "rise": 2, "write": [2, 5, 7, 8, 11, 13], "bia": [2, 11, 13], "sinc": [2, 3, 8], "locat": [2, 11, 13], "exact": [2, 3, 7, 11, 13], "cross": 2, "ty": [2, 9], "timestamp": 3, "part": [3, 9, 14], "29": 3, "fp": [3, 11], "97": 3, "seconds_float": 3, "10": [3, 11], "timecode_str": 3, "00": [3, 11], "000": [3, 11], "comparison": 3, "oper": [3, 5, 12], "operand": 3, "01": [3, 11], "add": [3, 5, 7, 9, 11, 13], "disallow": 3, "clamp": 3, "Be": 3, "care": 3, "c": [3, 9, 11, 13], "d": [3, 7, 10, 11], "assert": 3, "forth": 3, "compli": [3, 13], "three": 3, "23": 3, "678": 3, "ssss": [3, 11], "nnnn": [3, 11], "nnnnn": 3, "456": 3, "thrown": 3, "either": [3, 4, 7, 10, 12], "defin": [3, 7], "match": 3, "along": [3, 5], "measur": 3, "use_round": 3, "decim": 3, "round": 3, "desir": [3, 7], "truncat": 3, "1e": 3, "page": [4, 7, 14], "program": [4, 9, 11, 13], "written": [4, 8, 9, 13], "review": 4, "cover": 4, "v0": 4, "step": [4, 12], "toward": 4, "biggest": 4, "commonli": 4, "exhaust": 4, "complet": [4, 7, 11, 12, 13], "changelog": 4, "layer": 4, "avoid": [4, 11], "upon": [4, 8], "reli": 4, "remov": [4, 5, 6, 7, 8], "futur": [4, 8], "custom": [4, 9, 11, 12], "replac": [4, 5, 9], "previous": 4, "accept": 4, "neither": 4, "nor": 4, "renam": 4, "downscale_factor": 4, "scale": [4, 7, 11, 13], "To": [4, 7, 8, 10, 11, 12], "achiev": [4, 7], "hide_progress": [4, 9], "show_output": [4, 9], "consist": [4, 8, 10], "load_from_csv": 4, "longer": [4, 11], "calculate_frame_scor": 4, "_calculate_frame_scor": 4, "global": [4, 11, 12, 13], "minimum_frames_per_second_float": 4, "minimum_frames_per_second_delta_float": 4, "well": [5, 8, 11], "invok": [5, 7, 9], "extern": [5, 11], "kawrg": 5, "op": 5, "tqdm": [5, 7, 9], "manag": [5, 6, 9], "redirect": 5, "No": [5, 13], "desc": 5, "refresh": 5, "n": [5, 7, 11, 13], "matcher": 5, "filenam": [5, 7, 9, 11, 13], "file_path": 5, "output_directori": 5, "ignor": [5, 7, 11, 13], "drive": 5, "root": 5, "modif": 5, "ensur": [5, 9, 12], "output_dir": [5, 7, 9], "suitabl": 5, "imwrit": 5, "param": 5, "associ": [5, 7, 8], "qualiti": [5, 7, 11, 13], "compress": [5, 7, 11, 13], "dictionari": [5, 7], "png": [5, 7, 11, 13], "map": [5, 8, 9, 11, 13], "respect": [5, 8], "imwrite_jpeg_qu": 5, "imwrite_png_compress": 5, "check": [5, 8, 9], "imageio_ffmpeg": [5, 9], "packag": [5, 9, 12, 14], "couldn": 5, "include_extens": 5, "tmp": [5, 13], "foo": 5, "mkvmerg": [5, 9, 11, 13, 14], "tool": [5, 11, 13], "debug": [5, 11, 13], "bug": 5, "log_level": 5, "20": 5, "log_fil": 5, "initi": [5, 8], "By": [5, 13], "suppress": [5, 11, 13], "warn": [5, 11, 13], "critic": 5, "dump": 5, "arg": [5, 11, 13], "explicitli": 5, "too": 5, "breakthrough": [5, 14], "issu": [5, 12, 14], "164": 5, "code": [5, 9], "built": 5, "expect": [6, 7, 9], "unstabl": 6, "design": 6, "plan": 6, "v1": 6, "inherit": 6, "yet": [6, 8], "subject": 6, "dens": 6, "idea": 6, "prototyp": 6, "spars": 6, "oppos": 6, "motiondetector": 6, "individu": [6, 7], "run": [7, 11, 12, 13, 14], "over": [7, 13], "separ": [7, 14], "basic": 7, "def": 7, "on_new_scen": 7, "test_video_fil": 7, "print_scen": 7, "csv_file": [7, 8], "certain": [7, 8, 12], "resiz": [7, 13], "relat": 7, "resampl": 7, "moir": 7, "free": [7, 14], "bicub": 7, "lanczo": 7, "8x8": 7, "neighborhood": 7, "bilinear": 7, "neighbor": [7, 11], "facilit": 7, "parallel": 7, "background": 7, "bind": 7, "own": [7, 8], "temporari": 7, "sourc": 7, "origin": 7, "were": 7, "frame_skip": 7, "frame_sourc": 7, "obtain": [7, 8, 9], "get_cut_list": 7, "left": [7, 10], "reach": 7, "cannot": [7, 8, 10], "extrem": 7, "skip": [7, 11, 13], "percent": [7, 11, 13], "speed": [7, 11], "expens": [7, 11], "callabl": [7, 9], "safe": 7, "inter_": 7, "getter": 7, "frame_width": 7, "effective_width": 7, "optim": [7, 8], "effect": 7, "rang": 7, "300": 7, "cut_list": 7, "start_po": 7, "end_po": 7, "contigu": 7, "empti": [7, 9], "num_fram": 7, "start_fram": [7, 9], "occupi": 7, "num_imag": 7, "frame_margin": 7, "image_extens": 7, "encoder_param": 7, "95": [7, 11, 13], "image_name_templ": 7, "video_nam": [7, 9, 11, 13], "scene_numb": [7, 9, 11, 13], "image_numb": [7, 11, 13], "pad": [7, 11], "around": [7, 11], "move": 7, "webp": [7, 11, 13], "effici": 7, "100": [7, 11, 13], "lossless": [7, 11, 13], "9": [7, 11, 13], "best": 7, "files": [7, 13], "slower": [7, 11, 13], "encod": [7, 9, 11, 13], "variabl": [7, 9, 11], "timestamp_m": [7, 13], "instal": [7, 9, 11, 12, 14], "rescal": 7, "would": 7, "regardless": 7, "preserv": 7, "wide": [7, 9], "image_path": 7, "scene_num": 7, "newli": 7, "output_csv_fil": 7, "include_cut_list": 7, "textio": [7, 8], "denot": [7, 9], "row": [7, 8, 11, 13], "rfc": [7, 11, 13], "4180": [7, 11, 13], "compliant": [7, 11], "output_html_filenam": 7, "css": 7, "css_class": 7, "mytabl": 7, "image_filenam": 7, "image_width": 7, "image_height": 7, "besid": 7, "0th": 7, "tabl": [7, 11, 13], "hint": 7, "alia": [7, 9], "wait": 7, "human": 8, "readabl": 8, "ideal": 8, "analyz": 8, "addition": 8, "plot": 8, "graph": 8, "matplotlib": 8, "interest": 8, "seri": 8, "iter": [8, 9], "request": 8, "retriev": 8, "force_sav": 8, "w": [8, 11], "failur": [8, 10, 13], "metric_kv_dict": 8, "header": 8, "reader": 8, "column": [8, 11, 13], "clip": [9, 11, 13], "mkvtoolnix": 9, "download": [9, 13, 14], "linux": [9, 13], "user": [9, 13], "prompt": 9, "whichev": 9, "depend": [9, 11], "total": 9, "end_fram": 9, "gracefulli": [9, 12], "input_video_path": 9, "output_file_templ": 9, "arg_overrid": 9, "v": [9, 11, 13], "libx264": [9, 11, 13], "preset": [9, 11, 13], "veryfast": [9, 11, 13], "crf": [9, 11, 13], "22": [9, 11, 13], "aac": [9, 11, 13], "formatt": 9, "substitut": 9, "success": 9, "mkv": 9, "001": 9, "suffix": [9, 11], "quiet": [9, 11, 13], "opt": 9, "hostedtoolcach": 9, "x64": 9, "lib": 9, "python3": 9, "site": 9, "linux64": 9, "v4": 9, "agnost": 10, "unless": [10, 11], "suit": 10, "test_video_stream": 10, "subclass": 10, "unrecover": 10, "guarante": 10, "unknown": 10, "abstract": 10, "backend_identifi": 10, "syntax": [11, 13], "wherev": 11, "summari": 11, "config": [11, 12, 13], "strict": 11, "o": 11, "dir": 11, "unset": [11, 13], "overridden": 11, "overwritten": 11, "tune": 11, "min": [11, 13], "len": [11, 13], "02": 11, "53": 11, "633": 11, "drop": [11, 13], "short": [11, 13], "shorter": [11, 13], "select": 11, "disabl": [11, 13], "dure": 11, "reduc": 11, "50": 11, "33": 11, "25": 11, "q": [11, 13], "l": 11, "logfil": 11, "append": 11, "copyright": 11, "licens": 11, "redistribut": 11, "third": 11, "parti": 11, "softwar": 11, "interact": 11, "diff": 11, "val": [11, 13], "delta": 11, "greyscal": 11, "k": 11, "52": 11, "778": 11, "255": [11, 13], "record": 11, "increas": 11, "compens": 11, "multipli": 11, "32": 11, "good": 11, "try": 11, "max": [11, 13], "sat": 11, "lum": 11, "enforc": [11, 13], "taken": 11, "hash_dist": 11, "discret": 11, "frac": 11, "differenc": 11, "hist_diff": 11, "240": 11, "num": [11, 13], "delta_rgb": 11, "placement": 11, "preceed": 11, "macro": [11, 13], "quot": [11, 13], "h": 11, "escap": 11, "charact": 11, "col": [11, 13], "mark": [11, 13], "1024": 11, "mid": 11, "j": 11, "jpeg": [11, 13], "p": 11, "affect": [11, 13], "margin": [11, 13], "control": 11, "tempor": 11, "keyfram": [11, 13], "qpfile": 11, "x264": [11, 13], "x265": 11, "shift": [11, 13], "copi": [11, 13], "expans": 11, "hide": 11, "faster": [11, 13], "hq": 11, "17": [11, 13], "ultrafast": 11, "superfast": 11, "medium": [11, 13], "veryslow": 11, "doubl": [11, 13], "audio": [11, 12], "nn": 11, "minut": 11, "60": 11, "mutual": [11, 13], "exclus": [11, 13], "40": 11, "configur": [12, 14], "verifi": 12, "abil": 12, "replai": 12, "usual": 12, "mostli": 12, "reliabl": 12, "although": 12, "occasion": 12, "track": 12, "small": 12, "headless": 12, "pip": [12, 14], "02d": 12, "frame001": 12, "frame002": 12, "frame003": 12, "sure": 12, "robust": 12, "fine": 12, "distribut": 12, "enabl": [12, 13], "cfg": 13, "usernam": 13, "appdata": 13, "local": 13, "xdg_config_hom": 13, "mac": 13, "preced": 13, "those": 13, "describ": 13, "comment": 13, "option_a": 13, "option_b": 13, "26": 13, "80": 13, "text": 13, "usr": 13, "ye": 13, "consol": 13, "behavior": 13, "descript": 13, "consecut": 13, "discard": 13, "highest": 13, "center": 13, "bitrat": 13, "significantli": 13, "inaccur": 13, "drawback": 13, "visual": 13, "ident": 13, "One": 13, "half": 13, "complianc": 13, "qp": [13, 14], "fastest": 13, "exit": 13, "properli": 13, "osx": 13, "press": 13, "ctrl": 13, "quit": 13, "welcom": 14, "anoth": 14, "latest": 14, "build": 14, "suggest": 14, "feel": 14, "tracker": 14, "migrat": 14, "search": 14}, "objects": {"": [[0, 0, 0, "-", "scenedetect"]], "scenedetect": [[1, 0, 0, "-", "backends"], [0, 6, 1, "", "detect"], [2, 0, 0, "-", "detectors"], [3, 0, 0, "-", "frame_timecode"], [0, 6, 1, "", "open_video"], [5, 0, 0, "-", "platform"], [6, 0, 0, "-", "scene_detector"], [7, 0, 0, "-", "scene_manager"], [8, 0, 0, "-", "stats_manager"], [9, 0, 0, "-", "video_splitter"], [10, 0, 0, "-", "video_stream"], [11, 8, 1, "cmdoption-scenedetect-b", "--backend"], [11, 8, 1, "cmdoption-scenedetect-c", "--config"], [11, 8, 1, "cmdoption-scenedetect-d", "--downscale"], [11, 8, 1, "cmdoption-scenedetect-drop-short-scenes", "--drop-short-scenes"], [11, 8, 1, "cmdoption-scenedetect-fs", "--frame-skip"], [11, 8, 1, "cmdoption-scenedetect-f", "--framerate"], [11, 8, 1, "cmdoption-scenedetect-i", "--input"], [11, 8, 1, "cmdoption-scenedetect-l", "--logfile"], [11, 8, 1, "cmdoption-scenedetect-merge-last-scene", "--merge-last-scene"], [11, 8, 1, "cmdoption-scenedetect-m", "--min-scene-len"], [11, 8, 1, "cmdoption-scenedetect-o", "--output"], [11, 8, 1, "cmdoption-scenedetect-q", "--quiet"], [11, 8, 1, "cmdoption-scenedetect-s", "--stats"], [11, 8, 1, "cmdoption-scenedetect-v", "--verbosity"], [11, 8, 1, "cmdoption-scenedetect-b", "-b"], [11, 8, 1, "cmdoption-scenedetect-c", "-c"], [11, 8, 1, "cmdoption-scenedetect-d", "-d"], [11, 8, 1, "cmdoption-scenedetect-f", "-f"], [11, 8, 1, "cmdoption-scenedetect-fs", "-fs"], [11, 8, 1, "cmdoption-scenedetect-i", "-i"], [11, 8, 1, "cmdoption-scenedetect-l", "-l"], [11, 8, 1, "cmdoption-scenedetect-m", "-m"], [11, 8, 1, "cmdoption-scenedetect-o", "-o"], [11, 8, 1, "cmdoption-scenedetect-q", "-q"], [11, 8, 1, "cmdoption-scenedetect-s", "-s"], [11, 8, 1, "cmdoption-scenedetect-v", "-v"]], "scenedetect.backends": [[1, 1, 1, "", "AVAILABLE_BACKENDS"], [1, 0, 0, "-", "moviepy"], [1, 0, 0, "-", "opencv"], [1, 0, 0, "-", "pyav"]], "scenedetect.backends.moviepy": [[1, 2, 1, "", "VideoStreamMoviePy"]], "scenedetect.backends.moviepy.VideoStreamMoviePy": [[1, 3, 1, "", "BACKEND_NAME"], [1, 4, 1, "", "aspect_ratio"], [1, 4, 1, "", "duration"], [1, 4, 1, "", "frame_number"], [1, 4, 1, "", "frame_rate"], [1, 4, 1, "", "frame_size"], [1, 4, 1, "", "is_seekable"], [1, 4, 1, "", "name"], [1, 4, 1, "", "path"], [1, 4, 1, "", "position"], [1, 4, 1, "", "position_ms"], [1, 5, 1, "", "read"], [1, 5, 1, "", "reset"], [1, 5, 1, "", "seek"]], "scenedetect.backends.opencv": [[1, 2, 1, "", "VideoCaptureAdapter"], [1, 2, 1, "", "VideoStreamCv2"]], "scenedetect.backends.opencv.VideoCaptureAdapter": [[1, 3, 1, "", "BACKEND_NAME"], [1, 4, 1, "", "aspect_ratio"], [1, 4, 1, "", "capture"], [1, 4, 1, "", "duration"], [1, 4, 1, "", "frame_number"], [1, 4, 1, "", "frame_rate"], [1, 4, 1, "", "frame_size"], [1, 4, 1, "", "is_seekable"], [1, 4, 1, "", "name"], [1, 4, 1, "", "path"], [1, 4, 1, "", "position"], [1, 4, 1, "", "position_ms"], [1, 5, 1, "", "read"], [1, 5, 1, "", "reset"], [1, 5, 1, "", "seek"]], "scenedetect.backends.opencv.VideoStreamCv2": [[1, 3, 1, "", "BACKEND_NAME"], [1, 4, 1, "", "aspect_ratio"], [1, 4, 1, "", "capture"], [1, 4, 1, "", "duration"], [1, 4, 1, "", "frame_number"], [1, 4, 1, "", "frame_rate"], [1, 4, 1, "", "frame_size"], [1, 4, 1, "", "is_seekable"], [1, 4, 1, "", "name"], [1, 4, 1, "", "path"], [1, 4, 1, "", "position"], [1, 4, 1, "", "position_ms"], [1, 5, 1, "", "read"], [1, 5, 1, "", "reset"], [1, 5, 1, "", "seek"]], "scenedetect.backends.pyav": [[1, 2, 1, "", "VideoStreamAv"]], "scenedetect.backends.pyav.VideoStreamAv": [[1, 3, 1, "", "BACKEND_NAME"], [1, 4, 1, "", "aspect_ratio"], [1, 4, 1, "", "duration"], [1, 4, 1, "", "frame_number"], [1, 4, 1, "", "frame_rate"], [1, 4, 1, "", "frame_size"], [1, 4, 1, "", "is_seekable"], [1, 4, 1, "", "name"], [1, 4, 1, "", "path"], [1, 4, 1, "", "position"], [1, 4, 1, "", "position_ms"], [1, 5, 1, "", "read"], [1, 5, 1, "", "reset"], [1, 5, 1, "", "seek"]], "scenedetect.detectors": [[2, 0, 0, "-", "adaptive_detector"], [2, 0, 0, "-", "content_detector"], [2, 0, 0, "-", "hash_detector"], [2, 0, 0, "-", "histogram_detector"], [2, 0, 0, "-", "threshold_detector"]], "scenedetect.detectors.adaptive_detector": [[2, 2, 1, "", "AdaptiveDetector"]], "scenedetect.detectors.adaptive_detector.AdaptiveDetector": [[2, 4, 1, "", "event_buffer_length"], [2, 5, 1, "", "get_content_val"], [2, 5, 1, "", "get_metrics"], [2, 5, 1, "", "post_process"], [2, 5, 1, "", "process_frame"], [2, 5, 1, "", "stats_manager_required"]], "scenedetect.detectors.content_detector": [[2, 2, 1, "", "ContentDetector"]], "scenedetect.detectors.content_detector.ContentDetector": [[2, 2, 1, "", "Components"], [2, 3, 1, "", "DEFAULT_COMPONENT_WEIGHTS"], [2, 3, 1, "", "FRAME_SCORE_KEY"], [2, 3, 1, "", "LUMA_ONLY_WEIGHTS"], [2, 3, 1, "", "METRIC_KEYS"], [2, 4, 1, "", "event_buffer_length"], [2, 5, 1, "", "get_metrics"], [2, 5, 1, "", "is_processing_required"], [2, 5, 1, "", "process_frame"]], "scenedetect.detectors.content_detector.ContentDetector.Components": [[2, 3, 1, "", "delta_edges"], [2, 3, 1, "", "delta_hue"], [2, 3, 1, "", "delta_lum"], [2, 3, 1, "", "delta_sat"]], "scenedetect.detectors.hash_detector": [[2, 2, 1, "", "HashDetector"]], "scenedetect.detectors.hash_detector.HashDetector": [[2, 5, 1, "", "get_metrics"], [2, 5, 1, "", "hash_frame"], [2, 5, 1, "", "is_processing_required"], [2, 5, 1, "", "process_frame"]], "scenedetect.detectors.histogram_detector": [[2, 2, 1, "", "HistogramDetector"]], "scenedetect.detectors.histogram_detector.HistogramDetector": [[2, 5, 1, "", "calculate_histogram"], [2, 5, 1, "", "get_metrics"], [2, 5, 1, "", "is_processing_required"], [2, 5, 1, "", "process_frame"]], "scenedetect.detectors.threshold_detector": [[2, 2, 1, "", "ThresholdDetector"]], "scenedetect.detectors.threshold_detector.ThresholdDetector": [[2, 2, 1, "", "Method"], [2, 5, 1, "", "get_metrics"], [2, 5, 1, "", "post_process"], [2, 5, 1, "", "process_frame"]], "scenedetect.detectors.threshold_detector.ThresholdDetector.Method": [[2, 3, 1, "", "CEILING"], [2, 3, 1, "", "FLOOR"]], "scenedetect.frame_timecode": [[3, 2, 1, "", "FrameTimecode"], [3, 1, 1, "", "MAX_FPS_DELTA"]], "scenedetect.frame_timecode.FrameTimecode": [[3, 5, 1, "", "equal_framerate"], [3, 5, 1, "", "get_framerate"], [3, 5, 1, "", "get_frames"], [3, 5, 1, "", "get_seconds"], [3, 5, 1, "", "get_timecode"], [3, 5, 1, "", "previous_frame"]], "scenedetect.platform": [[5, 7, 1, "", "CommandTooLong"], [5, 2, 1, "", "FakeTqdmLoggingRedirect"], [5, 2, 1, "", "FakeTqdmObject"], [5, 2, 1, "", "Template"], [5, 6, 1, "", "get_and_create_path"], [5, 6, 1, "", "get_cv2_imwrite_params"], [5, 6, 1, "", "get_ffmpeg_path"], [5, 6, 1, "", "get_ffmpeg_version"], [5, 6, 1, "", "get_file_name"], [5, 6, 1, "", "get_mkvmerge_version"], [5, 6, 1, "", "get_system_version_info"], [5, 6, 1, "", "init_logger"], [5, 6, 1, "", "invoke_command"]], "scenedetect.platform.FakeTqdmObject": [[5, 5, 1, "", "close"], [5, 5, 1, "", "set_description"], [5, 5, 1, "", "update"]], "scenedetect.scene_detector": [[6, 2, 1, "", "SceneDetector"], [6, 2, 1, "", "SparseSceneDetector"]], "scenedetect.scene_detector.SceneDetector": [[6, 4, 1, "", "event_buffer_length"], [6, 5, 1, "", "get_metrics"], [6, 5, 1, "", "is_processing_required"], [6, 5, 1, "", "post_process"], [6, 5, 1, "", "process_frame"], [6, 3, 1, "", "stats_manager"], [6, 5, 1, "", "stats_manager_required"]], "scenedetect.scene_detector.SparseSceneDetector": [[6, 5, 1, "", "post_process"], [6, 5, 1, "", "process_frame"]], "scenedetect.scene_manager": [[7, 1, 1, "", "CutList"], [7, 1, 1, "", "DEFAULT_MIN_WIDTH"], [7, 2, 1, "", "Interpolation"], [7, 1, 1, "", "MAX_FRAME_QUEUE_LENGTH"], [7, 1, 1, "", "MAX_FRAME_SIZE_ERRORS"], [7, 1, 1, "", "PROGRESS_BAR_DESCRIPTION"], [7, 1, 1, "", "SceneList"], [7, 2, 1, "", "SceneManager"], [7, 6, 1, "", "compute_downscale_factor"], [7, 6, 1, "", "get_scenes_from_cuts"], [7, 6, 1, "", "save_images"], [7, 6, 1, "", "write_scene_list"], [7, 6, 1, "", "write_scene_list_html"]], "scenedetect.scene_manager.Interpolation": [[7, 3, 1, "", "AREA"], [7, 3, 1, "", "CUBIC"], [7, 3, 1, "", "LANCZOS4"], [7, 3, 1, "", "LINEAR"], [7, 3, 1, "", "NEAREST"]], "scenedetect.scene_manager.SceneManager": [[7, 5, 1, "", "add_detector"], [7, 4, 1, "", "auto_downscale"], [7, 5, 1, "", "clear"], [7, 5, 1, "", "clear_detectors"], [7, 5, 1, "", "detect_scenes"], [7, 4, 1, "", "downscale"], [7, 5, 1, "", "get_num_detectors"], [7, 5, 1, "", "get_scene_list"], [7, 4, 1, "", "interpolation"], [7, 4, 1, "", "stats_manager"], [7, 5, 1, "", "stop"]], "scenedetect.stats_manager": [[8, 1, 1, "", "COLUMN_NAME_FRAME_NUMBER"], [8, 1, 1, "", "COLUMN_NAME_TIMECODE"], [8, 7, 1, "", "StatsFileCorrupt"], [8, 2, 1, "", "StatsManager"]], "scenedetect.stats_manager.StatsManager": [[8, 5, 1, "", "get_metrics"], [8, 5, 1, "", "is_save_required"], [8, 5, 1, "", "metrics_exist"], [8, 5, 1, "", "register_metrics"], [8, 5, 1, "", "save_to_csv"], [8, 5, 1, "", "set_metrics"], [8, 5, 1, "", "valid_header"]], "scenedetect.video_splitter": [[9, 1, 1, "", "DEFAULT_FFMPEG_ARGS"], [9, 1, 1, "", "FFMPEG_PATH"], [9, 2, 1, "", "SceneMetadata"], [9, 1, 1, "", "TimecodePair"], [9, 2, 1, "", "VideoMetadata"], [9, 6, 1, "", "default_formatter"], [9, 6, 1, "", "is_ffmpeg_available"], [9, 6, 1, "", "is_mkvmerge_available"], [9, 6, 1, "", "split_video_ffmpeg"], [9, 6, 1, "", "split_video_mkvmerge"]], "scenedetect.video_splitter.SceneMetadata": [[9, 3, 1, "", "end"], [9, 3, 1, "", "index"], [9, 3, 1, "", "start"]], "scenedetect.video_splitter.VideoMetadata": [[9, 3, 1, "", "name"], [9, 3, 1, "", "path"], [9, 3, 1, "", "total_scenes"]], "scenedetect.video_stream": [[10, 7, 1, "", "FrameRateUnavailable"], [10, 7, 1, "", "SeekError"], [10, 7, 1, "", "VideoOpenFailure"], [10, 2, 1, "", "VideoStream"]], "scenedetect.video_stream.VideoStream": [[10, 5, 1, "", "BACKEND_NAME"], [10, 4, 1, "", "aspect_ratio"], [10, 4, 1, "", "base_timecode"], [10, 4, 1, "", "duration"], [10, 4, 1, "", "frame_number"], [10, 4, 1, "", "frame_rate"], [10, 4, 1, "", "frame_size"], [10, 4, 1, "", "is_seekable"], [10, 4, 1, "", "name"], [10, 4, 1, "", "path"], [10, 4, 1, "", "position"], [10, 4, 1, "", "position_ms"], [10, 5, 1, "", "read"], [10, 5, 1, "", "reset"], [10, 5, 1, "", "seek"]], "scenedetect-detect-adaptive": [[11, 8, 1, "cmdoption-scenedetect-detect-adaptive-f", "--frame-window"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-k", "--kernel-size"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-l", "--luma-only"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-c", "--min-content-val"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-d", "--min-delta-hsv"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-m", "--min-scene-len"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-t", "--threshold"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-w", "--weights"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-c", "-c"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-d", "-d"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-f", "-f"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-k", "-k"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-l", "-l"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-m", "-m"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-t", "-t"], [11, 8, 1, "cmdoption-scenedetect-detect-adaptive-w", "-w"]], "scenedetect-detect-content": [[11, 8, 1, "cmdoption-scenedetect-detect-content-f", "--filter-mode"], [11, 8, 1, "cmdoption-scenedetect-detect-content-k", "--kernel-size"], [11, 8, 1, "cmdoption-scenedetect-detect-content-l", "--luma-only"], [11, 8, 1, "cmdoption-scenedetect-detect-content-m", "--min-scene-len"], [11, 8, 1, "cmdoption-scenedetect-detect-content-t", "--threshold"], [11, 8, 1, "cmdoption-scenedetect-detect-content-w", "--weights"], [11, 8, 1, "cmdoption-scenedetect-detect-content-f", "-f"], [11, 8, 1, "cmdoption-scenedetect-detect-content-k", "-k"], [11, 8, 1, "cmdoption-scenedetect-detect-content-l", "-l"], [11, 8, 1, "cmdoption-scenedetect-detect-content-m", "-m"], [11, 8, 1, "cmdoption-scenedetect-detect-content-t", "-t"], [11, 8, 1, "cmdoption-scenedetect-detect-content-w", "-w"]], "scenedetect-detect-hash": [[11, 8, 1, "cmdoption-scenedetect-detect-hash-l", "--lowpass"], [11, 8, 1, "cmdoption-scenedetect-detect-hash-m", "--min-scene-len"], [11, 8, 1, "cmdoption-scenedetect-detect-hash-s", "--size"], [11, 8, 1, "cmdoption-scenedetect-detect-hash-t", "--threshold"], [11, 8, 1, "cmdoption-scenedetect-detect-hash-l", "-l"], [11, 8, 1, "cmdoption-scenedetect-detect-hash-m", "-m"], [11, 8, 1, "cmdoption-scenedetect-detect-hash-s", "-s"], [11, 8, 1, "cmdoption-scenedetect-detect-hash-t", "-t"]], "scenedetect-detect-hist": [[11, 8, 1, "cmdoption-scenedetect-detect-hist-b", "--bins"], [11, 8, 1, "cmdoption-scenedetect-detect-hist-m", "--min-scene-len"], [11, 8, 1, "cmdoption-scenedetect-detect-hist-t", "--threshold"], [11, 8, 1, "cmdoption-scenedetect-detect-hist-b", "-b"], [11, 8, 1, "cmdoption-scenedetect-detect-hist-m", "-m"], [11, 8, 1, "cmdoption-scenedetect-detect-hist-t", "-t"]], "scenedetect-detect-threshold": [[11, 8, 1, "cmdoption-scenedetect-detect-threshold-l", "--add-last-scene"], [11, 8, 1, "cmdoption-scenedetect-detect-threshold-f", "--fade-bias"], [11, 8, 1, "cmdoption-scenedetect-detect-threshold-m", "--min-scene-len"], [11, 8, 1, "cmdoption-scenedetect-detect-threshold-t", "--threshold"], [11, 8, 1, "cmdoption-scenedetect-detect-threshold-f", "-f"], [11, 8, 1, "cmdoption-scenedetect-detect-threshold-l", "-l"], [11, 8, 1, "cmdoption-scenedetect-detect-threshold-m", "-m"], [11, 8, 1, "cmdoption-scenedetect-detect-threshold-t", "-t"]], "scenedetect-export-html": [[11, 8, 1, "cmdoption-scenedetect-export-html-f", "--filename"], [11, 8, 1, "cmdoption-scenedetect-export-html-h", "--image-height"], [11, 8, 1, "cmdoption-scenedetect-export-html-w", "--image-width"], [11, 8, 1, "cmdoption-scenedetect-export-html-n", "--no-images"], [11, 8, 1, "cmdoption-scenedetect-export-html-s", "--show"], [11, 8, 1, "cmdoption-scenedetect-export-html-f", "-f"], [11, 8, 1, "cmdoption-scenedetect-export-html-h", "-h"], [11, 8, 1, "cmdoption-scenedetect-export-html-n", "-n"], [11, 8, 1, "cmdoption-scenedetect-export-html-s", "-s"], [11, 8, 1, "cmdoption-scenedetect-export-html-w", "-w"]], "scenedetect-list-scenes": [[11, 8, 1, "cmdoption-scenedetect-list-scenes-f", "--filename"], [11, 8, 1, "cmdoption-scenedetect-list-scenes-n", "--no-output-file"], [11, 8, 1, "cmdoption-scenedetect-list-scenes-o", "--output"], [11, 8, 1, "cmdoption-scenedetect-list-scenes-q", "--quiet"], [11, 8, 1, "cmdoption-scenedetect-list-scenes-s", "--skip-cuts"], [11, 8, 1, "cmdoption-scenedetect-list-scenes-f", "-f"], [11, 8, 1, "cmdoption-scenedetect-list-scenes-n", "-n"], [11, 8, 1, "cmdoption-scenedetect-list-scenes-o", "-o"], [11, 8, 1, "cmdoption-scenedetect-list-scenes-q", "-q"], [11, 8, 1, "cmdoption-scenedetect-list-scenes-s", "-s"]], "scenedetect-load-scenes": [[11, 8, 1, "cmdoption-scenedetect-load-scenes-i", "--input"], [11, 8, 1, "cmdoption-scenedetect-load-scenes-c", "--start-col-name"], [11, 8, 1, "cmdoption-scenedetect-load-scenes-c", "-c"], [11, 8, 1, "cmdoption-scenedetect-load-scenes-i", "-i"]], "scenedetect-save-images": [[11, 8, 1, "cmdoption-scenedetect-save-images-c", "--compression"], [11, 8, 1, "cmdoption-scenedetect-save-images-f", "--filename"], [11, 8, 1, "cmdoption-scenedetect-save-images-m", "--frame-margin"], [11, 8, 1, "cmdoption-scenedetect-save-images-H", "--height"], [11, 8, 1, "cmdoption-scenedetect-save-images-j", "--jpeg"], [11, 8, 1, "cmdoption-scenedetect-save-images-n", "--num-images"], [11, 8, 1, "cmdoption-scenedetect-save-images-o", "--output"], [11, 8, 1, "cmdoption-scenedetect-save-images-p", "--png"], [11, 8, 1, "cmdoption-scenedetect-save-images-q", "--quality"], [11, 8, 1, "cmdoption-scenedetect-save-images-s", "--scale"], [11, 8, 1, "cmdoption-scenedetect-save-images-w", "--webp"], [11, 8, 1, "cmdoption-scenedetect-save-images-W", "--width"], [11, 8, 1, "cmdoption-scenedetect-save-images-H", "-H"], [11, 8, 1, "cmdoption-scenedetect-save-images-W", "-W"], [11, 8, 1, "cmdoption-scenedetect-save-images-c", "-c"], [11, 8, 1, "cmdoption-scenedetect-save-images-f", "-f"], [11, 8, 1, "cmdoption-scenedetect-save-images-j", "-j"], [11, 8, 1, "cmdoption-scenedetect-save-images-m", "-m"], [11, 8, 1, "cmdoption-scenedetect-save-images-n", "-n"], [11, 8, 1, "cmdoption-scenedetect-save-images-o", "-o"], [11, 8, 1, "cmdoption-scenedetect-save-images-p", "-p"], [11, 8, 1, "cmdoption-scenedetect-save-images-q", "-q"], [11, 8, 1, "cmdoption-scenedetect-save-images-s", "-s"], [11, 8, 1, "cmdoption-scenedetect-save-images-w", "-w"]], "scenedetect-save-qp": [[11, 8, 1, "cmdoption-scenedetect-save-qp-d", "--disable-shift"], [11, 8, 1, "cmdoption-scenedetect-save-qp-f", "--filename"], [11, 8, 1, "cmdoption-scenedetect-save-qp-o", "--output"], [11, 8, 1, "cmdoption-scenedetect-save-qp-d", "-d"], [11, 8, 1, "cmdoption-scenedetect-save-qp-f", "-f"], [11, 8, 1, "cmdoption-scenedetect-save-qp-o", "-o"]], "scenedetect-split-video": [[11, 8, 1, "cmdoption-scenedetect-split-video-a", "--args"], [11, 8, 1, "cmdoption-scenedetect-split-video-c", "--copy"], [11, 8, 1, "cmdoption-scenedetect-split-video-f", "--filename"], [11, 8, 1, "cmdoption-scenedetect-split-video-hq", "--high-quality"], [11, 8, 1, "cmdoption-scenedetect-split-video-m", "--mkvmerge"], [11, 8, 1, "cmdoption-scenedetect-split-video-o", "--output"], [11, 8, 1, "cmdoption-scenedetect-split-video-p", "--preset"], [11, 8, 1, "cmdoption-scenedetect-split-video-q", "--quiet"], [11, 8, 1, "cmdoption-scenedetect-split-video-crf", "--rate-factor"], [11, 8, 1, "cmdoption-scenedetect-split-video-a", "-a"], [11, 8, 1, "cmdoption-scenedetect-split-video-c", "-c"], [11, 8, 1, "cmdoption-scenedetect-split-video-crf", "-crf"], [11, 8, 1, "cmdoption-scenedetect-split-video-f", "-f"], [11, 8, 1, "cmdoption-scenedetect-split-video-hq", "-hq"], [11, 8, 1, "cmdoption-scenedetect-split-video-m", "-m"], [11, 8, 1, "cmdoption-scenedetect-split-video-o", "-o"], [11, 8, 1, "cmdoption-scenedetect-split-video-p", "-p"], [11, 8, 1, "cmdoption-scenedetect-split-video-q", "-q"]], "scenedetect-time": [[11, 8, 1, "cmdoption-scenedetect-time-d", "--duration"], [11, 8, 1, "cmdoption-scenedetect-time-e", "--end"], [11, 8, 1, "cmdoption-scenedetect-time-s", "--start"], [11, 8, 1, "cmdoption-scenedetect-time-d", "-d"], [11, 8, 1, "cmdoption-scenedetect-time-e", "-e"], [11, 8, 1, "cmdoption-scenedetect-time-s", "-s"]]}, "objtypes": {"0": "py:module", "1": "py:data", "2": "py:class", "3": "py:attribute", "4": "py:property", "5": "py:method", "6": "py:function", "7": "py:exception", "8": "std:cmdoption"}, "objnames": {"0": ["py", "module", "Python module"], "1": ["py", "data", "Python data"], "2": ["py", "class", "Python class"], "3": ["py", "attribute", "Python attribute"], "4": ["py", "property", "Python property"], "5": ["py", "method", "Python method"], "6": ["py", "function", "Python function"], "7": ["py", "exception", "Python exception"], "8": ["std", "cmdoption", "program option"]}, "titleterms": {"scenedetect": [0, 11, 14], "packag": 0, "get": 0, "start": [0, 4], "function": [0, 4], "modul": [0, 14], "refer": [0, 14], "pyscenedetect": [0, 14], "document": [0, 14], "log": [0, 5], "migrat": [0, 4], "from": 0, "0": 0, "5": 0, "backend": [1, 12], "video": [1, 9, 11], "file": [1, 13], "devic": 1, "camera": 1, "pipe": 1, "detect": [2, 11], "algorithm": 2, "arg": 2, "return": 2, "exampl": [2, 3, 11, 13], "frametimecod": 3, "usag": [3, 7], "guid": 4, "videomanag": 4, "class": 4, "seek": 4, "end": 4, "time": [4, 11], "scenemanag": [4, 7], "save_imag": 4, "split_video_": 4, "statsmanag": [4, 8], "adaptivedetector": 4, "other": 4, "thresholddetector": 4, "contentdetector": 4, "minimum_frames_per_second_": 4, "constant": 4, "get_aspect_ratio": 4, "platform": 5, "scenedetector": 6, "store": 7, "per": 7, "frame": 7, "statist": 7, "split": [9, 11], "videostream": 10, "command": [11, 14], "option": 11, "help": 11, "version": 11, "about": 11, "detector": 11, "adapt": 11, "content": [11, 14], "hash": 11, "hist": 11, "threshold": 11, "export": 11, "html": 11, "list": 11, "scene": 11, "load": 11, "save": 11, "imag": 11, "qp": 11, "opencv": 12, "pyav": 12, "moviepi": 12, "configur": 13, "templat": 13, "tabl": 14, "line": 14, "interfac": 14, "python": 14, "api": 14, "indic": 14}, "envversion": {"sphinx.domains.c": 2, "sphinx.domains.changeset": 1, "sphinx.domains.citation": 1, "sphinx.domains.cpp": 8, "sphinx.domains.index": 1, "sphinx.domains.javascript": 2, "sphinx.domains.math": 2, "sphinx.domains.python": 3, "sphinx.domains.rst": 2, "sphinx.domains.std": 2, "sphinx": 57}, "alltitles": {"scenedetect \ud83c\udfac Package": [[0, "scenedetect-package"]], "Getting Started": [[0, "getting-started"]], "Functions": [[0, "module-scenedetect"]], "Module Reference": [[0, "module-reference"]], "PySceneDetect Module Documentation": [[0, null]], "Logging": [[0, "logging"]], "Migrating From 0.5": [[0, "migrating-from-0-5"]], "Backends": [[1, "module-scenedetect.backends"], [12, "backends"]], "Video Files": [[1, "video-files"]], "Devices / Cameras / Pipes": [[1, "devices-cameras-pipes"]], "Detection Algorithms": [[2, "module-scenedetect.detectors"]], "Args:": [[2, "args"]], "Returns:": [[2, "returns"]], "Examples:": [[2, "examples"]], "FrameTimecode": [[3, "module-scenedetect.frame_timecode"]], "Usage Examples": [[3, "usage-examples"]], "Migration Guide": [[4, "migration-guide"]], "VideoManager Class": [[4, "videomanager-class"]], "Seeking and Start/End Times": [[4, "seeking-and-start-end-times"]], "SceneManager Class": [[4, "scenemanager-class"]], "save_images Function": [[4, "save-images-function"]], "split_video_* Functions": [[4, "split-video-functions"]], "StatsManager Class": [[4, "statsmanager-class"]], "AdaptiveDetector Class": [[4, "adaptivedetector-class"]], "Other": [[4, "other"]], "ThresholdDetector Class": [[4, "thresholddetector-class"]], "ContentDetector Class": [[4, "contentdetector-class"]], "MINIMUM_FRAMES_PER_SECOND_* Constants": [[4, "minimum-frames-per-second-constants"]], "get_aspect_ratio Function": [[4, "get-aspect-ratio-function"]], "Platform & Logging": [[5, "module-scenedetect.platform"]], "SceneDetector": [[6, "module-scenedetect.scene_detector"]], "SceneManager": [[7, "module-scenedetect.scene_manager"]], "Usage": [[7, "usage"]], "Storing Per-Frame Statistics": [[7, "storing-per-frame-statistics"]], "StatsManager": [[8, "module-scenedetect.stats_manager"]], "Video Splitting": [[9, "module-scenedetect.video_splitter"]], "VideoStream": [[10, "module-scenedetect.video_stream"]], "scenedetect \ud83c\udfac Command": [[11, "scenedetect-command"]], "Examples": [[11, "examples"], [11, "id1"], [11, "id3"], [11, "id5"], [11, "id7"], [11, "id9"], [11, "id12"], [11, "id14"], [11, "id16"], [11, "id19"]], "Options": [[11, "options"], [11, "id2"], [11, "id4"], [11, "id6"], [11, "id8"], [11, "id10"], [11, "id11"], [11, "id13"], [11, "id15"], [11, "id17"], [11, "id18"], [11, "id20"], [11, "id21"]], "help, version, and about": [[11, "help-version-and-about"]], "Detectors": [[11, "detectors"]], "detect-adaptive": [[11, "detect-adaptive"]], "detect-content": [[11, "detect-content"]], "detect-hash": [[11, "detect-hash"]], "detect-hist": [[11, "detect-hist"]], "detect-threshold": [[11, "detect-threshold"]], "Commands": [[11, "commands"]], "export-html": [[11, "export-html"]], "list-scenes": [[11, "list-scenes"]], "load-scenes": [[11, "load-scenes"]], "save-images": [[11, "save-images"]], "save-qp": [[11, "save-qp"]], "split-video": [[11, "split-video"]], "time": [[11, "time"]], "OpenCV": [[12, "opencv"]], "PyAV": [[12, "pyav"]], "MoviePy": [[12, "moviepy"]], "Configuration File": [[13, "configuration-file"]], "Example": [[13, "example"]], "Template": [[13, "template"]], "PySceneDetect Documentation": [[14, "pyscenedetect-documentation"]], "Table of Contents": [[14, "table-of-contents"]], "scenedetect Command Reference \ud83d\udda5\ufe0f": [[14, "scenedetect-command-reference"]], "Command-Line Interface:": [[14, null]], "scenedetect Python Module \ud83d\udc0d": [[14, "scenedetect-python-module"]], "API Documentation:": [[14, null]], "Indices and Tables": [[14, "indices-and-tables"]]}, "indexentries": {"detect() (in module scenedetect)": [[0, "scenedetect.detect"]], "module": [[0, "module-scenedetect"], [1, "module-scenedetect.backends"], [1, "module-scenedetect.backends.moviepy"], [1, "module-scenedetect.backends.opencv"], [1, "module-scenedetect.backends.pyav"], [2, "module-scenedetect.detectors"], [2, "module-scenedetect.detectors.adaptive_detector"], [2, "module-scenedetect.detectors.content_detector"], [2, "module-scenedetect.detectors.hash_detector"], [2, "module-scenedetect.detectors.histogram_detector"], [2, "module-scenedetect.detectors.threshold_detector"], [3, "module-scenedetect.frame_timecode"], [5, "module-scenedetect.platform"], [6, "module-scenedetect.scene_detector"], [7, "module-scenedetect.scene_manager"], [8, "module-scenedetect.stats_manager"], [9, "module-scenedetect.video_splitter"], [10, "module-scenedetect.video_stream"]], "open_video() (in module scenedetect)": [[0, "scenedetect.open_video"]], "scenedetect": [[0, "module-scenedetect"]], "available_backends (in module scenedetect.backends)": [[1, "scenedetect.backends.AVAILABLE_BACKENDS"]], "backend_name (scenedetect.backends.moviepy.videostreammoviepy attribute)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.BACKEND_NAME"]], "backend_name (scenedetect.backends.opencv.videocaptureadapter attribute)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.BACKEND_NAME"]], "backend_name (scenedetect.backends.opencv.videostreamcv2 attribute)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.BACKEND_NAME"]], "backend_name (scenedetect.backends.pyav.videostreamav attribute)": [[1, "scenedetect.backends.pyav.VideoStreamAv.BACKEND_NAME"]], "videocaptureadapter (class in scenedetect.backends.opencv)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter"]], "videostreamav (class in scenedetect.backends.pyav)": [[1, "scenedetect.backends.pyav.VideoStreamAv"]], "videostreamcv2 (class in scenedetect.backends.opencv)": [[1, "scenedetect.backends.opencv.VideoStreamCv2"]], "videostreammoviepy (class in scenedetect.backends.moviepy)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy"]], "aspect_ratio (scenedetect.backends.moviepy.videostreammoviepy property)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.aspect_ratio"]], "aspect_ratio (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.aspect_ratio"]], "aspect_ratio (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.aspect_ratio"]], "aspect_ratio (scenedetect.backends.pyav.videostreamav property)": [[1, "scenedetect.backends.pyav.VideoStreamAv.aspect_ratio"]], "capture (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.capture"]], "capture (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.capture"]], "duration (scenedetect.backends.moviepy.videostreammoviepy property)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.duration"]], "duration (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.duration"]], "duration (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.duration"]], "duration (scenedetect.backends.pyav.videostreamav property)": [[1, "scenedetect.backends.pyav.VideoStreamAv.duration"]], "frame_number (scenedetect.backends.moviepy.videostreammoviepy property)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.frame_number"]], "frame_number (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.frame_number"]], "frame_number (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.frame_number"]], "frame_number (scenedetect.backends.pyav.videostreamav property)": [[1, "scenedetect.backends.pyav.VideoStreamAv.frame_number"]], "frame_rate (scenedetect.backends.moviepy.videostreammoviepy property)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.frame_rate"]], "frame_rate (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.frame_rate"]], "frame_rate (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.frame_rate"]], "frame_rate (scenedetect.backends.pyav.videostreamav property)": [[1, "scenedetect.backends.pyav.VideoStreamAv.frame_rate"]], "frame_size (scenedetect.backends.moviepy.videostreammoviepy property)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.frame_size"]], "frame_size (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.frame_size"]], "frame_size (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.frame_size"]], "frame_size (scenedetect.backends.pyav.videostreamav property)": [[1, "scenedetect.backends.pyav.VideoStreamAv.frame_size"]], "is_seekable (scenedetect.backends.moviepy.videostreammoviepy property)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.is_seekable"]], "is_seekable (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.is_seekable"]], "is_seekable (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.is_seekable"]], "is_seekable (scenedetect.backends.pyav.videostreamav property)": [[1, "scenedetect.backends.pyav.VideoStreamAv.is_seekable"]], "name (scenedetect.backends.moviepy.videostreammoviepy property)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.name"]], "name (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.name"]], "name (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.name"]], "name (scenedetect.backends.pyav.videostreamav property)": [[1, "scenedetect.backends.pyav.VideoStreamAv.name"]], "path (scenedetect.backends.moviepy.videostreammoviepy property)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.path"]], "path (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.path"]], "path (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.path"]], "path (scenedetect.backends.pyav.videostreamav property)": [[1, "scenedetect.backends.pyav.VideoStreamAv.path"]], "position (scenedetect.backends.moviepy.videostreammoviepy property)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.position"]], "position (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.position"]], "position (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.position"]], "position (scenedetect.backends.pyav.videostreamav property)": [[1, "scenedetect.backends.pyav.VideoStreamAv.position"]], "position_ms (scenedetect.backends.moviepy.videostreammoviepy property)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.position_ms"]], "position_ms (scenedetect.backends.opencv.videocaptureadapter property)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.position_ms"]], "position_ms (scenedetect.backends.opencv.videostreamcv2 property)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.position_ms"]], "position_ms (scenedetect.backends.pyav.videostreamav property)": [[1, "scenedetect.backends.pyav.VideoStreamAv.position_ms"]], "read() (scenedetect.backends.moviepy.videostreammoviepy method)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.read"]], "read() (scenedetect.backends.opencv.videocaptureadapter method)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.read"]], "read() (scenedetect.backends.opencv.videostreamcv2 method)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.read"]], "read() (scenedetect.backends.pyav.videostreamav method)": [[1, "scenedetect.backends.pyav.VideoStreamAv.read"]], "reset() (scenedetect.backends.moviepy.videostreammoviepy method)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.reset"]], "reset() (scenedetect.backends.opencv.videocaptureadapter method)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.reset"]], "reset() (scenedetect.backends.opencv.videostreamcv2 method)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.reset"]], "reset() (scenedetect.backends.pyav.videostreamav method)": [[1, "scenedetect.backends.pyav.VideoStreamAv.reset"]], "scenedetect.backends": [[1, "module-scenedetect.backends"]], "scenedetect.backends.moviepy": [[1, "module-scenedetect.backends.moviepy"]], "scenedetect.backends.opencv": [[1, "module-scenedetect.backends.opencv"]], "scenedetect.backends.pyav": [[1, "module-scenedetect.backends.pyav"]], "seek() (scenedetect.backends.moviepy.videostreammoviepy method)": [[1, "scenedetect.backends.moviepy.VideoStreamMoviePy.seek"]], "seek() (scenedetect.backends.opencv.videocaptureadapter method)": [[1, "scenedetect.backends.opencv.VideoCaptureAdapter.seek"]], "seek() (scenedetect.backends.opencv.videostreamcv2 method)": [[1, "scenedetect.backends.opencv.VideoStreamCv2.seek"]], "seek() (scenedetect.backends.pyav.videostreamav method)": [[1, "scenedetect.backends.pyav.VideoStreamAv.seek"]], "adaptivedetector (class in scenedetect.detectors.adaptive_detector)": [[2, "scenedetect.detectors.adaptive_detector.AdaptiveDetector"]], "ceiling (scenedetect.detectors.threshold_detector.thresholddetector.method attribute)": [[2, "scenedetect.detectors.threshold_detector.ThresholdDetector.Method.CEILING"]], "contentdetector (class in scenedetect.detectors.content_detector)": [[2, "scenedetect.detectors.content_detector.ContentDetector"]], "contentdetector.components (class in scenedetect.detectors.content_detector)": [[2, "scenedetect.detectors.content_detector.ContentDetector.Components"]], "default_component_weights (scenedetect.detectors.content_detector.contentdetector attribute)": [[2, "scenedetect.detectors.content_detector.ContentDetector.DEFAULT_COMPONENT_WEIGHTS"]], "floor (scenedetect.detectors.threshold_detector.thresholddetector.method attribute)": [[2, "scenedetect.detectors.threshold_detector.ThresholdDetector.Method.FLOOR"]], "frame_score_key (scenedetect.detectors.content_detector.contentdetector attribute)": [[2, "scenedetect.detectors.content_detector.ContentDetector.FRAME_SCORE_KEY"]], "hashdetector (class in scenedetect.detectors.hash_detector)": [[2, "scenedetect.detectors.hash_detector.HashDetector"]], "histogramdetector (class in scenedetect.detectors.histogram_detector)": [[2, "scenedetect.detectors.histogram_detector.HistogramDetector"]], "luma_only_weights (scenedetect.detectors.content_detector.contentdetector attribute)": [[2, "scenedetect.detectors.content_detector.ContentDetector.LUMA_ONLY_WEIGHTS"]], "metric_keys (scenedetect.detectors.content_detector.contentdetector attribute)": [[2, "scenedetect.detectors.content_detector.ContentDetector.METRIC_KEYS"]], "thresholddetector (class in scenedetect.detectors.threshold_detector)": [[2, "scenedetect.detectors.threshold_detector.ThresholdDetector"]], "thresholddetector.method (class in scenedetect.detectors.threshold_detector)": [[2, "scenedetect.detectors.threshold_detector.ThresholdDetector.Method"]], "calculate_histogram() (scenedetect.detectors.histogram_detector.histogramdetector static method)": [[2, "scenedetect.detectors.histogram_detector.HistogramDetector.calculate_histogram"]], "delta_edges (scenedetect.detectors.content_detector.contentdetector.components attribute)": [[2, "scenedetect.detectors.content_detector.ContentDetector.Components.delta_edges"]], "delta_hue (scenedetect.detectors.content_detector.contentdetector.components attribute)": [[2, "scenedetect.detectors.content_detector.ContentDetector.Components.delta_hue"]], "delta_lum (scenedetect.detectors.content_detector.contentdetector.components attribute)": [[2, "scenedetect.detectors.content_detector.ContentDetector.Components.delta_lum"]], "delta_sat (scenedetect.detectors.content_detector.contentdetector.components attribute)": [[2, "scenedetect.detectors.content_detector.ContentDetector.Components.delta_sat"]], "event_buffer_length (scenedetect.detectors.adaptive_detector.adaptivedetector property)": [[2, "scenedetect.detectors.adaptive_detector.AdaptiveDetector.event_buffer_length"]], "event_buffer_length (scenedetect.detectors.content_detector.contentdetector property)": [[2, "scenedetect.detectors.content_detector.ContentDetector.event_buffer_length"]], "get_content_val() (scenedetect.detectors.adaptive_detector.adaptivedetector method)": [[2, "scenedetect.detectors.adaptive_detector.AdaptiveDetector.get_content_val"]], "get_metrics() (scenedetect.detectors.adaptive_detector.adaptivedetector method)": [[2, "scenedetect.detectors.adaptive_detector.AdaptiveDetector.get_metrics"]], "get_metrics() (scenedetect.detectors.content_detector.contentdetector method)": [[2, "scenedetect.detectors.content_detector.ContentDetector.get_metrics"]], "get_metrics() (scenedetect.detectors.hash_detector.hashdetector method)": [[2, "scenedetect.detectors.hash_detector.HashDetector.get_metrics"]], "get_metrics() (scenedetect.detectors.histogram_detector.histogramdetector method)": [[2, "scenedetect.detectors.histogram_detector.HistogramDetector.get_metrics"]], "get_metrics() (scenedetect.detectors.threshold_detector.thresholddetector method)": [[2, "scenedetect.detectors.threshold_detector.ThresholdDetector.get_metrics"]], "hash_frame() (scenedetect.detectors.hash_detector.hashdetector static method)": [[2, "scenedetect.detectors.hash_detector.HashDetector.hash_frame"]], "is_processing_required() (scenedetect.detectors.content_detector.contentdetector method)": [[2, "scenedetect.detectors.content_detector.ContentDetector.is_processing_required"]], "is_processing_required() (scenedetect.detectors.hash_detector.hashdetector method)": [[2, "scenedetect.detectors.hash_detector.HashDetector.is_processing_required"]], "is_processing_required() (scenedetect.detectors.histogram_detector.histogramdetector method)": [[2, "scenedetect.detectors.histogram_detector.HistogramDetector.is_processing_required"]], "post_process() (scenedetect.detectors.adaptive_detector.adaptivedetector method)": [[2, "scenedetect.detectors.adaptive_detector.AdaptiveDetector.post_process"]], "post_process() (scenedetect.detectors.threshold_detector.thresholddetector method)": [[2, "scenedetect.detectors.threshold_detector.ThresholdDetector.post_process"]], "process_frame() (scenedetect.detectors.adaptive_detector.adaptivedetector method)": [[2, "scenedetect.detectors.adaptive_detector.AdaptiveDetector.process_frame"]], "process_frame() (scenedetect.detectors.content_detector.contentdetector method)": [[2, "scenedetect.detectors.content_detector.ContentDetector.process_frame"]], "process_frame() (scenedetect.detectors.hash_detector.hashdetector method)": [[2, "scenedetect.detectors.hash_detector.HashDetector.process_frame"]], "process_frame() (scenedetect.detectors.histogram_detector.histogramdetector method)": [[2, "scenedetect.detectors.histogram_detector.HistogramDetector.process_frame"]], "process_frame() (scenedetect.detectors.threshold_detector.thresholddetector method)": [[2, "scenedetect.detectors.threshold_detector.ThresholdDetector.process_frame"]], "scenedetect.detectors": [[2, "module-scenedetect.detectors"]], "scenedetect.detectors.adaptive_detector": [[2, "module-scenedetect.detectors.adaptive_detector"]], "scenedetect.detectors.content_detector": [[2, "module-scenedetect.detectors.content_detector"]], "scenedetect.detectors.hash_detector": [[2, "module-scenedetect.detectors.hash_detector"]], "scenedetect.detectors.histogram_detector": [[2, "module-scenedetect.detectors.histogram_detector"]], "scenedetect.detectors.threshold_detector": [[2, "module-scenedetect.detectors.threshold_detector"]], "stats_manager_required() (scenedetect.detectors.adaptive_detector.adaptivedetector method)": [[2, "scenedetect.detectors.adaptive_detector.AdaptiveDetector.stats_manager_required"]], "frametimecode (class in scenedetect.frame_timecode)": [[3, "scenedetect.frame_timecode.FrameTimecode"]], "max_fps_delta (in module scenedetect.frame_timecode)": [[3, "scenedetect.frame_timecode.MAX_FPS_DELTA"]], "equal_framerate() (scenedetect.frame_timecode.frametimecode method)": [[3, "scenedetect.frame_timecode.FrameTimecode.equal_framerate"]], "get_framerate() (scenedetect.frame_timecode.frametimecode method)": [[3, "scenedetect.frame_timecode.FrameTimecode.get_framerate"]], "get_frames() (scenedetect.frame_timecode.frametimecode method)": [[3, "scenedetect.frame_timecode.FrameTimecode.get_frames"]], "get_seconds() (scenedetect.frame_timecode.frametimecode method)": [[3, "scenedetect.frame_timecode.FrameTimecode.get_seconds"]], "get_timecode() (scenedetect.frame_timecode.frametimecode method)": [[3, "scenedetect.frame_timecode.FrameTimecode.get_timecode"]], "previous_frame() (scenedetect.frame_timecode.frametimecode method)": [[3, "scenedetect.frame_timecode.FrameTimecode.previous_frame"]], "scenedetect.frame_timecode": [[3, "module-scenedetect.frame_timecode"]], "commandtoolong": [[5, "scenedetect.platform.CommandTooLong"]], "faketqdmloggingredirect (class in scenedetect.platform)": [[5, "scenedetect.platform.FakeTqdmLoggingRedirect"]], "faketqdmobject (class in scenedetect.platform)": [[5, "scenedetect.platform.FakeTqdmObject"]], "template (class in scenedetect.platform)": [[5, "scenedetect.platform.Template"]], "close() (scenedetect.platform.faketqdmobject method)": [[5, "scenedetect.platform.FakeTqdmObject.close"]], "get_and_create_path() (in module scenedetect.platform)": [[5, "scenedetect.platform.get_and_create_path"]], "get_cv2_imwrite_params() (in module scenedetect.platform)": [[5, "scenedetect.platform.get_cv2_imwrite_params"]], "get_ffmpeg_path() (in module scenedetect.platform)": [[5, "scenedetect.platform.get_ffmpeg_path"]], "get_ffmpeg_version() (in module scenedetect.platform)": [[5, "scenedetect.platform.get_ffmpeg_version"]], "get_file_name() (in module scenedetect.platform)": [[5, "scenedetect.platform.get_file_name"]], "get_mkvmerge_version() (in module scenedetect.platform)": [[5, "scenedetect.platform.get_mkvmerge_version"]], "get_system_version_info() (in module scenedetect.platform)": [[5, "scenedetect.platform.get_system_version_info"]], "init_logger() (in module scenedetect.platform)": [[5, "scenedetect.platform.init_logger"]], "invoke_command() (in module scenedetect.platform)": [[5, "scenedetect.platform.invoke_command"]], "scenedetect.platform": [[5, "module-scenedetect.platform"]], "set_description() (scenedetect.platform.faketqdmobject method)": [[5, "scenedetect.platform.FakeTqdmObject.set_description"]], "update() (scenedetect.platform.faketqdmobject method)": [[5, "scenedetect.platform.FakeTqdmObject.update"]], "scenedetector (class in scenedetect.scene_detector)": [[6, "scenedetect.scene_detector.SceneDetector"]], "sparsescenedetector (class in scenedetect.scene_detector)": [[6, "scenedetect.scene_detector.SparseSceneDetector"]], "event_buffer_length (scenedetect.scene_detector.scenedetector property)": [[6, "scenedetect.scene_detector.SceneDetector.event_buffer_length"]], "get_metrics() (scenedetect.scene_detector.scenedetector method)": [[6, "scenedetect.scene_detector.SceneDetector.get_metrics"]], "is_processing_required() (scenedetect.scene_detector.scenedetector method)": [[6, "scenedetect.scene_detector.SceneDetector.is_processing_required"]], "post_process() (scenedetect.scene_detector.scenedetector method)": [[6, "scenedetect.scene_detector.SceneDetector.post_process"]], "post_process() (scenedetect.scene_detector.sparsescenedetector method)": [[6, "scenedetect.scene_detector.SparseSceneDetector.post_process"]], "process_frame() (scenedetect.scene_detector.scenedetector method)": [[6, "scenedetect.scene_detector.SceneDetector.process_frame"]], "process_frame() (scenedetect.scene_detector.sparsescenedetector method)": [[6, "scenedetect.scene_detector.SparseSceneDetector.process_frame"]], "scenedetect.scene_detector": [[6, "module-scenedetect.scene_detector"]], "stats_manager (scenedetect.scene_detector.scenedetector attribute)": [[6, "scenedetect.scene_detector.SceneDetector.stats_manager"]], "stats_manager_required() (scenedetect.scene_detector.scenedetector method)": [[6, "scenedetect.scene_detector.SceneDetector.stats_manager_required"]], "area (scenedetect.scene_manager.interpolation attribute)": [[7, "scenedetect.scene_manager.Interpolation.AREA"]], "cubic (scenedetect.scene_manager.interpolation attribute)": [[7, "scenedetect.scene_manager.Interpolation.CUBIC"]], "cutlist (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.CutList"]], "default_min_width (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.DEFAULT_MIN_WIDTH"]], "interpolation (class in scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.Interpolation"]], "lanczos4 (scenedetect.scene_manager.interpolation attribute)": [[7, "scenedetect.scene_manager.Interpolation.LANCZOS4"]], "linear (scenedetect.scene_manager.interpolation attribute)": [[7, "scenedetect.scene_manager.Interpolation.LINEAR"]], "max_frame_queue_length (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.MAX_FRAME_QUEUE_LENGTH"]], "max_frame_size_errors (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.MAX_FRAME_SIZE_ERRORS"]], "nearest (scenedetect.scene_manager.interpolation attribute)": [[7, "scenedetect.scene_manager.Interpolation.NEAREST"]], "progress_bar_description (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.PROGRESS_BAR_DESCRIPTION"]], "scenelist (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.SceneList"]], "scenemanager (class in scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.SceneManager"]], "add_detector() (scenedetect.scene_manager.scenemanager method)": [[7, "scenedetect.scene_manager.SceneManager.add_detector"]], "auto_downscale (scenedetect.scene_manager.scenemanager property)": [[7, "scenedetect.scene_manager.SceneManager.auto_downscale"]], "clear() (scenedetect.scene_manager.scenemanager method)": [[7, "scenedetect.scene_manager.SceneManager.clear"]], "clear_detectors() (scenedetect.scene_manager.scenemanager method)": [[7, "scenedetect.scene_manager.SceneManager.clear_detectors"]], "compute_downscale_factor() (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.compute_downscale_factor"]], "detect_scenes() (scenedetect.scene_manager.scenemanager method)": [[7, "scenedetect.scene_manager.SceneManager.detect_scenes"]], "downscale (scenedetect.scene_manager.scenemanager property)": [[7, "scenedetect.scene_manager.SceneManager.downscale"]], "get_num_detectors() (scenedetect.scene_manager.scenemanager method)": [[7, "scenedetect.scene_manager.SceneManager.get_num_detectors"]], "get_scene_list() (scenedetect.scene_manager.scenemanager method)": [[7, "scenedetect.scene_manager.SceneManager.get_scene_list"]], "get_scenes_from_cuts() (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.get_scenes_from_cuts"]], "interpolation (scenedetect.scene_manager.scenemanager property)": [[7, "scenedetect.scene_manager.SceneManager.interpolation"]], "save_images() (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.save_images"]], "scenedetect.scene_manager": [[7, "module-scenedetect.scene_manager"]], "stats_manager (scenedetect.scene_manager.scenemanager property)": [[7, "scenedetect.scene_manager.SceneManager.stats_manager"]], "stop() (scenedetect.scene_manager.scenemanager method)": [[7, "scenedetect.scene_manager.SceneManager.stop"]], "write_scene_list() (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.write_scene_list"]], "write_scene_list_html() (in module scenedetect.scene_manager)": [[7, "scenedetect.scene_manager.write_scene_list_html"]], "column_name_frame_number (in module scenedetect.stats_manager)": [[8, "scenedetect.stats_manager.COLUMN_NAME_FRAME_NUMBER"]], "column_name_timecode (in module scenedetect.stats_manager)": [[8, "scenedetect.stats_manager.COLUMN_NAME_TIMECODE"]], "statsfilecorrupt": [[8, "scenedetect.stats_manager.StatsFileCorrupt"]], "statsmanager (class in scenedetect.stats_manager)": [[8, "scenedetect.stats_manager.StatsManager"]], "get_metrics() (scenedetect.stats_manager.statsmanager method)": [[8, "scenedetect.stats_manager.StatsManager.get_metrics"]], "is_save_required() (scenedetect.stats_manager.statsmanager method)": [[8, "scenedetect.stats_manager.StatsManager.is_save_required"]], "metrics_exist() (scenedetect.stats_manager.statsmanager method)": [[8, "scenedetect.stats_manager.StatsManager.metrics_exist"]], "register_metrics() (scenedetect.stats_manager.statsmanager method)": [[8, "scenedetect.stats_manager.StatsManager.register_metrics"]], "save_to_csv() (scenedetect.stats_manager.statsmanager method)": [[8, "scenedetect.stats_manager.StatsManager.save_to_csv"]], "scenedetect.stats_manager": [[8, "module-scenedetect.stats_manager"]], "set_metrics() (scenedetect.stats_manager.statsmanager method)": [[8, "scenedetect.stats_manager.StatsManager.set_metrics"]], "valid_header() (scenedetect.stats_manager.statsmanager static method)": [[8, "scenedetect.stats_manager.StatsManager.valid_header"]], "default_ffmpeg_args (in module scenedetect.video_splitter)": [[9, "scenedetect.video_splitter.DEFAULT_FFMPEG_ARGS"]], "ffmpeg_path (in module scenedetect.video_splitter)": [[9, "scenedetect.video_splitter.FFMPEG_PATH"]], "scenemetadata (class in scenedetect.video_splitter)": [[9, "scenedetect.video_splitter.SceneMetadata"]], "timecodepair (in module scenedetect.video_splitter)": [[9, "scenedetect.video_splitter.TimecodePair"]], "videometadata (class in scenedetect.video_splitter)": [[9, "scenedetect.video_splitter.VideoMetadata"]], "default_formatter() (in module scenedetect.video_splitter)": [[9, "scenedetect.video_splitter.default_formatter"]], "end (scenedetect.video_splitter.scenemetadata attribute)": [[9, "scenedetect.video_splitter.SceneMetadata.end"]], "index (scenedetect.video_splitter.scenemetadata attribute)": [[9, "scenedetect.video_splitter.SceneMetadata.index"]], "is_ffmpeg_available() (in module scenedetect.video_splitter)": [[9, "scenedetect.video_splitter.is_ffmpeg_available"]], "is_mkvmerge_available() (in module scenedetect.video_splitter)": [[9, "scenedetect.video_splitter.is_mkvmerge_available"]], "name (scenedetect.video_splitter.videometadata attribute)": [[9, "scenedetect.video_splitter.VideoMetadata.name"]], "path (scenedetect.video_splitter.videometadata attribute)": [[9, "scenedetect.video_splitter.VideoMetadata.path"]], "scenedetect.video_splitter": [[9, "module-scenedetect.video_splitter"]], "split_video_ffmpeg() (in module scenedetect.video_splitter)": [[9, "scenedetect.video_splitter.split_video_ffmpeg"]], "split_video_mkvmerge() (in module scenedetect.video_splitter)": [[9, "scenedetect.video_splitter.split_video_mkvmerge"]], "start (scenedetect.video_splitter.scenemetadata attribute)": [[9, "scenedetect.video_splitter.SceneMetadata.start"]], "total_scenes (scenedetect.video_splitter.videometadata attribute)": [[9, "scenedetect.video_splitter.VideoMetadata.total_scenes"]], "backend_name() (scenedetect.video_stream.videostream static method)": [[10, "scenedetect.video_stream.VideoStream.BACKEND_NAME"]], "framerateunavailable": [[10, "scenedetect.video_stream.FrameRateUnavailable"]], "seekerror": [[10, "scenedetect.video_stream.SeekError"]], "videoopenfailure": [[10, "scenedetect.video_stream.VideoOpenFailure"]], "videostream (class in scenedetect.video_stream)": [[10, "scenedetect.video_stream.VideoStream"]], "aspect_ratio (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.aspect_ratio"]], "base_timecode (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.base_timecode"]], "duration (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.duration"]], "frame_number (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.frame_number"]], "frame_rate (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.frame_rate"]], "frame_size (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.frame_size"]], "is_seekable (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.is_seekable"]], "name (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.name"]], "path (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.path"]], "position (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.position"]], "position_ms (scenedetect.video_stream.videostream property)": [[10, "scenedetect.video_stream.VideoStream.position_ms"]], "read() (scenedetect.video_stream.videostream method)": [[10, "scenedetect.video_stream.VideoStream.read"]], "reset() (scenedetect.video_stream.videostream method)": [[10, "scenedetect.video_stream.VideoStream.reset"]], "scenedetect.video_stream": [[10, "module-scenedetect.video_stream"]], "seek() (scenedetect.video_stream.videostream method)": [[10, "scenedetect.video_stream.VideoStream.seek"]], "--add-last-scene": [[11, "cmdoption-scenedetect-detect-threshold-l"]], "--args": [[11, "cmdoption-scenedetect-split-video-a"]], "--backend": [[11, "cmdoption-scenedetect-b"]], "--bins": [[11, "cmdoption-scenedetect-detect-hist-b"]], "--compression": [[11, "cmdoption-scenedetect-save-images-c"]], "--config": [[11, "cmdoption-scenedetect-c"]], "--copy": [[11, "cmdoption-scenedetect-split-video-c"]], "--disable-shift": [[11, "cmdoption-scenedetect-save-qp-d"]], "--downscale": [[11, "cmdoption-scenedetect-d"]], "--drop-short-scenes": [[11, "cmdoption-scenedetect-drop-short-scenes"]], "--duration": [[11, "cmdoption-scenedetect-time-d"]], "--end": [[11, "cmdoption-scenedetect-time-e"]], "--fade-bias": [[11, "cmdoption-scenedetect-detect-threshold-f"]], "--filename": [[11, "cmdoption-scenedetect-export-html-f"], [11, "cmdoption-scenedetect-list-scenes-f"], [11, "cmdoption-scenedetect-save-images-f"], [11, "cmdoption-scenedetect-save-qp-f"], [11, "cmdoption-scenedetect-split-video-f"]], "--filter-mode": [[11, "cmdoption-scenedetect-detect-content-f"]], "--frame-margin": [[11, "cmdoption-scenedetect-save-images-m"]], "--frame-skip": [[11, "cmdoption-scenedetect-fs"]], "--frame-window": [[11, "cmdoption-scenedetect-detect-adaptive-f"]], "--framerate": [[11, "cmdoption-scenedetect-f"]], "--height": [[11, "cmdoption-scenedetect-save-images-H"]], "--high-quality": [[11, "cmdoption-scenedetect-split-video-hq"]], "--image-height": [[11, "cmdoption-scenedetect-export-html-h"]], "--image-width": [[11, "cmdoption-scenedetect-export-html-w"]], "--input": [[11, "cmdoption-scenedetect-i"], [11, "cmdoption-scenedetect-load-scenes-i"]], "--jpeg": [[11, "cmdoption-scenedetect-save-images-j"]], "--kernel-size": [[11, "cmdoption-scenedetect-detect-adaptive-k"], [11, "cmdoption-scenedetect-detect-content-k"]], "--logfile": [[11, "cmdoption-scenedetect-l"]], "--lowpass": [[11, "cmdoption-scenedetect-detect-hash-l"]], "--luma-only": [[11, "cmdoption-scenedetect-detect-adaptive-l"], [11, "cmdoption-scenedetect-detect-content-l"]], "--merge-last-scene": [[11, "cmdoption-scenedetect-merge-last-scene"]], "--min-content-val": [[11, "cmdoption-scenedetect-detect-adaptive-c"]], "--min-delta-hsv": [[11, "cmdoption-scenedetect-detect-adaptive-d"]], "--min-scene-len": [[11, "cmdoption-scenedetect-detect-adaptive-m"], [11, "cmdoption-scenedetect-detect-content-m"], [11, "cmdoption-scenedetect-detect-hash-m"], [11, "cmdoption-scenedetect-detect-hist-m"], [11, "cmdoption-scenedetect-detect-threshold-m"], [11, "cmdoption-scenedetect-m"]], "--mkvmerge": [[11, "cmdoption-scenedetect-split-video-m"]], "--no-images": [[11, "cmdoption-scenedetect-export-html-n"]], "--no-output-file": [[11, "cmdoption-scenedetect-list-scenes-n"]], "--num-images": [[11, "cmdoption-scenedetect-save-images-n"]], "--output": [[11, "cmdoption-scenedetect-list-scenes-o"], [11, "cmdoption-scenedetect-o"], [11, "cmdoption-scenedetect-save-images-o"], [11, "cmdoption-scenedetect-save-qp-o"], [11, "cmdoption-scenedetect-split-video-o"]], "--png": [[11, "cmdoption-scenedetect-save-images-p"]], "--preset": [[11, "cmdoption-scenedetect-split-video-p"]], "--quality": [[11, "cmdoption-scenedetect-save-images-q"]], "--quiet": [[11, "cmdoption-scenedetect-list-scenes-q"], [11, "cmdoption-scenedetect-q"], [11, "cmdoption-scenedetect-split-video-q"]], "--rate-factor": [[11, "cmdoption-scenedetect-split-video-crf"]], "--scale": [[11, "cmdoption-scenedetect-save-images-s"]], "--show": [[11, "cmdoption-scenedetect-export-html-s"]], "--size": [[11, "cmdoption-scenedetect-detect-hash-s"]], "--skip-cuts": [[11, "cmdoption-scenedetect-list-scenes-s"]], "--start": [[11, "cmdoption-scenedetect-time-s"]], "--start-col-name": [[11, "cmdoption-scenedetect-load-scenes-c"]], "--stats": [[11, "cmdoption-scenedetect-s"]], "--threshold": [[11, "cmdoption-scenedetect-detect-adaptive-t"], [11, "cmdoption-scenedetect-detect-content-t"], [11, "cmdoption-scenedetect-detect-hash-t"], [11, "cmdoption-scenedetect-detect-hist-t"], [11, "cmdoption-scenedetect-detect-threshold-t"]], "--verbosity": [[11, "cmdoption-scenedetect-v"]], "--webp": [[11, "cmdoption-scenedetect-save-images-w"]], "--weights": [[11, "cmdoption-scenedetect-detect-adaptive-w"], [11, "cmdoption-scenedetect-detect-content-w"]], "--width": [[11, "cmdoption-scenedetect-save-images-W"]], "-h": [[11, "cmdoption-scenedetect-save-images-H"], [11, "cmdoption-scenedetect-export-html-h"]], "-w": [[11, "cmdoption-scenedetect-save-images-W"], [11, "cmdoption-scenedetect-detect-adaptive-w"], [11, "cmdoption-scenedetect-detect-content-w"], [11, "cmdoption-scenedetect-export-html-w"], [11, "cmdoption-scenedetect-save-images-w"]], "-a": [[11, "cmdoption-scenedetect-split-video-a"]], "-b": [[11, "cmdoption-scenedetect-b"], [11, "cmdoption-scenedetect-detect-hist-b"]], "-c": [[11, "cmdoption-scenedetect-c"], [11, "cmdoption-scenedetect-detect-adaptive-c"], [11, "cmdoption-scenedetect-load-scenes-c"], [11, "cmdoption-scenedetect-save-images-c"], [11, "cmdoption-scenedetect-split-video-c"]], "-crf": [[11, "cmdoption-scenedetect-split-video-crf"]], "-d": [[11, "cmdoption-scenedetect-d"], [11, "cmdoption-scenedetect-detect-adaptive-d"], [11, "cmdoption-scenedetect-save-qp-d"], [11, "cmdoption-scenedetect-time-d"]], "-e": [[11, "cmdoption-scenedetect-time-e"]], "-f": [[11, "cmdoption-scenedetect-detect-adaptive-f"], [11, "cmdoption-scenedetect-detect-content-f"], [11, "cmdoption-scenedetect-detect-threshold-f"], [11, "cmdoption-scenedetect-export-html-f"], [11, "cmdoption-scenedetect-f"], [11, "cmdoption-scenedetect-list-scenes-f"], [11, "cmdoption-scenedetect-save-images-f"], [11, "cmdoption-scenedetect-save-qp-f"], [11, "cmdoption-scenedetect-split-video-f"]], "-fs": [[11, "cmdoption-scenedetect-fs"]], "-hq": [[11, "cmdoption-scenedetect-split-video-hq"]], "-i": [[11, "cmdoption-scenedetect-i"], [11, "cmdoption-scenedetect-load-scenes-i"]], "-j": [[11, "cmdoption-scenedetect-save-images-j"]], "-k": [[11, "cmdoption-scenedetect-detect-adaptive-k"], [11, "cmdoption-scenedetect-detect-content-k"]], "-l": [[11, "cmdoption-scenedetect-detect-adaptive-l"], [11, "cmdoption-scenedetect-detect-content-l"], [11, "cmdoption-scenedetect-detect-hash-l"], [11, "cmdoption-scenedetect-detect-threshold-l"], [11, "cmdoption-scenedetect-l"]], "-m": [[11, "cmdoption-scenedetect-detect-adaptive-m"], [11, "cmdoption-scenedetect-detect-content-m"], [11, "cmdoption-scenedetect-detect-hash-m"], [11, "cmdoption-scenedetect-detect-hist-m"], [11, "cmdoption-scenedetect-detect-threshold-m"], [11, "cmdoption-scenedetect-m"], [11, "cmdoption-scenedetect-save-images-m"], [11, "cmdoption-scenedetect-split-video-m"]], "-n": [[11, "cmdoption-scenedetect-export-html-n"], [11, "cmdoption-scenedetect-list-scenes-n"], [11, "cmdoption-scenedetect-save-images-n"]], "-o": [[11, "cmdoption-scenedetect-list-scenes-o"], [11, "cmdoption-scenedetect-o"], [11, "cmdoption-scenedetect-save-images-o"], [11, "cmdoption-scenedetect-save-qp-o"], [11, "cmdoption-scenedetect-split-video-o"]], "-p": [[11, "cmdoption-scenedetect-save-images-p"], [11, "cmdoption-scenedetect-split-video-p"]], "-q": [[11, "cmdoption-scenedetect-list-scenes-q"], [11, "cmdoption-scenedetect-q"], [11, "cmdoption-scenedetect-save-images-q"], [11, "cmdoption-scenedetect-split-video-q"]], "-s": [[11, "cmdoption-scenedetect-detect-hash-s"], [11, "cmdoption-scenedetect-export-html-s"], [11, "cmdoption-scenedetect-list-scenes-s"], [11, "cmdoption-scenedetect-s"], [11, "cmdoption-scenedetect-save-images-s"], [11, "cmdoption-scenedetect-time-s"]], "-t": [[11, "cmdoption-scenedetect-detect-adaptive-t"], [11, "cmdoption-scenedetect-detect-content-t"], [11, "cmdoption-scenedetect-detect-hash-t"], [11, "cmdoption-scenedetect-detect-hist-t"], [11, "cmdoption-scenedetect-detect-threshold-t"]], "-v": [[11, "cmdoption-scenedetect-v"]], "scenedetect command line option": [[11, "cmdoption-scenedetect-b"], [11, "cmdoption-scenedetect-c"], [11, "cmdoption-scenedetect-d"], [11, "cmdoption-scenedetect-drop-short-scenes"], [11, "cmdoption-scenedetect-f"], [11, "cmdoption-scenedetect-fs"], [11, "cmdoption-scenedetect-i"], [11, "cmdoption-scenedetect-l"], [11, "cmdoption-scenedetect-m"], [11, "cmdoption-scenedetect-merge-last-scene"], [11, "cmdoption-scenedetect-o"], [11, "cmdoption-scenedetect-q"], [11, "cmdoption-scenedetect-s"], [11, "cmdoption-scenedetect-v"]], "scenedetect-detect-adaptive command line option": [[11, "cmdoption-scenedetect-detect-adaptive-c"], [11, "cmdoption-scenedetect-detect-adaptive-d"], [11, "cmdoption-scenedetect-detect-adaptive-f"], [11, "cmdoption-scenedetect-detect-adaptive-k"], [11, "cmdoption-scenedetect-detect-adaptive-l"], [11, "cmdoption-scenedetect-detect-adaptive-m"], [11, "cmdoption-scenedetect-detect-adaptive-t"], [11, "cmdoption-scenedetect-detect-adaptive-w"]], "scenedetect-detect-content command line option": [[11, "cmdoption-scenedetect-detect-content-f"], [11, "cmdoption-scenedetect-detect-content-k"], [11, "cmdoption-scenedetect-detect-content-l"], [11, "cmdoption-scenedetect-detect-content-m"], [11, "cmdoption-scenedetect-detect-content-t"], [11, "cmdoption-scenedetect-detect-content-w"]], "scenedetect-detect-hash command line option": [[11, "cmdoption-scenedetect-detect-hash-l"], [11, "cmdoption-scenedetect-detect-hash-m"], [11, "cmdoption-scenedetect-detect-hash-s"], [11, "cmdoption-scenedetect-detect-hash-t"]], "scenedetect-detect-hist command line option": [[11, "cmdoption-scenedetect-detect-hist-b"], [11, "cmdoption-scenedetect-detect-hist-m"], [11, "cmdoption-scenedetect-detect-hist-t"]], "scenedetect-detect-threshold command line option": [[11, "cmdoption-scenedetect-detect-threshold-f"], [11, "cmdoption-scenedetect-detect-threshold-l"], [11, "cmdoption-scenedetect-detect-threshold-m"], [11, "cmdoption-scenedetect-detect-threshold-t"]], "scenedetect-export-html command line option": [[11, "cmdoption-scenedetect-export-html-f"], [11, "cmdoption-scenedetect-export-html-h"], [11, "cmdoption-scenedetect-export-html-n"], [11, "cmdoption-scenedetect-export-html-s"], [11, "cmdoption-scenedetect-export-html-w"]], "scenedetect-list-scenes command line option": [[11, "cmdoption-scenedetect-list-scenes-f"], [11, "cmdoption-scenedetect-list-scenes-n"], [11, "cmdoption-scenedetect-list-scenes-o"], [11, "cmdoption-scenedetect-list-scenes-q"], [11, "cmdoption-scenedetect-list-scenes-s"]], "scenedetect-load-scenes command line option": [[11, "cmdoption-scenedetect-load-scenes-c"], [11, "cmdoption-scenedetect-load-scenes-i"]], "scenedetect-save-images command line option": [[11, "cmdoption-scenedetect-save-images-H"], [11, "cmdoption-scenedetect-save-images-W"], [11, "cmdoption-scenedetect-save-images-c"], [11, "cmdoption-scenedetect-save-images-f"], [11, "cmdoption-scenedetect-save-images-j"], [11, "cmdoption-scenedetect-save-images-m"], [11, "cmdoption-scenedetect-save-images-n"], [11, "cmdoption-scenedetect-save-images-o"], [11, "cmdoption-scenedetect-save-images-p"], [11, "cmdoption-scenedetect-save-images-q"], [11, "cmdoption-scenedetect-save-images-s"], [11, "cmdoption-scenedetect-save-images-w"]], "scenedetect-save-qp command line option": [[11, "cmdoption-scenedetect-save-qp-d"], [11, "cmdoption-scenedetect-save-qp-f"], [11, "cmdoption-scenedetect-save-qp-o"]], "scenedetect-split-video command line option": [[11, "cmdoption-scenedetect-split-video-a"], [11, "cmdoption-scenedetect-split-video-c"], [11, "cmdoption-scenedetect-split-video-crf"], [11, "cmdoption-scenedetect-split-video-f"], [11, "cmdoption-scenedetect-split-video-hq"], [11, "cmdoption-scenedetect-split-video-m"], [11, "cmdoption-scenedetect-split-video-o"], [11, "cmdoption-scenedetect-split-video-p"], [11, "cmdoption-scenedetect-split-video-q"]], "scenedetect-time command line option": [[11, "cmdoption-scenedetect-time-d"], [11, "cmdoption-scenedetect-time-e"], [11, "cmdoption-scenedetect-time-s"]]}}) \ No newline at end of file