aboutsummaryrefslogtreecommitdiff
path: root/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs
diff options
context:
space:
mode:
Diffstat (limited to 'MediaBrowser.Server.Mono/Native/BaseMonoApp.cs')
-rw-r--r--MediaBrowser.Server.Mono/Native/BaseMonoApp.cs95
1 files changed, 95 insertions, 0 deletions
diff --git a/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs b/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs
index e54bc0b4a..6d19c3275 100644
--- a/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs
+++ b/MediaBrowser.Server.Mono/Native/BaseMonoApp.cs
@@ -9,6 +9,8 @@ using System.Collections.Generic;
using System.Reflection;
using System.Text.RegularExpressions;
using MediaBrowser.Controller.Power;
+using MediaBrowser.Server.Startup.Common.FFMpeg;
+using OperatingSystem = MediaBrowser.Server.Startup.Common.OperatingSystem;
namespace MediaBrowser.Server.Mono.Native
{
@@ -209,6 +211,99 @@ namespace MediaBrowser.Server.Mono.Native
{
return new NullPowerManagement();
}
+
+ public FFMpegInstallInfo GetFfmpegInstallInfo()
+ {
+ return GetInfo(Environment);
+ }
+
+ public static FFMpegInstallInfo GetInfo(NativeEnvironment environment)
+ {
+ var info = new FFMpegInstallInfo();
+
+ // Windows builds: http://ffmpeg.zeranoe.com/builds/
+ // Linux builds: http://johnvansickle.com/ffmpeg/
+ // OS X builds: http://ffmpegmac.net/
+ // OS X x64: http://www.evermeet.cx/ffmpeg/
+
+ switch (environment.OperatingSystem)
+ {
+ case OperatingSystem.Bsd:
+ break;
+ case OperatingSystem.Linux:
+
+ info.ArchiveType = "7z";
+ info.Version = "20160215";
+ break;
+ case OperatingSystem.Osx:
+
+ info.ArchiveType = "7z";
+
+ switch (environment.SystemArchitecture)
+ {
+ case Architecture.X86_X64:
+ info.Version = "20160124";
+ break;
+ case Architecture.X86:
+ info.Version = "20150110";
+ break;
+ }
+ break;
+ }
+
+ info.DownloadUrls = GetDownloadUrls(environment);
+
+ return info;
+ }
+
+ private static string[] GetDownloadUrls(NativeEnvironment environment)
+ {
+ switch (environment.OperatingSystem)
+ {
+ case OperatingSystem.Osx:
+
+ switch (environment.SystemArchitecture)
+ {
+ case Architecture.X86_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)
+ {
+ case Architecture.X86_X64:
+ return new[]
+ {
+ "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/linux/ffmpeg-git-20160215-64bit-static.7z"
+ };
+ case Architecture.X86:
+ return new[]
+ {
+ "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;
+ }
+
+ // No version available
+ return new string[] { };
+ }
+
}
public class NullPowerManagement : IPowerManagement