Skip to content

Commit

Permalink
Added log levels
Browse files Browse the repository at this point in the history
  • Loading branch information
Thodoris Koskinopoulos committed Nov 27, 2022
1 parent 45de0ad commit 0f8ad9a
Show file tree
Hide file tree
Showing 3 changed files with 59 additions and 6 deletions.
15 changes: 15 additions & 0 deletions FFMpegCore/FFMpeg/Enums/FFMpegLogLevel.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
namespace FFMpegCore.Enums
{
public enum FFMpegLogLevel
{
Quiet = 0,
Panic = 1,
Fatal = 2,
Error = 3,
Warning = 4,
Info = 5,
Verbose = 6,
Debug = 7,
Trace = 8
}
}
38 changes: 33 additions & 5 deletions FFMpegCore/FFMpeg/FFMpegArgumentProcessor.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
using System.Text.RegularExpressions;
using System.Threading;
using System.Threading.Tasks;
using FFMpegCore.Enums;
using FFMpegCore.Exceptions;
using FFMpegCore.Helpers;
using Instances;
Expand All @@ -21,6 +22,7 @@ public class FFMpegArgumentProcessor
private Action<string>? _onOutput;
private Action<string>? _onError;
private TimeSpan? _totalTimespan;
private FFMpegLogLevel? _logLevel;

internal FFMpegArgumentProcessor(FFMpegArguments ffMpegArguments)
{
Expand Down Expand Up @@ -83,12 +85,23 @@ public FFMpegArgumentProcessor Configure(Action<FFOptions> configureOptions)
_configurations.Add(configureOptions);
return this;
}

/// <summary>
/// Sets the log level of this process. Overides the <see cref="FFMpegLogLevel"/>
/// that is set in the <see cref="FFOptions"/> for this specific process.
/// </summary>
/// <param name="logLevel">The log level of the ffmpeg execution.</param>
public FFMpegArgumentProcessor WithLogLevel(FFMpegLogLevel logLevel)
{
_logLevel = logLevel;
return this;
}

public bool ProcessSynchronously(bool throwOnError = true, FFOptions? ffMpegOptions = null)
{
var options = GetConfiguredOptions(ffMpegOptions);
var processArguments = PrepareProcessArguments(options, out var cancellationTokenSource);


IProcessResult? processResult = null;
try
{
Expand All @@ -107,7 +120,7 @@ public async Task<bool> ProcessAsynchronously(bool throwOnError = true, FFOption
{
var options = GetConfiguredOptions(ffMpegOptions);
var processArguments = PrepareProcessArguments(options, out var cancellationTokenSource);

IProcessResult? processResult = null;
try
{
Expand All @@ -118,7 +131,7 @@ public async Task<bool> ProcessAsynchronously(bool throwOnError = true, FFOption
if (throwOnError)
throw;
}

return HandleCompletion(throwOnError, processResult?.ExitCode ?? -1, processResult?.ErrorData ?? Array.Empty<string>());
}

Expand Down Expand Up @@ -193,10 +206,25 @@ private ProcessArguments PrepareProcessArguments(FFOptions ffOptions,
{
FFMpegHelper.RootExceptionCheck();
FFMpegHelper.VerifyFFMpegExists(ffOptions);

string? arguments = _ffMpegArguments.Text;

//If local loglevel is null, set the global.
if (_logLevel == null)
_logLevel = ffOptions.LogLevel;

//If neither local nor global loglevel is null, set the argument.
if (_logLevel != null)
{
string normalizedLogLevel = _logLevel.ToString()
.ToLower();
arguments += $" -v {normalizedLogLevel}";
}

var startInfo = new ProcessStartInfo
{
FileName = GlobalFFOptions.GetFFMpegBinaryPath(ffOptions),
Arguments = _ffMpegArguments.Text,
Arguments = arguments,
StandardOutputEncoding = ffOptions.Encoding,
StandardErrorEncoding = ffOptions.Encoding,
WorkingDirectory = ffOptions.WorkingDirectory
Expand All @@ -206,7 +234,7 @@ private ProcessArguments PrepareProcessArguments(FFOptions ffOptions,

if (_onOutput != null || _onTimeProgress != null || (_onPercentageProgress != null && _totalTimespan != null))
processArguments.OutputDataReceived += OutputData;

if (_onError != null)
processArguments.ErrorDataReceived += ErrorData;

Expand Down
12 changes: 11 additions & 1 deletion FFMpegCore/FFOptions.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
using System;
using FFMpegCore.Enums;
using System;
using System.Collections.Generic;
using System.IO;
using System.Text;
Expand Down Expand Up @@ -27,6 +28,15 @@ public class FFOptions : ICloneable
/// </summary>
public Encoding Encoding { get; set; } = Encoding.Default;

/// <summary>
/// The log level to use when calling of the ffmpeg executable.
/// <para>
/// This option can be overridden before an execution of a Process command
/// to set the log level for that command.
/// </para>
/// </summary>
public FFMpegLogLevel? LogLevel { get; set; }

/// <summary>
///
/// </summary>
Expand Down

0 comments on commit 0f8ad9a

Please sign in to comment.