diff --git a/MediaBrowser.Api/ApiService.cs b/MediaBrowser.Api/ApiService.cs index 891b728342..6da5071dfb 100644 --- a/MediaBrowser.Api/ApiService.cs +++ b/MediaBrowser.Api/ApiService.cs @@ -197,61 +197,5 @@ namespace MediaBrowser.Api return null; } - - private static string _FFMpegDirectory = null; - /// - /// Gets the folder path to ffmpeg - /// - public static string FFMpegDirectory - { - get - { - if (_FFMpegDirectory == null) - { - _FFMpegDirectory = System.IO.Path.Combine(Kernel.Instance.ApplicationPaths.ProgramDataPath, "ffmpeg"); - - if (!Directory.Exists(_FFMpegDirectory)) - { - Directory.CreateDirectory(_FFMpegDirectory); - } - } - - return _FFMpegDirectory; - } - } - - private static string _FFMpegPath = null; - /// - /// Gets the path to ffmpeg.exe - /// - public static string FFMpegPath - { - get - { - if (_FFMpegPath == null) - { - string filename = "ffmpeg.exe"; - - _FFMpegPath = Path.Combine(FFMpegDirectory, filename); - - // Always re-extract the first time to handle new versions - if (File.Exists(_FFMpegPath)) - { - File.Delete(_FFMpegPath); - } - - // Extract ffprobe - using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MediaBrowser.Api.FFMpeg." + filename)) - { - using (FileStream fileStream = new FileStream(_FFMpegPath, FileMode.Create)) - { - stream.CopyTo(fileStream); - } - } - } - - return _FFMpegPath; - } - } } } diff --git a/MediaBrowser.Api/HttpHandlers/BaseMediaHandler.cs b/MediaBrowser.Api/HttpHandlers/BaseMediaHandler.cs index 334dc12b1e..ffdbab65ed 100644 --- a/MediaBrowser.Api/HttpHandlers/BaseMediaHandler.cs +++ b/MediaBrowser.Api/HttpHandlers/BaseMediaHandler.cs @@ -164,8 +164,8 @@ namespace MediaBrowser.Api.HttpHandlers startInfo.RedirectStandardOutput = true; startInfo.RedirectStandardError = true; - startInfo.FileName = ApiService.FFMpegPath; - startInfo.WorkingDirectory = ApiService.FFMpegDirectory; + startInfo.FileName = Kernel.Instance.ApplicationPaths.FFMpegPath; + startInfo.WorkingDirectory = Kernel.Instance.ApplicationPaths.FFMpegDirectory; startInfo.Arguments = GetCommandLineArguments(); Logger.LogInfo(startInfo.FileName + " " + startInfo.Arguments); diff --git a/MediaBrowser.Api/MediaBrowser.Api.csproj b/MediaBrowser.Api/MediaBrowser.Api.csproj index bc4a6ce751..67c7856270 100644 --- a/MediaBrowser.Api/MediaBrowser.Api.csproj +++ b/MediaBrowser.Api/MediaBrowser.Api.csproj @@ -86,12 +86,6 @@ MediaBrowser.Model - - - - - - diff --git a/MediaBrowser.Controller/Configuration/ServerApplicationPaths.cs b/MediaBrowser.Controller/Configuration/ServerApplicationPaths.cs index bd33b19842..e008f7b174 100644 --- a/MediaBrowser.Controller/Configuration/ServerApplicationPaths.cs +++ b/MediaBrowser.Controller/Configuration/ServerApplicationPaths.cs @@ -1,4 +1,5 @@ using System.IO; +using System.Reflection; using MediaBrowser.Common.Configuration; namespace MediaBrowser.Controller.Configuration @@ -150,5 +151,94 @@ namespace MediaBrowser.Controller.Configuration } } + private string _FFMpegDirectory = null; + /// + /// Gets the folder path to ffmpeg + /// + public string FFMpegDirectory + { + get + { + if (_FFMpegDirectory == null) + { + _FFMpegDirectory = Path.Combine(Kernel.Instance.ApplicationPaths.ProgramDataPath, "FFMpeg"); + + if (!Directory.Exists(_FFMpegDirectory)) + { + Directory.CreateDirectory(_FFMpegDirectory); + } + } + + return _FFMpegDirectory; + } + } + + private string _FFMpegPath = null; + /// + /// Gets the path to ffmpeg.exe + /// + public string FFMpegPath + { + get + { + if (_FFMpegPath == null) + { + string filename = "ffmpeg.exe"; + + _FFMpegPath = Path.Combine(FFMpegDirectory, filename); + + // Always re-extract the first time to handle new versions + if (File.Exists(_FFMpegPath)) + { + File.Delete(_FFMpegPath); + } + + // Extract exe + using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MediaBrowser.Controller.FFMpeg." + filename)) + { + using (FileStream fileStream = new FileStream(_FFMpegPath, FileMode.Create)) + { + stream.CopyTo(fileStream); + } + } + } + + return _FFMpegPath; + } + } + + private string _FFProbePath = null; + /// + /// Gets the path to ffprobe.exe + /// + public string FFProbePath + { + get + { + if (_FFProbePath == null) + { + string filename = "ffprobe.exe"; + + _FFProbePath = Path.Combine(FFMpegDirectory, filename); + + // Always re-extract the first time to handle new versions + if (File.Exists(_FFProbePath)) + { + File.Delete(_FFProbePath); + } + + // Extract exe + using (Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("MediaBrowser.Controller.FFMpeg." + filename)) + { + using (FileStream fileStream = new FileStream(_FFProbePath, FileMode.Create)) + { + stream.CopyTo(fileStream); + } + } + } + + return _FFProbePath; + } + } } } diff --git a/MediaBrowser.Api/ffmpeg/ffmpeg.exe.REMOVED.git-id b/MediaBrowser.Controller/FFMpeg/ffmpeg.exe.REMOVED.git-id similarity index 100% rename from MediaBrowser.Api/ffmpeg/ffmpeg.exe.REMOVED.git-id rename to MediaBrowser.Controller/FFMpeg/ffmpeg.exe.REMOVED.git-id diff --git a/MediaBrowser.Controller/FFMpeg/ffprobe.exe.REMOVED.git-id b/MediaBrowser.Controller/FFMpeg/ffprobe.exe.REMOVED.git-id new file mode 100644 index 0000000000..4ad2356c9e --- /dev/null +++ b/MediaBrowser.Controller/FFMpeg/ffprobe.exe.REMOVED.git-id @@ -0,0 +1 @@ +a304265e8410291c1f696e74a4f9b84970bb5753 \ No newline at end of file diff --git a/MediaBrowser.Api/ffmpeg/readme.txt b/MediaBrowser.Controller/FFMpeg/readme.txt similarity index 100% rename from MediaBrowser.Api/ffmpeg/readme.txt rename to MediaBrowser.Controller/FFMpeg/readme.txt diff --git a/MediaBrowser.Controller/MediaBrowser.Controller.csproj b/MediaBrowser.Controller/MediaBrowser.Controller.csproj index 3000fd7a06..580b4d7b56 100644 --- a/MediaBrowser.Controller/MediaBrowser.Controller.csproj +++ b/MediaBrowser.Controller/MediaBrowser.Controller.csproj @@ -79,6 +79,13 @@ + + + + + + +