diff --git a/FFMpegCore.Test/ArgumentBuilderTest.cs b/FFMpegCore.Test/ArgumentBuilderTest.cs
index f676a44..2c550c9 100644
--- a/FFMpegCore.Test/ArgumentBuilderTest.cs
+++ b/FFMpegCore.Test/ArgumentBuilderTest.cs
@@ -258,6 +258,13 @@ public void Builder_BuildString_Seek()
Assert.AreEqual("-ss 00:00:10.000 -i \"input.mp4\" -ss 00:00:10.000 \"output.mp4\"", str);
}
+ [TestMethod]
+ public void Builder_BuildString_EndSeek()
+ {
+ var str = FFMpegArguments.FromFileInput("input.mp4", false, opt => opt.EndSeek(TimeSpan.FromSeconds(10))).OutputToFile("output.mp4", false, opt => opt.EndSeek(TimeSpan.FromSeconds(10))).Arguments;
+ Assert.AreEqual("-to 00:00:10.000 -i \"input.mp4\" -to 00:00:10.000 \"output.mp4\"", str);
+ }
+
[TestMethod]
public void Builder_BuildString_Shortest()
{
diff --git a/FFMpegCore/FFMpeg/Arguments/EndSeekArgument.cs b/FFMpegCore/FFMpeg/Arguments/EndSeekArgument.cs
new file mode 100644
index 0000000..5ced1c4
--- /dev/null
+++ b/FFMpegCore/FFMpeg/Arguments/EndSeekArgument.cs
@@ -0,0 +1,35 @@
+using System;
+
+namespace FFMpegCore.Arguments
+{
+ ///
+ /// Represents seek parameter
+ ///
+ public class EndSeekArgument : IArgument
+ {
+ public readonly TimeSpan? SeekTo;
+
+ public EndSeekArgument(TimeSpan? seekTo)
+ {
+ SeekTo = seekTo;
+ }
+
+ public string Text {
+ get {
+ if(SeekTo.HasValue)
+ {
+ int hours = SeekTo.Value.Hours;
+ if(SeekTo.Value.Days > 0)
+ {
+ hours += SeekTo.Value.Days * 24;
+ }
+ return $"-to {hours.ToString("00")}:{SeekTo.Value.Minutes.ToString("00")}:{SeekTo.Value.Seconds.ToString("00")}.{SeekTo.Value.Milliseconds.ToString("000")}";
+ }
+ else
+ {
+ return string.Empty;
+ }
+ }
+ }
+ }
+}
diff --git a/FFMpegCore/FFMpeg/FFMpegArgumentOptions.cs b/FFMpegCore/FFMpeg/FFMpegArgumentOptions.cs
index 0f54b8c..cc49c5f 100644
--- a/FFMpegCore/FFMpeg/FFMpegArgumentOptions.cs
+++ b/FFMpegCore/FFMpeg/FFMpegArgumentOptions.cs
@@ -54,6 +54,7 @@ public FFMpegArgumentOptions WithAudioFilters(Action audioFi
public FFMpegArgumentOptions WithCustomArgument(string argument) => WithArgument(new CustomArgument(argument));
public FFMpegArgumentOptions Seek(TimeSpan? seekTo) => WithArgument(new SeekArgument(seekTo));
+ public FFMpegArgumentOptions EndSeek(TimeSpan? seekTo) => WithArgument(new EndSeekArgument(seekTo));
public FFMpegArgumentOptions Loop(int times) => WithArgument(new LoopArgument(times));
public FFMpegArgumentOptions OverwriteExisting() => WithArgument(new OverwriteArgument());
public FFMpegArgumentOptions SelectStream(int streamIndex, int inputFileIndex = 0,