From 0119220c3b2bf6cdde61cfaf2748bf547ca6d579 Mon Sep 17 00:00:00 2001 From: John Andrews Date: Wed, 29 May 2024 18:50:44 +1200 Subject: [PATCH] FF-1577 - fixing Video Has Errors --- FileFlows.Plugin.dll | Bin 141312 -> 141312 bytes FileFlows.Plugin.pdb | Bin 34388 -> 34384 bytes VideoNodes/LogicalNodes/VideoHasErrors.cs | 2 +- VideoNodes/Tests/VideoHasErrorsTests.cs | 37 ++++++++++++++++++++++ VideoNodes/Tests/_TestBase.cs | 5 ++- 5 files changed, 42 insertions(+), 2 deletions(-) create mode 100644 VideoNodes/Tests/VideoHasErrorsTests.cs diff --git a/FileFlows.Plugin.dll b/FileFlows.Plugin.dll index 3a17156c0d59f3e81b6ee120ea0dce71d3399ce2..d4ef19791da4c3f2572daba2147914a5117dc50f 100644 GIT binary patch delta 250 zcmZp;z|nAlV?qZ@@gB=}jXkYBj9Yt{9JmBF&Jcg!f8W7#=gOH}e;)V$+kS_O>8X%L zig8MsVPdkWX;MynZUUJoyn5Mp%V;%~3=04wU zt-$n^#Xp6?m?4EBjlqy1ks+DE6bO@mFqOfQ!3@YxVz6K^0m_;H`AI-J2`HKhRA~Z) a<_rcvRuYg-1BxaBX%hyE?e(fmjZ6S{YgIx3 delta 250 zcmZp;z|nAlV?qau?kt`4jXkYBj9Yt{9JmA)$jO(?|I6ewUtYdSouT#m_B&imPlYs$ z5>w3+O)V@t(hjgrh#jnWLv4O1*r4b4opzm#R_XJmOF{?`Fsyn6fj|fWLAC&+VKV^)sx6x^J;$LqfM{(=EtR%b z6byrC6$`C!+!&oG2wLl*N=2mw2GG`}RD>#`PATAs;>n2x8WW<)c1MOgv^Vc zflZ(nEdn8UfG-3>7{ow4B*PlWhEmuDHG#UhMRXugL|>~Bj>5m74KBd<@B<9MEf|K1 zAQ4r=7tjEQ;RJL-H}u0zxC;;9KkyV@g26Ho@xc-nfD^cZH>jluAs`0@C?O3pAP@3k zBa}ip?1UPqgGOkE7B~-`@B<9O9TS;O z$cK$k3gxg9YM>5I!#8jVx?uor!w5WrDVPO=5D}SzHF!e+ghFG8T13~7Oo91w5qUu< z#6SY9hPNRPtU^WP0TIvzBk&YfhKcAToCmXTtPU#SEOf&?7zbGdYGDmLf+?6)M|hJ# zq&M-w5*C0HxPf=1?m?N`d`SB0x0pgA#Uuv>C?O3pAP@4P7~a>{i>VCxcBq0{I0%h! z9Mq=}&O!%tLC>p$%pF)v*U|s@&&j5c^X0lRF@?&-R098$`_e_Y3VrYs48b(a0w>Cs zOuz!{KmuV={uCSK?@S|6y2&JD5G^4-90-(%m5Q3Bp#%|TF8MJ82yWouC5T$4VVPMN+AV9Dm1_m=z-s$SRte#1y-4; zcA>9hUFaB`f^%>Yu0cQCf_pFylkg%|w+a{H#JLb3tiT?G;0Y24206q+60C{S?c+*0 z`gRd%;ug_KeeOVh>UakViq{o5Qh2;0{7AWqQL&239amav3M z^nDCfB(Ug9Xo6-q4d>uHxB|U!1O5xPi7b*qDyTOlvZ)phLSrI_S`!WEJGcV;NCVt| z1L{S71Aa;5(hM-GxWoe~#6lKqhDvCHZ{a#T0YfF19F>L?1~Z9<6rv?=xBkABzg%1YmQXzc0MG!O=Y{l-PH&45*7;^aL z-?u-qvMZ_%m855Xp-jD86n`Sh#4z;40<~cOps!ig^P$b39a+4vsGxh9NEp7&Kj*&J z*2KNia$mz8D_>arOh@cnBCdS-VgKOPp)Iu@4_r5pT~N->k^z_BMp}Y3m*1>6PQ5<3 z%0Hy-lE+=&Q%Fh& zxLF-4igFhjJIzSGrxyS8+<)lM8cBOPeAsa6l=Pu$%9RJ@RH z`&E}u_HcERW#>dIn%(RU$ z?JTCyVp&E-CKvX1skJz91NFh V+e>+DBVEQ^AZ4}o>ef#<{|7p;0OJ4v delta 2846 zcmZwId05l;9S88wj|2!;h@5J-d#vYlm zjA2_rXn`qHn>A6a3QjE+D_)NU@71BSpj1Sxg_XUNr}!7Y=Xrg;pM1~X_jlz=wZ)BU zi<%8SaVv=Ylgi%ABcf+#CR+H1kEiJ4Q;WX}Il^9BrTpWunnDY|^ZgtKrFuE4i&4+db*d;!(M z$IuLi;B)APUbqQ&;lD5hqwor7fq<-m3$EY+{tya6&`J>EK@JMgz-q{Y64(ImLM7~i z8mNN?XoaJ296F&Ju0S6=fI;{XegcXU5C?cL8+;%nPN1cENFDk!nbfA9>WN{gekCIC?H302O&ry5n2~&1#}t7OK@H!ph!rBG*||| zfm|p7w|D_XKr-~eV|WEi69lA(PT(bCcd!>uK`%Ulr!YSWeIXl0;3Z6HlOoAl7D-%i z1rP9tP!P&Y56bj0k0h^u3n^YEBsnNR1FInqN?-$&!&Y;DA#F!q4LYcYMreg2pfwuy$iY~x6a070`ckmNTfmKQrIe-hi z0b)o>iJ^>?7=L=4Vwx1N#nD;sSXh04Q72oi_~ zIVeB_t050cU;~uHR@e^Jpo4m7G*50?Ae>s|;dBHHa0<>r4_t$ObH4z3AP=C&@N^Br z3y^~XCV{m$fNWtUtc60Dgu&DR`X()aZoxP>EeW7SunL;tFkFN0p*%f+zDvh0mD(Ws zY-tev6AW+~F2H5D3HRU;JcV)iWvOWwL1d)}A}+Xr7X*O-#IOkDkO5hctuT!Vrb2V+ zNgpaaNpH@*C`Oy%MR6IX4&Efo@TOvO?n57C_)y2Md0?h5g@Y*5)NlImqxqSBRAH`T zXiugE9fUSG3Pv~$=iw4uhg}p9r4>yAYnc_SG5b(sa>fV4ynsr>2tLkUIRBehq6cQjw>*m z?x^R`pxT4R)TYbLr^OmRWx@(r3q|lIl!F#_!XEe=9MDYPB0jae&haOq!2{>vEu`lf zAx!{h`E*B98ADI91T?01wj1$QG?GJATM!cd$pGt6DPKa-7G2WnA0VyuZ}aho_66HG8!QVcH`vwneSO;b)X zVv~rs&K#@E@gZUakHwf`6C$6-vS3p%&mS?6=g(r3KTl?kRfu7{hloNRi_NA;p3EHA zvDxAHanp)L!}jBd9S&~REc%+;8OI@sCMSVIhq7`KZ0KATC2}ZKKP&v$EN$ZOqq+*g z={<+|yqx7_6@9wCx8C1*Z@-h*;#XJ4Mu)Put@r^Krd_A_-Pr`*j*(ZcRV}r72j#j| z>0P$9UbY9Xc`b3&*j~%9zW!y;oZ!}@J6zg>a{NAA zvaHmn(dkT`rqZv<^WhzS=cnS%QP!n>W4gX=E}o)^iPEZ`O$$ERT@>SNSyuY{*7}d{ zPR0z}`J$`2uHxQ;QpNJKLnqUX@l!7%@?Y#e_{kehEAt%Iyr^9-P8XElTDx)eysO%i zzZC!3Ng8%|=yqFhXUxVVMY~kN9BCet77RMpU#}kx-_-VxEfL*Qop-Bi@;Nr7}^=bDaLS_F%0N@3KbqRH5q3y z#z@APq}yG%Z^p640iCF5(0PWjdO@*@37nyUF%B>%hM5jF)8Wr_L^B-<{ih`w8;7?| zOPS7Y04Jrl+C0uM1N#5HwUU`L( + { + if(tool.ToLowerInvariant() == "ffmpeg") return FfmpegPath; + if(tool.ToLowerInvariant() == "ffprobe") return FfprobePath; + return null; + }; + args.TempPath = TempPath; + + VideoFile vf = new(); + vf.PreExecute(args); + vf.Execute(args); + + VideoHasErrors element = new(); + element.PreExecute(args); + int output = element.Execute(args); + + Assert.AreEqual(1, output); + } +} + + +#endif \ No newline at end of file diff --git a/VideoNodes/Tests/_TestBase.cs b/VideoNodes/Tests/_TestBase.cs index 85f59ce5..f1ce8eeb 100644 --- a/VideoNodes/Tests/_TestBase.cs +++ b/VideoNodes/Tests/_TestBase.cs @@ -30,6 +30,7 @@ public abstract class TestBase public string TestPath { get; private set; } public string TempPath { get; private set; } public string FfmpegPath { get; private set; } + public string FfprobePath { get; private set; } public readonly bool IsWindows = RuntimeInformation.IsOSPlatform(OSPlatform.Windows); public readonly bool IsLinux = RuntimeInformation.IsOSPlatform(OSPlatform.Linux); @@ -50,11 +51,12 @@ public abstract class TestBase this.TestPath = this.TestPath?.EmptyAsNull() ?? (IsLinux ? "~/src/ff-files/test-files/videos" : @"d:\videos\testfiles"); this.TempPath = this.TempPath?.EmptyAsNull() ?? (IsLinux ? "~/src/ff-files/temp" : @"d:\videos\temp"); this.FfmpegPath = this.FfmpegPath?.EmptyAsNull() ?? (IsLinux ? "/usr/local/bin/ffmpeg" : @"C:\utils\ffmpeg\ffmpeg.exe"); - + this.FfprobePath = this.FfmpegPath?.EmptyAsNull() ?? (IsLinux ? "/usr/local/bin/ffprobe" : @"C:\utils\ffprobe\ffprobe.exe"); this.TestPath = this.TestPath.Replace("~/", Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "/"); this.TempPath = this.TempPath.Replace("~/", Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "/"); this.FfmpegPath = this.FfmpegPath.Replace("~/", Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "/"); + this.FfprobePath = this.FfprobePath.Replace("~/", Environment.GetFolderPath(Environment.SpecialFolder.UserProfile) + "/"); if (Directory.Exists(this.TempPath) == false) Directory.CreateDirectory(this.TempPath); @@ -91,6 +93,7 @@ public abstract class TestBase protected string TestFile_MovText_Mp4 => Path.Combine(TestPath, "movtext.mp4"); protected string TestFile_BasicMkv => Path.Combine(TestPath, "basic.mkv"); + protected string TestFile_Corrupt => Path.Combine(TestPath, "corrupt.mkv"); protected string TestFile_Webvtt => Path.Combine(TestPath, "webvtt4.mkv"); protected string TestFile_Tag => Path.Combine(TestPath, "tag.mp4"); protected string TestFile_Sitcom => Path.Combine(TestPath, "sitcom.mkv");