aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-06-28 22:45:37 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-06-28 22:45:37 -0400
commit02b0734029f266874e3d7f4902e9a36c2cdee305 (patch)
treed0615a926c4e9ed4da30a5c961bcce2fd42e5f29
parentb48ccef62e6a1bbbd37f9f65660aad4b8deb4015 (diff)
update startup wizard
-rw-r--r--MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs64
-rw-r--r--MediaBrowser.Server.Mono/Native/BaseMonoApp.cs37
2 files changed, 63 insertions, 38 deletions
diff --git a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs
index f8321f6cd..11291a05a 100644
--- a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs
+++ b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs
@@ -112,9 +112,18 @@ namespace MediaBrowser.MediaEncoding.Encoder
// If the path was passed in, save it into config now.
var encodingOptions = GetEncodingOptions();
var appPath = encodingOptions.EncoderAppPath;
- if (!string.IsNullOrWhiteSpace(FFMpegPath) && !string.Equals(FFMpegPath, appPath, StringComparison.Ordinal))
+
+ var valueToSave = FFMpegPath;
+
+ // if using system variable, don't save this.
+ if (string.Equals(valueToSave, "ffmpeg", StringComparison.OrdinalIgnoreCase))
+ {
+ valueToSave = null;
+ }
+
+ if (!string.Equals(valueToSave, appPath, StringComparison.Ordinal))
{
- encodingOptions.EncoderAppPath = FFMpegPath;
+ encodingOptions.EncoderAppPath = valueToSave;
ConfigurationManager.SaveConfiguration("encoding", encodingOptions);
}
}
@@ -161,7 +170,12 @@ namespace MediaBrowser.MediaEncoding.Encoder
{
appPath = Path.Combine(ConfigurationManager.ApplicationPaths.ProgramDataPath, "ffmpeg");
}
+
var newPaths = GetEncoderPaths(appPath);
+ if (string.IsNullOrWhiteSpace(newPaths.Item1) || string.IsNullOrWhiteSpace(newPaths.Item2))
+ {
+ newPaths = TestForInstalledVersions();
+ }
if (!string.IsNullOrWhiteSpace(newPaths.Item1) && !string.IsNullOrWhiteSpace(newPaths.Item2))
{
@@ -192,6 +206,52 @@ namespace MediaBrowser.MediaEncoding.Encoder
return new Tuple<string, string>(null, null);
}
+ private Tuple<string, string> TestForInstalledVersions()
+ {
+ string encoderPath = null;
+ string probePath = null;
+
+ if (TestSystemInstalled("ffmpeg"))
+ {
+ encoderPath = "ffmpeg";
+ }
+ if (TestSystemInstalled("ffprobe"))
+ {
+ probePath = "ffprobe";
+ }
+
+ return new Tuple<string, string>(encoderPath, probePath);
+ }
+
+ private bool TestSystemInstalled(string app)
+ {
+ try
+ {
+ var startInfo = new ProcessStartInfo
+ {
+ FileName = app,
+ Arguments = "-v",
+ UseShellExecute = false,
+ CreateNoWindow = true,
+ WindowStyle = ProcessWindowStyle.Hidden,
+ ErrorDialog = false
+ };
+
+ using (var process = Process.Start(startInfo))
+ {
+ process.WaitForExit();
+ }
+
+ _logger.Debug("System app installed: " + app);
+ return true;
+ }
+ catch
+ {
+ _logger.Debug("System app not installed: " + app);
+ return false;
+ }
+ }
+
private Tuple<string,string> GetPathsFromDirectory(string path)
{
// Since we can't predict the file extension, first try directly within the folder
diff --git a/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs b/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs
index 5d7274356..ebddbe077 100644
--- a/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs
+++ b/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs
@@ -248,6 +248,7 @@ namespace MediaBrowser.Server.Mono.Native
switch (environment.OperatingSystem)
{
+ case OperatingSystem.Osx:
case OperatingSystem.Bsd:
break;
case OperatingSystem.Linux:
@@ -255,20 +256,6 @@ namespace MediaBrowser.Server.Mono.Native
info.ArchiveType = "7z";
info.Version = "20160215";
break;
- case OperatingSystem.Osx:
-
- info.ArchiveType = "7z";
-
- switch (environment.SystemArchitecture)
- {
- case Architecture.X64:
- info.Version = "20160124";
- break;
- case Architecture.X86:
- info.Version = "20150110";
- break;
- }
- break;
}
info.DownloadUrls = GetDownloadUrls(environment);
@@ -280,23 +267,6 @@ namespace MediaBrowser.Server.Mono.Native
{
switch (environment.OperatingSystem)
{
- case OperatingSystem.Osx:
-
- switch (environment.SystemArchitecture)
- {
- case Architecture.X64:
- return new[]
- {
- "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/osx/ffmpeg-x64-2.8.5.7z"
- };
- case Architecture.X86:
- return new[]
- {
- "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/osx/ffmpeg-x86-2.5.3.7z"
- };
- }
- break;
-
case OperatingSystem.Linux:
switch (environment.SystemArchitecture)
@@ -311,11 +281,6 @@ namespace MediaBrowser.Server.Mono.Native
{
"https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/linux/ffmpeg-git-20160215-32bit-static.7z"
};
- case Architecture.Arm:
- return new[]
- {
- "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/linux/ffmpeg-arm.7z"
- };
}
break;
}