FFMpegDownloadInfo.cs 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142
  1. 
  2. namespace MediaBrowser.Server.Startup.Common.FFMpeg
  3. {
  4. public class FFMpegDownloadInfo
  5. {
  6. public string Version { get; set; }
  7. public string FFMpegFilename { get; set; }
  8. public string FFProbeFilename { get; set; }
  9. public string ArchiveType { get; set; }
  10. public string[] DownloadUrls { get; set; }
  11. public FFMpegDownloadInfo()
  12. {
  13. DownloadUrls = new string[] { };
  14. Version = "Path";
  15. FFMpegFilename = "ffmpeg";
  16. FFProbeFilename = "ffprobe";
  17. }
  18. public static FFMpegDownloadInfo GetInfo(NativeEnvironment environment)
  19. {
  20. var info = new FFMpegDownloadInfo();
  21. // Windows builds: http://ffmpeg.zeranoe.com/builds/
  22. // Linux builds: http://johnvansickle.com/ffmpeg/
  23. // OS X builds: http://ffmpegmac.net/
  24. // OS X x64: http://www.evermeet.cx/ffmpeg/
  25. switch (environment.OperatingSystem)
  26. {
  27. case OperatingSystem.Bsd:
  28. break;
  29. case OperatingSystem.Linux:
  30. info.ArchiveType = "7z";
  31. info.Version = "20150917";
  32. break;
  33. case OperatingSystem.Osx:
  34. info.ArchiveType = "7z";
  35. switch (environment.SystemArchitecture)
  36. {
  37. case Architecture.X86_X64:
  38. info.Version = "20160124";
  39. break;
  40. case Architecture.X86:
  41. info.Version = "20150110";
  42. break;
  43. }
  44. break;
  45. case OperatingSystem.Windows:
  46. info.FFMpegFilename = "ffmpeg.exe";
  47. info.FFProbeFilename = "ffprobe.exe";
  48. info.Version = "20151111";
  49. info.ArchiveType = "7z";
  50. switch (environment.SystemArchitecture)
  51. {
  52. case Architecture.X86_X64:
  53. break;
  54. case Architecture.X86:
  55. break;
  56. }
  57. break;
  58. }
  59. info.DownloadUrls = GetDownloadUrls(environment);
  60. return info;
  61. }
  62. private static string[] GetDownloadUrls(NativeEnvironment environment)
  63. {
  64. switch (environment.OperatingSystem)
  65. {
  66. case OperatingSystem.Windows:
  67. switch (environment.SystemArchitecture)
  68. {
  69. case Architecture.X86_X64:
  70. return new[]
  71. {
  72. "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/windows/ffmpeg-20151111-win64.7z",
  73. "http://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-20151109-git-480bad7-win64-static.7z"
  74. };
  75. case Architecture.X86:
  76. return new[]
  77. {
  78. "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/windows/ffmpeg-20151111-win32.7z",
  79. "http://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-20151109-git-480bad7-win32-static.7z"
  80. };
  81. }
  82. break;
  83. case OperatingSystem.Osx:
  84. switch (environment.SystemArchitecture)
  85. {
  86. case Architecture.X86_X64:
  87. return new[]
  88. {
  89. "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/osx/ffmpeg-x64-2.8.5.7z"
  90. };
  91. case Architecture.X86:
  92. return new[]
  93. {
  94. "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/osx/ffmpeg-x86-2.5.3.7z"
  95. };
  96. }
  97. break;
  98. case OperatingSystem.Linux:
  99. switch (environment.SystemArchitecture)
  100. {
  101. case Architecture.X86_X64:
  102. return new[]
  103. {
  104. "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/linux/ffmpeg-2.8.0-64bit-static.7z"
  105. };
  106. case Architecture.X86:
  107. return new[]
  108. {
  109. "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/linux/ffmpeg-2.8.0-32bit-static.7z"
  110. };
  111. case Architecture.Arm:
  112. return new[]
  113. {
  114. "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/linux/ffmpeg-arm.7z"
  115. };
  116. }
  117. break;
  118. }
  119. // No version available
  120. return new string[] { };
  121. }
  122. }
  123. }