|
|
@ -340,12 +340,18 @@ public class InternalController : ControllerBase |
|
|
|
linkedCts.Token); |
|
|
|
linkedCts.Token); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
_ = processWithPipe |
|
|
|
var task = processWithPipe |
|
|
|
.WithStandardOutputPipe(PipeTarget.ToStream(pipe.Writer.AsStream())) |
|
|
|
.WithStandardOutputPipe(PipeTarget.ToStream(pipe.Writer.AsStream())) |
|
|
|
.WithStandardErrorPipe(PipeTarget.ToStringBuilder(stdErrBuffer)) |
|
|
|
.WithStandardErrorPipe(PipeTarget.ToStringBuilder(stdErrBuffer)) |
|
|
|
.WithValidation(CommandResultValidation.None) |
|
|
|
.WithValidation(CommandResultValidation.None) |
|
|
|
.ExecuteAsync(linkedCts.Token); |
|
|
|
.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 |
|
|
|
var contentType = mode switch |
|
|
|
{ |
|
|
|
{ |
|
|
|
"segmenter-v2" => "video/x-matroska", |
|
|
|
"segmenter-v2" => "video/x-matroska", |
|
|
|