From 214d68d369ad1b7aff1368eb16269d423134aa1b Mon Sep 17 00:00:00 2001 From: Vlad Jerca Date: Fri, 10 May 2019 20:25:57 +0300 Subject: [PATCH] FFMpegCore: remove binaries from repository (use choco) - improve binary path detection Former-commit-id: 4d75640a1631502b0feaa366d0555192f378b0f0 --- FFMpegCore.Test/ffmpeg.config.json | 2 +- FFMpegCore/FFMPEG/FFMpeg.cs | 11 +---- FFMpegCore/FFMPEG/FFMpegOptions.cs | 49 ++++++++++++++++++- FFMpegCore/FFMPEG/FFProbe.cs | 11 +---- .../FFMPEG/bin/x64/ffmpeg.exe.REMOVED.git-id | 1 - .../FFMPEG/bin/x64/ffprobe.exe.REMOVED.git-id | 1 - .../FFMPEG/bin/x86/ffmpeg.exe.REMOVED.git-id | 1 - .../FFMPEG/bin/x86/ffprobe.exe.REMOVED.git-id | 1 - FFMpegCore/FFMpegCore.csproj | 12 ----- FFMpegCore/Helpers/FFMpegHelper.cs | 13 ----- FFMpegCore/Helpers/FFProbeHelper.cs | 14 +----- 11 files changed, 52 insertions(+), 64 deletions(-) delete mode 100644 FFMpegCore/FFMPEG/bin/x64/ffmpeg.exe.REMOVED.git-id delete mode 100644 FFMpegCore/FFMPEG/bin/x64/ffprobe.exe.REMOVED.git-id delete mode 100644 FFMpegCore/FFMPEG/bin/x86/ffmpeg.exe.REMOVED.git-id delete mode 100644 FFMpegCore/FFMPEG/bin/x86/ffprobe.exe.REMOVED.git-id diff --git a/FFMpegCore.Test/ffmpeg.config.json b/FFMpegCore.Test/ffmpeg.config.json index 5b351c0..12322b0 100644 --- a/FFMpegCore.Test/ffmpeg.config.json +++ b/FFMpegCore.Test/ffmpeg.config.json @@ -1,3 +1,3 @@ { - "RootDirectory": "./FFMPEG/bin" + "RootDirectory": "C:\\ProgramData\\chocolatey\\lib\\ffmpeg\\tools\\ffmpeg\\bin\\" } \ No newline at end of file diff --git a/FFMpegCore/FFMPEG/FFMpeg.cs b/FFMpegCore/FFMPEG/FFMpeg.cs index 561fb65..bb83813 100644 --- a/FFMpegCore/FFMPEG/FFMpeg.cs +++ b/FFMpegCore/FFMPEG/FFMpeg.cs @@ -30,16 +30,7 @@ public FFMpeg(): base() { FFMpegHelper.RootExceptionCheck(FFMpegOptions.Options.RootDirectory); - var progName = "ffmpeg"; - if (RuntimeInformation.IsOSPlatform (OSPlatform.Windows)) { - var target = Environment.Is64BitProcess ? "x64" : "x86"; - - progName = $"{target}{Path.DirectorySeparatorChar}{progName}.exe"; - } - - var path = $"{Path.DirectorySeparatorChar}{progName}"; - - _ffmpegPath = $"{FFMpegOptions.Options.RootDirectory}{path}"; + _ffmpegPath = FFMpegOptions.Options.FFmpegBinary; ArgumentBuilder = new FFArgumentBuilder(); } diff --git a/FFMpegCore/FFMPEG/FFMpegOptions.cs b/FFMpegCore/FFMPEG/FFMpegOptions.cs index aa34749..a16ba60 100644 --- a/FFMpegCore/FFMPEG/FFMpegOptions.cs +++ b/FFMpegCore/FFMPEG/FFMpegOptions.cs @@ -1,5 +1,8 @@ -using Newtonsoft.Json; +using FFMpegCore.FFMPEG.Exceptions; +using Newtonsoft.Json; +using System; using System.IO; +using System.Runtime.InteropServices; namespace FFMpegCore.FFMPEG { @@ -24,5 +27,49 @@ static FFMpegOptions() } public string RootDirectory { get; set; } = _DefaultRoot; + + public string FFmpegBinary + { + get + { + var target = Environment.Is64BitProcess ? "x64" : "x86"; + var progName = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "ffmpeg.exe" : "ffmpeg"; + + if (Directory.Exists($"{Options.RootDirectory}{target}")) + { + progName = $"{target}{Path.DirectorySeparatorChar}{progName}"; + } + + var path = $"{Options.RootDirectory}{Path.DirectorySeparatorChar}{progName}"; + + if (!File.Exists(path)) + throw new FFMpegException(FFMpegExceptionType.Dependency, + $"FFMpeg cannot be found @ {path}"); + + return path; + } + } + + public string FFProbeBinary + { + get + { + var target = Environment.Is64BitProcess ? "x64" : "x86"; + var progName = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "ffprobe.exe" : "ffprobe"; + + if (Directory.Exists($"{Options.RootDirectory}{target}")) + { + progName = $"{target}{Path.DirectorySeparatorChar}{progName}"; + } + + var path = $"{Options.RootDirectory}{Path.DirectorySeparatorChar}{progName}"; + + if (!File.Exists(path)) + throw new FFMpegException(FFMpegExceptionType.Dependency, + $"FFProbe cannot be found @ {path}"); + + return path; + } + } } } diff --git a/FFMpegCore/FFMPEG/FFProbe.cs b/FFMpegCore/FFMPEG/FFProbe.cs index 838c271..df32c93 100644 --- a/FFMpegCore/FFMPEG/FFProbe.cs +++ b/FFMpegCore/FFMPEG/FFProbe.cs @@ -16,16 +16,7 @@ public FFProbe(): base() { FFProbeHelper.RootExceptionCheck(FFMpegOptions.Options.RootDirectory); - var progName = "ffprobe"; - if (RuntimeInformation.IsOSPlatform (OSPlatform.Windows)) { - var target = Environment.Is64BitProcess ? "x64" : "x86"; - - progName = $"{target}{Path.DirectorySeparatorChar}{progName}.exe"; - } - - var path = $"{Path.DirectorySeparatorChar}{progName}"; - - _ffprobePath = $"{FFMpegOptions.Options.RootDirectory}{path}"; + _ffprobePath = FFMpegOptions.Options.FFProbeBinary; } /// diff --git a/FFMpegCore/FFMPEG/bin/x64/ffmpeg.exe.REMOVED.git-id b/FFMpegCore/FFMPEG/bin/x64/ffmpeg.exe.REMOVED.git-id deleted file mode 100644 index 9961b1b..0000000 --- a/FFMpegCore/FFMPEG/bin/x64/ffmpeg.exe.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -cbeb93b3e549b119eb93ac5d5a120aa71ae8fd0c \ No newline at end of file diff --git a/FFMpegCore/FFMPEG/bin/x64/ffprobe.exe.REMOVED.git-id b/FFMpegCore/FFMPEG/bin/x64/ffprobe.exe.REMOVED.git-id deleted file mode 100644 index 9f55f1d..0000000 --- a/FFMpegCore/FFMPEG/bin/x64/ffprobe.exe.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -adf675e8cc71563575d18d103be11fcf9efd31cd \ No newline at end of file diff --git a/FFMpegCore/FFMPEG/bin/x86/ffmpeg.exe.REMOVED.git-id b/FFMpegCore/FFMPEG/bin/x86/ffmpeg.exe.REMOVED.git-id deleted file mode 100644 index e8e7260..0000000 --- a/FFMpegCore/FFMPEG/bin/x86/ffmpeg.exe.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -958219856504251bf1bb68ff08490fcee2448975 \ No newline at end of file diff --git a/FFMpegCore/FFMPEG/bin/x86/ffprobe.exe.REMOVED.git-id b/FFMpegCore/FFMPEG/bin/x86/ffprobe.exe.REMOVED.git-id deleted file mode 100644 index cf7e824..0000000 --- a/FFMpegCore/FFMPEG/bin/x86/ffprobe.exe.REMOVED.git-id +++ /dev/null @@ -1 +0,0 @@ -5a70926400475c3a0efd0ef30a60a89c49b41f2a \ No newline at end of file diff --git a/FFMpegCore/FFMpegCore.csproj b/FFMpegCore/FFMpegCore.csproj index bac20dd..ef27566 100644 --- a/FFMpegCore/FFMpegCore.csproj +++ b/FFMpegCore/FFMpegCore.csproj @@ -127,18 +127,6 @@ Always - - Always - - - Always - - - Always - - - Always - diff --git a/FFMpegCore/Helpers/FFMpegHelper.cs b/FFMpegCore/Helpers/FFMpegHelper.cs index dc574dd..f0c65c3 100644 --- a/FFMpegCore/Helpers/FFMpegHelper.cs +++ b/FFMpegCore/Helpers/FFMpegHelper.cs @@ -73,19 +73,6 @@ public static void RootExceptionCheck(string root) if (root == null) throw new FFMpegException(FFMpegExceptionType.Dependency, "FFMpeg root is not configured in app config. Missing key 'ffmpegRoot'."); - - var progName = "ffmpeg"; - if (RuntimeInformation.IsOSPlatform (OSPlatform.Windows)) { - var target = Environment.Is64BitProcess ? "x64" : "x86"; - - progName = $"{target}{Path.DirectorySeparatorChar}{progName}.exe"; - } - - var path = root + $"{Path.DirectorySeparatorChar}{progName}"; - - if (!File.Exists(path)) - throw new FFMpegException(FFMpegExceptionType.Dependency, - "FFMpeg cannot be found in the root directory!"); } } } diff --git a/FFMpegCore/Helpers/FFProbeHelper.cs b/FFMpegCore/Helpers/FFProbeHelper.cs index 59bc724..3efcda9 100644 --- a/FFMpegCore/Helpers/FFProbeHelper.cs +++ b/FFMpegCore/Helpers/FFProbeHelper.cs @@ -23,19 +23,7 @@ public static void RootExceptionCheck(string root) if (root == null) throw new FFMpegException(FFMpegExceptionType.Dependency, "FFProbe root is not configured in app config. Missing key 'ffmpegRoot'."); - - var progName = "ffprobe"; - if (RuntimeInformation.IsOSPlatform (OSPlatform.Windows)) { - var target = Environment.Is64BitProcess ? "x64" : "x86"; - - progName = $"{target}{Path.DirectorySeparatorChar}{progName}.exe"; - } - - var path = root + $"{Path.DirectorySeparatorChar}{progName}"; - - if (!File.Exists(path)) - throw new FFMpegException(FFMpegExceptionType.Dependency, - $"FFProbe cannot be found in the in {path}..."); + } } }