aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuke Pulverenti <luke.pulverenti@gmail.com>2016-06-20 02:45:35 -0400
committerLuke Pulverenti <luke.pulverenti@gmail.com>2016-06-20 02:45:35 -0400
commitfb07b4640c60d5135097d25d71cad4d2e4b6131f (patch)
tree6fb8fa703200d29b1c36d0bef82f8b371cd6bb27
parent6cb5b2cd72abbda45218b4f463522b5807b3bf00 (diff)
update ffmpeg path customization
-rw-r--r--MediaBrowser.Controller/MediaEncoding/IMediaEncoder.cs6
-rw-r--r--MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs40
-rw-r--r--MediaBrowser.Server.Startup.Common/ApplicationHost.cs4
3 files changed, 29 insertions, 21 deletions
diff --git a/MediaBrowser.Controller/MediaEncoding/IMediaEncoder.cs b/MediaBrowser.Controller/MediaEncoding/IMediaEncoder.cs
index 023af7d1a..c00f76f22 100644
--- a/MediaBrowser.Controller/MediaEncoding/IMediaEncoder.cs
+++ b/MediaBrowser.Controller/MediaEncoding/IMediaEncoder.cs
@@ -20,12 +20,6 @@ namespace MediaBrowser.Controller.MediaEncoding
string EncoderPath { get; }
/// <summary>
- /// Gets the version.
- /// </summary>
- /// <value>The version.</value>
- string Version { get; }
-
- /// <summary>
/// Supportses the decoder.
/// </summary>
/// <param name="decoder">The decoder.</param>
diff --git a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs
index 61986e3bc..fc627c232 100644
--- a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs
+++ b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs
@@ -66,8 +66,6 @@ namespace MediaBrowser.MediaEncoding.Encoder
public string FFProbePath { get; private set; }
- public string Version { get; private set; }
-
protected readonly IServerConfigurationManager ConfigurationManager;
protected readonly IFileSystem FileSystem;
protected readonly ILiveTvManager LiveTvManager;
@@ -81,11 +79,10 @@ namespace MediaBrowser.MediaEncoding.Encoder
private readonly List<ProcessWrapper> _runningProcesses = new List<ProcessWrapper>();
private readonly bool _hasExternalEncoder;
- public MediaEncoder(ILogger logger, IJsonSerializer jsonSerializer, string ffMpegPath, string ffProbePath, string version, IServerConfigurationManager configurationManager, IFileSystem fileSystem, ILiveTvManager liveTvManager, IIsoManager isoManager, ILibraryManager libraryManager, IChannelManager channelManager, ISessionManager sessionManager, Func<ISubtitleEncoder> subtitleEncoder, Func<IMediaSourceManager> mediaSourceManager)
+ 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)
{
_logger = logger;
_jsonSerializer = jsonSerializer;
- Version = version;
ConfigurationManager = configurationManager;
FileSystem = fileSystem;
LiveTvManager = liveTvManager;
@@ -98,34 +95,51 @@ namespace MediaBrowser.MediaEncoding.Encoder
FFProbePath = ffProbePath;
FFMpegPath = ffMpegPath;
- _hasExternalEncoder = !string.IsNullOrWhiteSpace(ffMpegPath);
+ _hasExternalEncoder = hasExternalEncoder;
}
public void Init()
{
ConfigureEncoderPaths();
+
+ if (_hasExternalEncoder)
+ {
+ LogPaths();
+ return;
+ }
+
+ // If the path was passed in, save it into config now.
+ var encodingOptions = GetEncodingOptions();
+ var appPath = encodingOptions.EncoderAppPath;
+ if (!string.IsNullOrWhiteSpace(FFMpegPath) && !string.Equals(FFMpegPath, appPath, StringComparison.Ordinal))
+ {
+ encodingOptions.EncoderAppPath = FFMpegPath;
+ ConfigurationManager.SaveConfiguration("encoding", encodingOptions);
+ }
}
private void ConfigureEncoderPaths()
{
if (_hasExternalEncoder)
{
- LogPaths();
return;
}
var appPath = GetEncodingOptions().EncoderAppPath;
- if (Directory.Exists(appPath))
+ if (!string.IsNullOrWhiteSpace(appPath))
{
- SetPathsFromDirectory(appPath);
- }
+ if (Directory.Exists(appPath))
+ {
+ SetPathsFromDirectory(appPath);
+ }
- else if (File.Exists(appPath))
- {
- FFMpegPath = appPath;
+ else if (File.Exists(appPath))
+ {
+ FFMpegPath = appPath;
- SetProbePathFromEncoderPath(appPath);
+ SetProbePathFromEncoderPath(appPath);
+ }
}
LogPaths();
diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
index c6a180db1..1130d3a11 100644
--- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
+++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
@@ -650,13 +650,13 @@ namespace MediaBrowser.Server.Startup.Common
var info = await new FFMpegLoader(Logger, ApplicationPaths, HttpClient, ZipClient, FileSystemManager, NativeApp.Environment, NativeApp.GetType().Assembly, NativeApp.GetFfmpegInstallInfo())
.GetFFMpegInfo(NativeApp.Environment, _startupOptions, progress).ConfigureAwait(false);
- _hasExternalEncoder = !string.IsNullOrWhiteSpace(info.EncoderPath);
+ _hasExternalEncoder = string.Equals(info.Version, "custom", StringComparison.OrdinalIgnoreCase);
var mediaEncoder = new MediaEncoder(LogManager.GetLogger("MediaEncoder"),
JsonSerializer,
info.EncoderPath,
info.ProbePath,
- info.Version,
+ _hasExternalEncoder,
ServerConfigurationManager,
FileSystemManager,
LiveTvManager,