Commit: 95e7269
Parent: 4617e6d

Speed up ffmpeg commands

Mårten Åsberg committed on 2026-05-09 at 17:24
By seeking on input instead of output.

Should have done that from the start!
src/Infrastructure/Ffmpeg/ClipExtractor.cs +2 -6
diff --git a/src/Infrastructure/Ffmpeg/ClipExtractor.cs b/src/Infrastructure/Ffmpeg/ClipExtractor.cs
index 93400ce..d587da8 100644
@@ -37,13 +37,11 @@ internal sealed partial class ClipExtractor(ILogger<ClipExtractor> logger) : ICl
{
var crops = new Dictionary<Rectangle, int>();
var args = FFMpegArguments
.FromFileInput(media.Path)
.FromFileInput(media.Path, addArguments: options => options.Seek(start).EndSeek(start + duration))
.OutputToFile(
"-",
addArguments: options =>
options
.Seek(start)
.EndSeek(start + duration)
.WithVideoFilters(filter =>
filter
.Add("zscale", "t=linear:npl=100")
@@ -88,13 +86,11 @@ internal sealed partial class ClipExtractor(ILogger<ClipExtractor> logger) : ICl
{
var subtitleOptions = await CreateSubtitleOptions(media, cancellationToken);
var args = FFMpegArguments
.FromFileInput(media.Path)
.FromFileInput(media.Path, addArguments: options => options.Seek(start).EndSeek(start + duration))
.OutputToFile(
outputPath,
addArguments: options =>
options
.Seek(start)
.EndSeek(start + duration)
.WithVideoFilters(filter =>
{
if (crop is { Width: var width, Height: var height, X: var x, Y: var y })