diff --git a/MediaBrowser.Controller/MediaEncoding/IMediaEncoder.cs b/MediaBrowser.Controller/MediaEncoding/IMediaEncoder.cs
index 12c893b0f..62377b19e 100644
--- a/MediaBrowser.Controller/MediaEncoding/IMediaEncoder.cs
+++ b/MediaBrowser.Controller/MediaEncoding/IMediaEncoder.cs
@@ -131,7 +131,7 @@ namespace MediaBrowser.Controller.MediaEncoding
/// System.String.
string EscapeSubtitleFilterPath(string path);
- void Init();
+ Task Init();
Task UpdateEncoderPath(string path, string pathType);
}
diff --git a/MediaBrowser.Server.Startup.Common/FFMpeg/FFmpegValidator.cs b/MediaBrowser.MediaEncoding/Encoder/EncoderValidator.cs
similarity index 88%
rename from MediaBrowser.Server.Startup.Common/FFMpeg/FFmpegValidator.cs
rename to MediaBrowser.MediaEncoding/Encoder/EncoderValidator.cs
index d92dc1b96..99581332d 100644
--- a/MediaBrowser.Server.Startup.Common/FFMpeg/FFmpegValidator.cs
+++ b/MediaBrowser.MediaEncoding/Encoder/EncoderValidator.cs
@@ -1,31 +1,29 @@
-using MediaBrowser.Common.Configuration;
-using MediaBrowser.Model.Logging;
-using System;
+using System;
+using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
-using System.Collections.Generic;
-using CommonIO;
+using MediaBrowser.Model.Logging;
-namespace MediaBrowser.Server.Startup.Common.FFMpeg
+namespace MediaBrowser.MediaEncoding.Encoder
{
- public class FFmpegValidator
+ public class EncoderValidator
{
private readonly ILogger _logger;
- private readonly IApplicationPaths _appPaths;
- private readonly IFileSystem _fileSystem;
- public FFmpegValidator(ILogger logger, IApplicationPaths appPaths, IFileSystem fileSystem)
+ public EncoderValidator(ILogger logger)
{
_logger = logger;
- _appPaths = appPaths;
- _fileSystem = fileSystem;
}
- public Tuple,List> Validate(string encoderPath)
+ public Tuple, List> Validate(string encoderPath)
{
+ _logger.Info("Validating media encoder at {0}", encoderPath);
+
var decoders = GetDecoders(encoderPath);
var encoders = GetEncoders(encoderPath);
+ _logger.Info("Encoder validation complete");
+
return new Tuple, List>(decoders, encoders);
}
diff --git a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs
index b5be4eb87..7264ad2d1 100644
--- a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs
+++ b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs
@@ -132,7 +132,20 @@ namespace MediaBrowser.MediaEncoding.Encoder
return false;
}
- public void Init()
+ public async Task Init()
+ {
+ InitPaths();
+
+ if (!string.IsNullOrWhiteSpace(FFMpegPath))
+ {
+ var result = new EncoderValidator(_logger).Validate(FFMpegPath);
+
+ SetAvailableDecoders(result.Item1);
+ SetAvailableEncoders(result.Item2);
+ }
+ }
+
+ private void InitPaths()
{
ConfigureEncoderPaths();
diff --git a/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj b/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj
index 5576a49bd..794353451 100644
--- a/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj
+++ b/MediaBrowser.MediaEncoding/MediaBrowser.MediaEncoding.csproj
@@ -71,6 +71,7 @@
+
diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs b/MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs
index 79872b100..28a62c012 100644
--- a/MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs
+++ b/MediaBrowser.Server.Implementations/Connect/ConnectEntryPoint.cs
@@ -44,11 +44,12 @@ namespace MediaBrowser.Server.Implementations.Connect
LoadCachedAddress();
_timer = new PeriodicTimer(TimerCallback, null, TimeSpan.FromSeconds(5), TimeSpan.FromHours(3));
+ ((ConnectManager)_connectManager).Start();
}
private readonly string[] _ipLookups =
{
- "http://bot.whatismyipaddress.com",
+ "http://bot.whatismyipaddress.com",
"https://connect.emby.media/service/ip"
};
@@ -78,17 +79,18 @@ namespace MediaBrowser.Server.Implementations.Connect
}
// If this produced an ipv6 address, try again
- if (validIpAddress == null || validIpAddress.AddressFamily == AddressFamily.InterNetworkV6)
+ if (validIpAddress != null && validIpAddress.AddressFamily == AddressFamily.InterNetworkV6)
{
foreach (var ipLookupUrl in _ipLookups)
{
try
{
- validIpAddress = await GetIpAddress(ipLookupUrl, true).ConfigureAwait(false);
+ var newAddress = await GetIpAddress(ipLookupUrl, true).ConfigureAwait(false);
// Try to find the ipv4 address, if present
- if (validIpAddress.AddressFamily == AddressFamily.InterNetwork)
+ if (newAddress.AddressFamily == AddressFamily.InterNetwork)
{
+ validIpAddress = newAddress;
break;
}
}
diff --git a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs
index 8dbea707d..24750de94 100644
--- a/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs
+++ b/MediaBrowser.Server.Implementations/Connect/ConnectManager.cs
@@ -139,11 +139,14 @@ namespace MediaBrowser.Server.Implementations.Connect
_securityManager = securityManager;
_fileSystem = fileSystem;
- _config.ConfigurationUpdated += _config_ConfigurationUpdated;
-
LoadCachedData();
}
+ internal void Start()
+ {
+ _config.ConfigurationUpdated += _config_ConfigurationUpdated;
+ }
+
internal void OnWanAddressResolved(IPAddress address)
{
DiscoveredWanIpAddress = address;
diff --git a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
index 8978cec5f..1e5c54d93 100644
--- a/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
+++ b/MediaBrowser.Server.Startup.Common/ApplicationHost.cs
@@ -322,7 +322,7 @@ namespace MediaBrowser.Server.Startup.Common
await base.RunStartupTasks().ConfigureAwait(false);
- InitMediaEncoder();
+ await MediaEncoder.Init().ConfigureAwait(false);
Logger.Info("ServerId: {0}", SystemId);
Logger.Info("Core startup complete");
@@ -350,20 +350,6 @@ namespace MediaBrowser.Server.Startup.Common
LogManager.RemoveConsoleOutput();
}
- private void InitMediaEncoder()
- {
- MediaEncoder.Init();
-
- Task.Run(() =>
- {
- var result = new FFmpegValidator(Logger, ApplicationPaths, FileSystemManager).Validate(MediaEncoder.EncoderPath);
-
- var mediaEncoder = (MediaEncoder) MediaEncoder;
- mediaEncoder.SetAvailableDecoders(result.Item1);
- mediaEncoder.SetAvailableEncoders(result.Item2);
- });
- }
-
public override Task Init(IProgress progress)
{
HttpPort = ServerConfigurationManager.Configuration.HttpServerPortNumber;
diff --git a/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj b/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj
index 5b88a6bd9..808d25fc9 100644
--- a/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj
+++ b/MediaBrowser.Server.Startup.Common/MediaBrowser.Server.Startup.Common.csproj
@@ -68,7 +68,6 @@
-