From a801afc40ea4caeeeaa215183fddcb6a6b4b4cba Mon Sep 17 00:00:00 2001 From: Max Holland Date: Thu, 20 Feb 2025 14:25:06 +0000 Subject: [PATCH] Test write first seg to disk --- server/ai_live_video.go | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/server/ai_live_video.go b/server/ai_live_video.go index 22267728b..d1a196ede 100644 --- a/server/ai_live_video.go +++ b/server/ai_live_video.go @@ -215,7 +215,7 @@ func startTrickleSubscribe(ctx context.Context, url *url.URL, params aiRequestPa seq := trickle.GetSeq(segment) clog.V(8).Infof(ctx, "trickle subscribe read data received seq=%d", seq) - n, err := copySegment(segment, multiWriter) + n, err := copySegment(segment, multiWriter, firstSegment) if err != nil { params.liveParams.stopPipeline(fmt.Errorf("trickle subscribe error copying: %w", err)) return @@ -274,9 +274,19 @@ func ffmpegOutput(ctx context.Context, outputUrl string, r io.ReadCloser, params } } -func copySegment(segment *http.Response, w io.Writer) (int64, error) { +func copySegment(segment *http.Response, w io.Writer, first bool) (int64, error) { defer segment.Body.Close() - return io.Copy(w, segment.Body) + var r io.Reader = segment.Body + if first { + outputfile, err := os.Create("/tmp/firstseg.ts") + if err != nil { + clog.Errorf(context.Background(), "Error creating first segment file: %v", err) + } else { + r = io.TeeReader(segment.Body, outputfile) + } + } + + return io.Copy(w, r) } func startControlPublish(control *url.URL, params aiRequestParams) {