namespace FFMpegCore.Arguments; /// /// Represents input parameters for multiple files /// public class MultiInputArgument : IInputArgument { public readonly IEnumerable FilePaths; public readonly bool VerifyExists; public MultiInputArgument(bool verifyExists, IEnumerable filePaths) { VerifyExists = verifyExists; FilePaths = filePaths; } public MultiInputArgument(IEnumerable filePaths, bool verifyExists) : this(verifyExists, filePaths) { } public void Pre() { if (VerifyExists) { var missingFiles = new List(); foreach (var filePath in FilePaths) { if (!File.Exists(filePath)) { missingFiles.Add(filePath); } } if (missingFiles.Any()) { throw new FileNotFoundException($"The following input files were not found: {string.Join(", ", missingFiles)}"); } } } public Task During(CancellationToken cancellationToken = default) { return Task.CompletedTask; } public void Post() { } /// /// Generates a combined input argument text for all file paths /// public string Text => string.Join(" ", FilePaths.Select(filePath => $"-i \"{filePath}\"")); }