From 0f800c4333395b160fa518f4cd364e4d5e56bad2 Mon Sep 17 00:00:00 2001 From: Malte Rosenbjerg Date: Fri, 17 Oct 2025 21:49:42 +0200 Subject: [PATCH 1/3] Provide fps argument to input parameter as well --- FFMpegCore/FFMpeg/FFMpeg.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/FFMpegCore/FFMpeg/FFMpeg.cs b/FFMpegCore/FFMpeg/FFMpeg.cs index 7076a49..0b6de74 100644 --- a/FFMpegCore/FFMpeg/FFMpeg.cs +++ b/FFMpegCore/FFMpeg/FFMpeg.cs @@ -132,7 +132,8 @@ public static class FFMpeg } return FFMpegArguments - .FromFileInput(Path.Combine(tempFolderName, $"%09d{fileExtension}"), false) + .FromFileInput(Path.Combine(tempFolderName, $"%09d{fileExtension}"), false, options => options + .WithFramerate(frameRate)) .OutputToFile(output, true, options => options .ForcePixelFormat("yuv420p") .Resize(width!.Value, height!.Value) From 3c3da28a99bb347c66766ccdd077410c34b2ff70 Mon Sep 17 00:00:00 2001 From: Malte Rosenbjerg Date: Fri, 17 Oct 2025 21:50:34 +0200 Subject: [PATCH 2/3] Update test assertion on video duration --- FFMpegCore.Test/VideoTest.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/FFMpegCore.Test/VideoTest.cs b/FFMpegCore.Test/VideoTest.cs index 7946552..8ecbf6e 100644 --- a/FFMpegCore.Test/VideoTest.cs +++ b/FFMpegCore.Test/VideoTest.cs @@ -739,7 +739,7 @@ public class VideoTest Assert.IsTrue(success); var result = FFProbe.Analyse(outputFile); - Assert.AreEqual(1, result.Duration.Seconds); + Assert.AreEqual(3, result.Duration.Seconds); Assert.AreEqual(imageAnalysis.PrimaryVideoStream!.Width, result.PrimaryVideoStream!.Width); Assert.AreEqual(imageAnalysis.PrimaryVideoStream!.Height, result.PrimaryVideoStream.Height); } From 6b1e34ce08b10a84f953bfd81663307bc1a444c3 Mon Sep 17 00:00:00 2001 From: Malte Rosenbjerg Date: Fri, 17 Oct 2025 21:50:49 +0200 Subject: [PATCH 3/3] Change fps parameter to double --- FFMpegCore/FFMpeg/Arguments/GifPaletteArgument.cs | 5 ++--- FFMpegCore/FFMpeg/FFMpegArgumentOptions.cs | 2 +- FFMpegCore/FFMpeg/SnapshotArgumentBuilder.cs | 2 +- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/FFMpegCore/FFMpeg/Arguments/GifPaletteArgument.cs b/FFMpegCore/FFMpeg/Arguments/GifPaletteArgument.cs index 7e4db86..8e62139 100644 --- a/FFMpegCore/FFMpeg/Arguments/GifPaletteArgument.cs +++ b/FFMpegCore/FFMpeg/Arguments/GifPaletteArgument.cs @@ -4,12 +4,11 @@ namespace FFMpegCore.Arguments; public class GifPaletteArgument : IArgument { - private readonly int _fps; - + private readonly double _fps; private readonly Size? _size; private readonly int _streamIndex; - public GifPaletteArgument(int streamIndex, int fps, Size? size) + public GifPaletteArgument(int streamIndex, double fps, Size? size) { _streamIndex = streamIndex; _fps = fps; diff --git a/FFMpegCore/FFMpeg/FFMpegArgumentOptions.cs b/FFMpegCore/FFMpeg/FFMpegArgumentOptions.cs index 7ee10e2..4b6a170 100644 --- a/FFMpegCore/FFMpeg/FFMpegArgumentOptions.cs +++ b/FFMpegCore/FFMpeg/FFMpegArgumentOptions.cs @@ -258,7 +258,7 @@ public class FFMpegArgumentOptions : FFMpegArgumentsBase return WithArgument(new ID3V2VersionArgument(id3v2Version)); } - public FFMpegArgumentOptions WithGifPaletteArgument(int streamIndex, Size? size, int fps = 12) + public FFMpegArgumentOptions WithGifPaletteArgument(int streamIndex, Size? size, double fps = 12) { return WithArgument(new GifPaletteArgument(streamIndex, fps, size)); } diff --git a/FFMpegCore/FFMpeg/SnapshotArgumentBuilder.cs b/FFMpegCore/FFMpeg/SnapshotArgumentBuilder.cs index 3204bcc..6237320 100644 --- a/FFMpegCore/FFMpeg/SnapshotArgumentBuilder.cs +++ b/FFMpegCore/FFMpeg/SnapshotArgumentBuilder.cs @@ -62,7 +62,7 @@ public static class SnapshotArgumentBuilder TimeSpan? captureTime = null, TimeSpan? duration = null, int? streamIndex = null, - int fps = 12) + double fps = 12) { var defaultGifOutputSize = new Size(480, -1);