diff --git a/MediaBrowser.ServerApplication/ApplicationHost.cs b/MediaBrowser.ServerApplication/ApplicationHost.cs index 5cae997850..a2965d4eaf 100644 --- a/MediaBrowser.ServerApplication/ApplicationHost.cs +++ b/MediaBrowser.ServerApplication/ApplicationHost.cs @@ -258,6 +258,8 @@ namespace MediaBrowser.ServerApplication ZipClient = new DotNetZipClient(); RegisterSingleInstance(ZipClient); + var mediaEncoderTask = RegisterMediaEncoder(); + UserDataRepository = new SqliteUserDataRepository(ApplicationPaths, JsonSerializer, LogManager); RegisterSingleInstance(UserDataRepository); @@ -284,8 +286,6 @@ namespace MediaBrowser.ServerApplication RegisterSingleInstance(() => new LuceneSearchEngine(ApplicationPaths, LogManager, LibraryManager)); - await RegisterMediaEncoder().ConfigureAwait(false); - var clientConnectionManager = new SessionManager(UserDataRepository, ServerConfigurationManager, Logger, UserRepository); RegisterSingleInstance(clientConnectionManager); @@ -310,7 +310,7 @@ namespace MediaBrowser.ServerApplication await ConfigureNotificationsRepository().ConfigureAwait(false); - await Task.WhenAll(itemsTask, displayPreferencesTask, userdataTask).ConfigureAwait(false); + await Task.WhenAll(itemsTask, displayPreferencesTask, userdataTask, mediaEncoderTask).ConfigureAwait(false); SetKernelProperties(); } diff --git a/MediaBrowser.ServerApplication/Implementations/FFMpegDownloader.cs b/MediaBrowser.ServerApplication/Implementations/FFMpegDownloader.cs index 7fd0acddd2..861ca7f3b0 100644 --- a/MediaBrowser.ServerApplication/Implementations/FFMpegDownloader.cs +++ b/MediaBrowser.ServerApplication/Implementations/FFMpegDownloader.cs @@ -29,33 +29,37 @@ namespace MediaBrowser.ServerApplication.Implementations public async Task GetFFMpegInfo() { - var assembly = GetType().Assembly; + var version = "ffmpeg20130904"; - var prefix = GetType().Namespace + "."; + var versionedDirectoryPath = Path.Combine(GetMediaToolsPath(true), version); - var srch = prefix + "ffmpeg"; - - var resource = assembly.GetManifestResourceNames().First(r => r.StartsWith(srch)); - - var filename = - resource.Substring(resource.IndexOf(prefix, StringComparison.OrdinalIgnoreCase) + prefix.Length); - - var versionedDirectoryPath = Path.Combine(GetMediaToolsPath(true), - Path.GetFileNameWithoutExtension(filename)); + var info = new FFMpegInfo + { + ProbePath = Path.Combine(versionedDirectoryPath, "ffprobe.exe"), + Path = Path.Combine(versionedDirectoryPath, "ffmpeg.exe"), + Version = version + }; if (!Directory.Exists(versionedDirectoryPath)) { Directory.CreateDirectory(versionedDirectoryPath); } - await ExtractTools(assembly, resource, versionedDirectoryPath).ConfigureAwait(false); + if (!File.Exists(info.ProbePath) || !File.Exists(info.Path)) + { + ExtractTools(version, versionedDirectoryPath); + } - return new FFMpegInfo + try { - ProbePath = Path.Combine(versionedDirectoryPath, "ffprobe.exe"), - Path = Path.Combine(versionedDirectoryPath, "ffmpeg.exe"), - Version = Path.GetFileNameWithoutExtension(versionedDirectoryPath) - }; + await DownloadFonts(versionedDirectoryPath).ConfigureAwait(false); + } + catch (Exception ex) + { + _logger.ErrorException("Error getting ffmpeg font files", ex); + } + + return info; } /// @@ -64,20 +68,13 @@ namespace MediaBrowser.ServerApplication.Implementations /// The assembly. /// The zip file resource path. /// The target path. - private async Task ExtractTools(Assembly assembly, string zipFileResourcePath, string targetPath) + private void ExtractTools(string version, string targetPath) { - using (var resourceStream = assembly.GetManifestResourceStream(zipFileResourcePath)) - { - _zipClient.ExtractAll(resourceStream, targetPath, false); - } + var zipFileResourcePath = GetType().Namespace + "." + version + ".zip"; - try + using (var resourceStream = GetType().Assembly.GetManifestResourceStream(zipFileResourcePath)) { - await DownloadFonts(targetPath).ConfigureAwait(false); - } - catch (Exception ex) - { - _logger.ErrorException("Error getting ffmpeg font files", ex); + _zipClient.ExtractAll(resourceStream, targetPath, false); } }