update recording dialogs

This commit is contained in:
Luke Pulverenti 2016-09-22 02:57:31 -04:00
parent 6999017bc9
commit eee9c0e048
5 changed files with 64 additions and 35 deletions

View File

@ -334,7 +334,7 @@ namespace MediaBrowser.Common.Implementations.ScheduledTasks
trigger.Stop(); trigger.Stop();
TaskManager.QueueScheduledTask(ScheduledTask); TaskManager.QueueScheduledTask(ScheduledTask, e.Argument);
await Task.Delay(1000).ConfigureAwait(false); await Task.Delay(1000).ConfigureAwait(false);

View File

@ -26,6 +26,30 @@ namespace MediaBrowser.MediaEncoding.Encoder
return new Tuple<List<string>, List<string>>(decoders, encoders); return new Tuple<List<string>, List<string>>(decoders, encoders);
} }
public bool ValidateVersion(string encoderAppPath)
{
string output = string.Empty;
try
{
output = GetProcessOutput(encoderAppPath, "-version");
}
catch
{
}
if (string.IsNullOrWhiteSpace(output))
{
return false;
}
if (output.IndexOf("Libav developers", StringComparison.OrdinalIgnoreCase) != -1)
{
return false;
}
return true;
}
private List<string> GetDecoders(string encoderAppPath) private List<string> GetDecoders(string encoderAppPath)
{ {
string output = string.Empty; string output = string.Empty;

View File

@ -82,6 +82,8 @@ namespace MediaBrowser.MediaEncoding.Encoder
private readonly List<ProcessWrapper> _runningProcesses = new List<ProcessWrapper>(); private readonly List<ProcessWrapper> _runningProcesses = new List<ProcessWrapper>();
private readonly bool _hasExternalEncoder; 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) 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; _zipClient = zipClient;
FFProbePath = ffProbePath; FFProbePath = ffProbePath;
FFMpegPath = ffMpegPath; FFMpegPath = ffMpegPath;
_originalFFProbePath = ffProbePath;
_originalFFMpegPath = ffMpegPath;
_hasExternalEncoder = hasExternalEncoder; _hasExternalEncoder = hasExternalEncoder;
} }
@ -231,6 +235,11 @@ namespace MediaBrowser.MediaEncoding.Encoder
throw new ResourceNotFoundException("ffprobe not found"); throw new ResourceNotFoundException("ffprobe not found");
} }
if (!ValidateVersion(path))
{
throw new ResourceNotFoundException("ffmpeg version 3.0 or greater is required.");
}
var config = GetEncodingOptions(); var config = GetEncodingOptions();
config.EncoderAppPath = path; config.EncoderAppPath = path;
ConfigurationManager.SaveConfiguration("encoding", config); ConfigurationManager.SaveConfiguration("encoding", config);
@ -238,6 +247,11 @@ namespace MediaBrowser.MediaEncoding.Encoder
Init(); Init();
} }
private bool ValidateVersion(string path)
{
return new EncoderValidator(_logger).ValidateVersion(path);
}
private void ConfigureEncoderPaths() private void ConfigureEncoderPaths()
{ {
var appPath = GetEncodingOptions().EncoderAppPath; var appPath = GetEncodingOptions().EncoderAppPath;
@ -287,47 +301,24 @@ namespace MediaBrowser.MediaEncoding.Encoder
string encoderPath = null; string encoderPath = null;
string probePath = null; string probePath = null;
if (TestSystemInstalled("ffmpeg")) if (_hasExternalEncoder && ValidateVersion(_originalFFMpegPath))
{ {
encoderPath = "ffmpeg"; encoderPath = _originalFFMpegPath;
probePath = _originalFFProbePath;
} }
if (TestSystemInstalled("ffprobe"))
if (string.IsNullOrWhiteSpace(encoderPath))
{ {
probePath = "ffprobe"; if (ValidateVersion("ffmpeg") && ValidateVersion("ffprobe"))
{
encoderPath = "ffmpeg";
probePath = "ffprobe";
}
} }
return new Tuple<string, string>(encoderPath, probePath); return new Tuple<string, string>(encoderPath, probePath);
} }
private bool TestSystemInstalled(string app)
{
try
{
var startInfo = new ProcessStartInfo
{
FileName = app,
Arguments = "-v",
UseShellExecute = false,
CreateNoWindow = true,
WindowStyle = ProcessWindowStyle.Hidden,
ErrorDialog = false
};
using (var process = Process.Start(startInfo))
{
process.WaitForExit();
}
_logger.Debug("System app installed: " + app);
return true;
}
catch
{
_logger.Debug("System app not installed: " + app);
return false;
}
}
private Tuple<string, string> GetPathsFromDirectory(string path) private Tuple<string, string> GetPathsFromDirectory(string path)
{ {
// Since we can't predict the file extension, first try directly within the folder // Since we can't predict the file extension, first try directly within the folder

View File

@ -316,6 +316,13 @@ namespace MediaBrowser.Providers.Manager
updateType |= ItemUpdateType.MetadataImport; updateType |= ItemUpdateType.MetadataImport;
} }
var inheritedTags = item.GetInheritedTags();
if (!inheritedTags.SequenceEqual(item.InheritedTags, StringComparer.Ordinal))
{
item.InheritedTags = inheritedTags;
updateType |= ItemUpdateType.MetadataImport;
}
return updateType; return updateType;
} }

View File

@ -412,7 +412,8 @@ namespace MediaBrowser.Server.Implementations.Persistence
"SeriesId", "SeriesId",
"SeriesSortName", "SeriesSortName",
"PresentationUniqueKey", "PresentationUniqueKey",
"InheritedParentalRatingValue" "InheritedParentalRatingValue",
"InheritedTags"
}; };
private readonly string[] _mediaStreamSaveColumns = private readonly string[] _mediaStreamSaveColumns =
@ -1459,6 +1460,12 @@ namespace MediaBrowser.Server.Implementations.Persistence
} }
index++; index++;
if (!reader.IsDBNull(index))
{
item.InheritedTags = reader.GetString(index).Split('|').Where(i => !string.IsNullOrWhiteSpace(i)).ToList();
}
index++;
return item; return item;
} }