update recording dialogs
This commit is contained in:
parent
6999017bc9
commit
eee9c0e048
|
@ -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);
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user