Support for specyfying process working directory through FFOptions (#272)

This commit is contained in:
Malte Rosenbjerg 2021-11-01 18:13:23 +01:00
parent bdb12aa48a
commit c2d28055c1
3 changed files with 13 additions and 6 deletions

View file

@ -145,17 +145,18 @@ private bool HandleCompletion(bool throwOnError, int exitCode, IReadOnlyList<str
return exitCode == 0; return exitCode == 0;
} }
private Instance PrepareInstance(FFOptions ffMpegOptions, private Instance PrepareInstance(FFOptions ffOptions,
out CancellationTokenSource cancellationTokenSource) out CancellationTokenSource cancellationTokenSource)
{ {
FFMpegHelper.RootExceptionCheck(); FFMpegHelper.RootExceptionCheck();
FFMpegHelper.VerifyFFMpegExists(ffMpegOptions); FFMpegHelper.VerifyFFMpegExists(ffOptions);
var startInfo = new ProcessStartInfo var startInfo = new ProcessStartInfo
{ {
FileName = GlobalFFOptions.GetFFMpegBinaryPath(ffMpegOptions), FileName = GlobalFFOptions.GetFFMpegBinaryPath(ffOptions),
Arguments = _ffMpegArguments.Text, Arguments = _ffMpegArguments.Text,
StandardOutputEncoding = ffMpegOptions.Encoding, StandardOutputEncoding = ffOptions.Encoding,
StandardErrorEncoding = ffMpegOptions.Encoding, StandardErrorEncoding = ffOptions.Encoding,
WorkingDirectory = ffOptions.WorkingDirectory
}; };
var instance = new Instance(startInfo); var instance = new Instance(startInfo);
cancellationTokenSource = new CancellationTokenSource(); cancellationTokenSource = new CancellationTokenSource();

View file

@ -6,6 +6,11 @@ namespace FFMpegCore
{ {
public class FFOptions public class FFOptions
{ {
/// <summary>
/// Working directory for the ffmpeg/ffprobe instance
/// </summary>
public string WorkingDirectory { get; set; } = string.Empty;
/// <summary> /// <summary>
/// Folder container ffmpeg and ffprobe binaries. Leave empty if ffmpeg and ffprobe are present in PATH /// Folder container ffmpeg and ffprobe binaries. Leave empty if ffmpeg and ffprobe are present in PATH
/// </summary> /// </summary>

View file

@ -165,7 +165,8 @@ private static Instance PrepareInstance(string arguments, int outputCapacity, FF
var startInfo = new ProcessStartInfo(GlobalFFOptions.GetFFProbeBinaryPath(), arguments) var startInfo = new ProcessStartInfo(GlobalFFOptions.GetFFProbeBinaryPath(), arguments)
{ {
StandardOutputEncoding = ffOptions.Encoding, StandardOutputEncoding = ffOptions.Encoding,
StandardErrorEncoding = ffOptions.Encoding StandardErrorEncoding = ffOptions.Encoding,
WorkingDirectory = ffOptions.WorkingDirectory
}; };
var instance = new Instance(startInfo) { DataBufferCapacity = outputCapacity }; var instance = new Instance(startInfo) { DataBufferCapacity = outputCapacity };
return instance; return instance;