mirror of
https://github.com/rosenbjerg/FFMpegCore.git
synced 2025-12-15 02:25:44 +00:00
45 lines
1.6 KiB
C#
45 lines
1.6 KiB
C#
using FFMpegCore.Arguments;
|
|
using FFMpegCore.Pipes;
|
|
|
|
namespace FFMpegCore;
|
|
|
|
public class FFMpegMultiOutputOptions
|
|
{
|
|
internal readonly List<FFMpegArgumentOptions> Outputs = new();
|
|
|
|
public IEnumerable<IArgument> Arguments => Outputs.SelectMany(o => o.Arguments);
|
|
|
|
public FFMpegMultiOutputOptions OutputToFile(string file, bool overwrite = true, Action<FFMpegArgumentOptions>? addArguments = null)
|
|
{
|
|
return AddOutput(new OutputArgument(file, overwrite), addArguments);
|
|
}
|
|
|
|
public FFMpegMultiOutputOptions OutputToUrl(string uri, Action<FFMpegArgumentOptions>? addArguments = null)
|
|
{
|
|
return AddOutput(new OutputUrlArgument(uri), addArguments);
|
|
}
|
|
|
|
public FFMpegMultiOutputOptions OutputToUrl(Uri uri, Action<FFMpegArgumentOptions>? addArguments = null)
|
|
{
|
|
return AddOutput(new OutputUrlArgument(uri.ToString()), addArguments);
|
|
}
|
|
|
|
public FFMpegMultiOutputOptions OutputToPipe(IPipeSink reader, Action<FFMpegArgumentOptions>? addArguments = null)
|
|
{
|
|
return AddOutput(new OutputPipeArgument(reader), addArguments);
|
|
}
|
|
|
|
public FFMpegMultiOutputOptions OutPutToSegmentedFiles(SegmentArgument segmentArgument, Action<FFMpegArgumentOptions>? addArguments = null)
|
|
{
|
|
return AddOutput(new OutputSegmentArgument(segmentArgument), addArguments);
|
|
}
|
|
|
|
public FFMpegMultiOutputOptions AddOutput(IOutputArgument argument, Action<FFMpegArgumentOptions>? addArguments)
|
|
{
|
|
var args = new FFMpegArgumentOptions();
|
|
addArguments?.Invoke(args);
|
|
args.Arguments.Add(argument);
|
|
Outputs.Add(args);
|
|
return this;
|
|
}
|
|
}
|