diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-10-12 23:39:22 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2013-10-12 23:39:22 -0400 |
| commit | e98665a0917f93eba79970de44c68c9a88b78bb8 (patch) | |
| tree | 8f2b8dd86a363b58fc47610c9565650a3587309c /MediaBrowser.ServerApplication | |
| parent | f8f17efd54426067e8e5f7624ad1549125229426 (diff) | |
added ffmpeg downloading for mono
Diffstat (limited to 'MediaBrowser.ServerApplication')
3 files changed, 47 insertions, 21 deletions
diff --git a/MediaBrowser.ServerApplication/FFMpeg/FFMpegDownloadInfo.cs b/MediaBrowser.ServerApplication/FFMpeg/FFMpegDownloadInfo.cs new file mode 100644 index 000000000..9fb3391b9 --- /dev/null +++ b/MediaBrowser.ServerApplication/FFMpeg/FFMpegDownloadInfo.cs @@ -0,0 +1,21 @@ + +namespace MediaBrowser.ServerApplication.FFMpeg +{ + public static class FFMpegDownloadInfo + { + public static string Version = "ffmpeg20130904.1"; + + public static string[] FfMpegUrls = new[] + { + "https://github.com/MediaBrowser/MediaBrowser.Resources/raw/master/ffmpeg/windows/ffmpeg-20130904-git-f974289-win32-static.7z", + + "http://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-20130904-git-f974289-win32-static.7z", + "https://www.dropbox.com/s/a81cb2ob23fwcfs/ffmpeg-20130904-git-f974289-win32-static.7z?dl=1" + }; + + public static string FFMpegFilename = "ffmpeg.exe"; + public static string FFProbeFilename = "ffprobe.exe"; + + public static string ArchiveType = "7z"; + } +} diff --git a/MediaBrowser.ServerApplication/FFMpeg/FFMpegDownloader.cs b/MediaBrowser.ServerApplication/FFMpeg/FFMpegDownloader.cs index cf79899c6..e9dee88c6 100644 --- a/MediaBrowser.ServerApplication/FFMpeg/FFMpegDownloader.cs +++ b/MediaBrowser.ServerApplication/FFMpeg/FFMpegDownloader.cs @@ -21,21 +21,11 @@ namespace MediaBrowser.ServerApplication.FFMpeg private readonly ILogger _logger; private readonly IZipClient _zipClient; - private const string Version = "ffmpeg20130904.1"; - private readonly string[] _fontUrls = new[] { "https://www.dropbox.com/s/pj847twf7riq0j7/ARIALUNI.7z?dl=1" }; - private readonly string[] _ffMpegUrls = new[] - { - "https://github.com/MediaBrowser/MediaBrowser.Resources/raw/master/ffmpeg/windows/ffmpeg-20130904-git-f974289-win32-static.7z", - - "http://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-20130904-git-f974289-win32-static.7z", - "https://www.dropbox.com/s/a81cb2ob23fwcfs/ffmpeg-20130904-git-f974289-win32-static.7z?dl=1" - }; - public FFMpegDownloader(ILogger logger, IApplicationPaths appPaths, IHttpClient httpClient, IZipClient zipClient) { _logger = logger; @@ -46,13 +36,13 @@ namespace MediaBrowser.ServerApplication.FFMpeg public async Task<FFMpegInfo> GetFFMpegInfo() { - var versionedDirectoryPath = Path.Combine(GetMediaToolsPath(true), Version); + var versionedDirectoryPath = Path.Combine(GetMediaToolsPath(true), FFMpegDownloadInfo.Version); var info = new FFMpegInfo { - ProbePath = Path.Combine(versionedDirectoryPath, "ffprobe.exe"), - Path = Path.Combine(versionedDirectoryPath, "ffmpeg.exe"), - Version = Version + ProbePath = Path.Combine(versionedDirectoryPath, FFMpegDownloadInfo.FFProbeFilename), + Path = Path.Combine(versionedDirectoryPath, FFMpegDownloadInfo.FFMpegFilename), + Version = FFMpegDownloadInfo.Version }; Directory.CreateDirectory(versionedDirectoryPath); @@ -73,7 +63,7 @@ namespace MediaBrowser.ServerApplication.FFMpeg private async Task DownloadFFMpeg(FFMpegInfo info) { - foreach (var url in _ffMpegUrls) + foreach (var url in FFMpegDownloadInfo.FfMpegUrls) { try { @@ -115,11 +105,18 @@ namespace MediaBrowser.ServerApplication.FFMpeg try { - Extract7zArchive(tempFile, tempFolder); + ExtractArchive(tempFile, tempFolder); + + var files = Directory.EnumerateFiles(tempFolder, "*", SearchOption.AllDirectories).ToList(); - var files = Directory.EnumerateFiles(tempFolder, "*.exe", SearchOption.AllDirectories).ToList(); + foreach (var file in files.Where(i => + { + var filename = Path.GetFileName(i); - foreach (var file in files.Where(i => i.IndexOf("ffprobe.exe", StringComparison.OrdinalIgnoreCase) != -1 || i.IndexOf("ffmpeg.exe", StringComparison.OrdinalIgnoreCase) != -1)) + return + string.Equals(filename, FFMpegDownloadInfo.FFProbeFilename, StringComparison.OrdinalIgnoreCase) || + string.Equals(filename, FFMpegDownloadInfo.FFMpegFilename, StringComparison.OrdinalIgnoreCase); + })) { File.Copy(file, Path.Combine(targetFolder, Path.GetFileName(file)), true); } @@ -130,9 +127,16 @@ namespace MediaBrowser.ServerApplication.FFMpeg } } - private void Extract7zArchive(string archivePath, string targetPath) + private void ExtractArchive(string archivePath, string targetPath) { - _zipClient.ExtractAllFrom7z(archivePath, targetPath, true); + if (string.Equals(FFMpegDownloadInfo.ArchiveType, "7z", StringComparison.OrdinalIgnoreCase)) + { + _zipClient.ExtractAllFrom7z(archivePath, targetPath, true); + } + else if (string.Equals(FFMpegDownloadInfo.ArchiveType, "gz", StringComparison.OrdinalIgnoreCase)) + { + _zipClient.ExtractAllFromTar(archivePath, targetPath, true); + } } private void DeleteFile(string path) @@ -235,7 +239,7 @@ namespace MediaBrowser.ServerApplication.FFMpeg return; } - Extract7zArchive(tempFile, fontsDirectory); + ExtractArchive(tempFile, fontsDirectory); try { diff --git a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj index f0ede70b2..dbf9109fd 100644 --- a/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj +++ b/MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj @@ -186,6 +186,7 @@ <SubType>Component</SubType> </Compile> <Compile Include="EntryPoints\StartupWizard.cs" /> + <Compile Include="FFMpeg\FFMpegDownloadInfo.cs" /> <Compile Include="FFMpeg\FFMpegInfo.cs" /> <Compile Include="Native\Assemblies.cs" /> <Compile Include="Native\HttpClientFactory.cs" /> |
