From a02333fb0cbda8227dd6a5662c6a880eafd5074c Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Mon, 23 Sep 2013 12:00:22 -0400 Subject: #429 - Extract ffmpeg from core product --- .../Implementations/FFMpegDownloader.cs | 53 ++++++++++------------ 1 file changed, 25 insertions(+), 28 deletions(-) (limited to 'MediaBrowser.ServerApplication/Implementations') 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); } } -- cgit v1.2.3