diff options
| author | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-09-22 02:57:31 -0400 |
|---|---|---|
| committer | Luke Pulverenti <luke.pulverenti@gmail.com> | 2016-09-22 02:57:31 -0400 |
| commit | eee9c0e0489087f4a8f611165e547f8f2dd353d5 (patch) | |
| tree | 1bd122ead19b1c4cb306b5f758b70cc908aa75f7 /MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs | |
| parent | 6999017bc9823fac9f9ff0f0b6f5eab39b2519e2 (diff) | |
update recording dialogs
Diffstat (limited to 'MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs')
| -rw-r--r-- | MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs | 55 |
1 files changed, 23 insertions, 32 deletions
diff --git a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs index b2c2b71f8..d3131eb5a 100644 --- a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs @@ -82,6 +82,8 @@ namespace MediaBrowser.MediaEncoding.Encoder private readonly List<ProcessWrapper> _runningProcesses = new List<ProcessWrapper>(); private readonly bool _hasExternalEncoder; + private string _originalFFMpegPath; + private string _originalFFProbePath; public MediaEncoder(ILogger logger, IJsonSerializer jsonSerializer, string ffMpegPath, string ffProbePath, bool hasExternalEncoder, IServerConfigurationManager configurationManager, IFileSystem fileSystem, ILiveTvManager liveTvManager, IIsoManager isoManager, ILibraryManager libraryManager, IChannelManager channelManager, ISessionManager sessionManager, Func<ISubtitleEncoder> subtitleEncoder, Func<IMediaSourceManager> mediaSourceManager, IHttpClient httpClient, IZipClient zipClient) { @@ -100,6 +102,8 @@ namespace MediaBrowser.MediaEncoding.Encoder _zipClient = zipClient; FFProbePath = ffProbePath; FFMpegPath = ffMpegPath; + _originalFFProbePath = ffProbePath; + _originalFFMpegPath = ffMpegPath; _hasExternalEncoder = hasExternalEncoder; } @@ -231,6 +235,11 @@ namespace MediaBrowser.MediaEncoding.Encoder throw new ResourceNotFoundException("ffprobe not found"); } + if (!ValidateVersion(path)) + { + throw new ResourceNotFoundException("ffmpeg version 3.0 or greater is required."); + } + var config = GetEncodingOptions(); config.EncoderAppPath = path; ConfigurationManager.SaveConfiguration("encoding", config); @@ -238,6 +247,11 @@ namespace MediaBrowser.MediaEncoding.Encoder Init(); } + private bool ValidateVersion(string path) + { + return new EncoderValidator(_logger).ValidateVersion(path); + } + private void ConfigureEncoderPaths() { var appPath = GetEncodingOptions().EncoderAppPath; @@ -287,45 +301,22 @@ namespace MediaBrowser.MediaEncoding.Encoder string encoderPath = null; string probePath = null; - if (TestSystemInstalled("ffmpeg")) + if (_hasExternalEncoder && ValidateVersion(_originalFFMpegPath)) { - encoderPath = "ffmpeg"; + encoderPath = _originalFFMpegPath; + probePath = _originalFFProbePath; } - if (TestSystemInstalled("ffprobe")) - { - probePath = "ffprobe"; - } - - return new Tuple<string, string>(encoderPath, probePath); - } - private bool TestSystemInstalled(string app) - { - try + if (string.IsNullOrWhiteSpace(encoderPath)) { - var startInfo = new ProcessStartInfo + if (ValidateVersion("ffmpeg") && ValidateVersion("ffprobe")) { - FileName = app, - Arguments = "-v", - UseShellExecute = false, - CreateNoWindow = true, - WindowStyle = ProcessWindowStyle.Hidden, - ErrorDialog = false - }; - - using (var process = Process.Start(startInfo)) - { - process.WaitForExit(); + encoderPath = "ffmpeg"; + probePath = "ffprobe"; } - - _logger.Debug("System app installed: " + app); - return true; - } - catch - { - _logger.Debug("System app not installed: " + app); - return false; } + + return new Tuple<string, string>(encoderPath, probePath); } private Tuple<string, string> GetPathsFromDirectory(string path) |
