FFMpegDownloadInfo.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146
  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://ffmpeg.gusari.org/static/
  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. switch (environment.SystemArchitecture)
  32. {
  33. case Architecture.X86_X64:
  34. info.Version = "20150124";
  35. break;
  36. case Architecture.X86:
  37. info.Version = "20150124";
  38. break;
  39. }
  40. break;
  41. case OperatingSystem.Osx:
  42. info.ArchiveType = "7z";
  43. switch (environment.SystemArchitecture)
  44. {
  45. case Architecture.X86_X64:
  46. info.Version = "20150110";
  47. break;
  48. case Architecture.X86:
  49. info.Version = "20150110";
  50. break;
  51. }
  52. break;
  53. case OperatingSystem.Windows:
  54. info.FFMpegFilename = "ffmpeg.exe";
  55. info.FFProbeFilename = "ffprobe.exe";
  56. info.Version = "20150110";
  57. info.ArchiveType = "7z";
  58. switch (environment.SystemArchitecture)
  59. {
  60. case Architecture.X86_X64:
  61. break;
  62. case Architecture.X86:
  63. break;
  64. }
  65. break;
  66. }
  67. info.DownloadUrls = GetDownloadUrls(environment);
  68. return info;
  69. }
  70. private static string[] GetDownloadUrls(NativeEnvironment environment)
  71. {
  72. switch (environment.OperatingSystem)
  73. {
  74. case OperatingSystem.Windows:
  75. switch (environment.SystemArchitecture)
  76. {
  77. case Architecture.X86_X64:
  78. return new[]
  79. {
  80. "http://ffmpeg.zeranoe.com/builds/win64/static/ffmpeg-20150110-git-4df01d5-win64-static.7z",
  81. "https://github.com/MediaBrowser/MediaBrowser.Resources/raw/master/ffmpeg/windows/ffmpeg-20150110-git-4df01d5-win64-static.7z"
  82. };
  83. case Architecture.X86:
  84. return new[]
  85. {
  86. "http://ffmpeg.zeranoe.com/builds/win32/static/ffmpeg-20150110-git-4df01d5-win32-static.7z",
  87. "https://github.com/MediaBrowser/MediaBrowser.Resources/raw/master/ffmpeg/windows/ffmpeg-20150110-git-4df01d5-win32-static.7z"
  88. };
  89. }
  90. break;
  91. case OperatingSystem.Osx:
  92. switch (environment.SystemArchitecture)
  93. {
  94. case Architecture.X86_X64:
  95. return new[]
  96. {
  97. "https://github.com/MediaBrowser/MediaBrowser.Resources/raw/master/ffmpeg/osx/ffmpeg-x64-2.5.3.7z"
  98. };
  99. case Architecture.X86:
  100. return new[]
  101. {
  102. "https://github.com/MediaBrowser/MediaBrowser.Resources/raw/master/ffmpeg/osx/ffmpeg-x86-2.5.3.7z"
  103. };
  104. }
  105. break;
  106. case OperatingSystem.Linux:
  107. switch (environment.SystemArchitecture)
  108. {
  109. case Architecture.X86_X64:
  110. return new[]
  111. {
  112. "https://github.com/MediaBrowser/MediaBrowser.Resources/raw/master/ffmpeg/linux/ffmpeg-2.5.3-64bit-static.7z"
  113. };
  114. case Architecture.X86:
  115. return new[]
  116. {
  117. "https://github.com/MediaBrowser/MediaBrowser.Resources/raw/master/ffmpeg/linux/ffmpeg-2.5.3-32bit-static.7z"
  118. };
  119. }
  120. break;
  121. }
  122. // No version available
  123. return new string[] { };
  124. }
  125. }
  126. }