FFMpegDownloadInfo.cs 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136
  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 bool IsEmbedded { get; set; }
  12. public FFMpegDownloadInfo()
  13. {
  14. DownloadUrls = new string[] { };
  15. Version = "Path";
  16. FFMpegFilename = "ffmpeg";
  17. FFProbeFilename = "ffprobe";
  18. }
  19. public static FFMpegDownloadInfo GetInfo(NativeEnvironment environment)
  20. {
  21. var info = new FFMpegDownloadInfo();
  22. // Windows builds: http://ffmpeg.zeranoe.com/builds/
  23. // Linux builds: http://johnvansickle.com/ffmpeg/
  24. // OS X builds: http://ffmpegmac.net/
  25. // OS X x64: http://www.evermeet.cx/ffmpeg/
  26. switch (environment.OperatingSystem)
  27. {
  28. case OperatingSystem.Bsd:
  29. break;
  30. case OperatingSystem.Linux:
  31. info.ArchiveType = "7z";
  32. info.Version = "20160215";
  33. break;
  34. case OperatingSystem.Osx:
  35. info.ArchiveType = "7z";
  36. switch (environment.SystemArchitecture)
  37. {
  38. case Architecture.X86_X64:
  39. info.Version = "20160124";
  40. break;
  41. case Architecture.X86:
  42. info.Version = "20150110";
  43. break;
  44. }
  45. break;
  46. case OperatingSystem.Windows:
  47. info.FFMpegFilename = "ffmpeg.exe";
  48. info.FFProbeFilename = "ffprobe.exe";
  49. info.Version = "20160401";
  50. info.ArchiveType = "7z";
  51. info.IsEmbedded = true;
  52. switch (environment.SystemArchitecture)
  53. {
  54. case Architecture.X86_X64:
  55. break;
  56. case Architecture.X86:
  57. break;
  58. }
  59. break;
  60. }
  61. info.DownloadUrls = GetDownloadUrls(environment);
  62. return info;
  63. }
  64. private static string[] GetDownloadUrls(NativeEnvironment environment)
  65. {
  66. switch (environment.OperatingSystem)
  67. {
  68. case OperatingSystem.Windows:
  69. switch (environment.SystemArchitecture)
  70. {
  71. case Architecture.X86_X64:
  72. return new string[] { "MediaBrowser.ServerApplication.ffmpeg.ffmpegx64.7z" };
  73. case Architecture.X86:
  74. return new string[] { "MediaBrowser.ServerApplication.ffmpeg.ffmpegx86.7z" };
  75. }
  76. break;
  77. case OperatingSystem.Osx:
  78. switch (environment.SystemArchitecture)
  79. {
  80. case Architecture.X86_X64:
  81. return new[]
  82. {
  83. "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/osx/ffmpeg-x64-2.8.5.7z"
  84. };
  85. case Architecture.X86:
  86. return new[]
  87. {
  88. "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/osx/ffmpeg-x86-2.5.3.7z"
  89. };
  90. }
  91. break;
  92. case OperatingSystem.Linux:
  93. switch (environment.SystemArchitecture)
  94. {
  95. case Architecture.X86_X64:
  96. return new[]
  97. {
  98. "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/linux/ffmpeg-git-20160215-64bit-static.7z"
  99. };
  100. case Architecture.X86:
  101. return new[]
  102. {
  103. "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/linux/ffmpeg-git-20160215-32bit-static.7z"
  104. };
  105. case Architecture.Arm:
  106. return new[]
  107. {
  108. "https://github.com/MediaBrowser/Emby.Resources/raw/master/ffmpeg/linux/ffmpeg-arm.7z"
  109. };
  110. }
  111. break;
  112. }
  113. // No version available
  114. return new string[] { };
  115. }
  116. }
  117. }