diff --git a/ErsatzTV/Controllers/InternalController.cs b/ErsatzTV/Controllers/InternalController.cs index 68824a11..a252cab0 100644 --- a/ErsatzTV/Controllers/InternalController.cs +++ b/ErsatzTV/Controllers/InternalController.cs @@ -340,12 +340,18 @@ public class InternalController : ControllerBase linkedCts.Token); } - _ = processWithPipe + var task = processWithPipe .WithStandardOutputPipe(PipeTarget.ToStream(pipe.Writer.AsStream())) .WithStandardErrorPipe(PipeTarget.ToStringBuilder(stdErrBuffer)) .WithValidation(CommandResultValidation.None) .ExecuteAsync(linkedCts.Token); + // ensure pipe writer is completed when ffmpeg exits + _ = task.Task.ContinueWith( + (_, state) => ((PipeWriter)state!).Complete(), + pipe.Writer, + TaskScheduler.Default); + var contentType = mode switch { "segmenter-v2" => "video/x-matroska",