From 29d8dc84a64a5c76be6450ac1987c2191a1a7cfd Mon Sep 17 00:00:00 2001 From: zenodity <262299845+zenodity@users.noreply.github.com> Date: Thu, 19 Feb 2026 08:33:43 +0000 Subject: [PATCH] Add OutputToNull method to handle the null muxer argument --- FFMpegCore.Test/ArgumentBuilderTest.cs | 7 +++++++ .../FFMpeg/Arguments/OutputNullArgument.cs | 16 ++++++++++++++++ FFMpegCore/FFMpeg/FFMpegArguments.cs | 7 ++++++- 3 files changed, 29 insertions(+), 1 deletion(-) create mode 100644 FFMpegCore/FFMpeg/Arguments/OutputNullArgument.cs diff --git a/FFMpegCore.Test/ArgumentBuilderTest.cs b/FFMpegCore.Test/ArgumentBuilderTest.cs index 64a116b1..94cf1f99 100644 --- a/FFMpegCore.Test/ArgumentBuilderTest.cs +++ b/FFMpegCore.Test/ArgumentBuilderTest.cs @@ -727,4 +727,11 @@ public void OutputPipe_MaxLength_ShorterThanMacOSMax() var pipePath = new OutputPipeArgument(new StreamPipeSink(Stream.Null)).PipePath; Assert.IsLessThan(_macOsMaxPipePathLength, pipePath.Length); } + + [TestMethod] + public void Builder_BuildString_Null_Output() + { + var str = FFMpegArguments.FromFileInput("input.mp4").OutputToNull(opt => opt.WithCustomArgument("-filter_complex ebur128")).Arguments; + Assert.AreEqual("-i \"input.mp4\" -filter_complex ebur128 -f null -", str); + } } diff --git a/FFMpegCore/FFMpeg/Arguments/OutputNullArgument.cs b/FFMpegCore/FFMpeg/Arguments/OutputNullArgument.cs new file mode 100644 index 00000000..fa5725f7 --- /dev/null +++ b/FFMpegCore/FFMpeg/Arguments/OutputNullArgument.cs @@ -0,0 +1,16 @@ +namespace FFMpegCore.Arguments; + +public class OutputNullArgument : IOutputArgument +{ + public string Text => "-f null -"; + + public Task During(CancellationToken cancellationToken = default) => Task.CompletedTask; + + public void Post() + { + } + + public void Pre() + { + } +} diff --git a/FFMpegCore/FFMpeg/FFMpegArguments.cs b/FFMpegCore/FFMpeg/FFMpegArguments.cs index 927442d3..e6b734ea 100644 --- a/FFMpegCore/FFMpeg/FFMpegArguments.cs +++ b/FFMpegCore/FFMpeg/FFMpegArguments.cs @@ -156,7 +156,7 @@ public FFMpegArgumentProcessor OutputToPipe(IPipeSink reader, Action? addArguments) { var args = new FFMpegArgumentOptions(); @@ -180,6 +180,11 @@ public FFMpegArgumentProcessor MultiOutput(Action addO Arguments.AddRange(args.Arguments); return new FFMpegArgumentProcessor(this); } + + public FFMpegArgumentProcessor OutputToNull(Action? addArguments = null) + { + return ToProcessor(new OutputNullArgument(), addArguments); + } internal void Pre() {