From b713eb82e61463c61c9531cb9944c121e54a4d97 Mon Sep 17 00:00:00 2001 From: luki Date: Mon, 23 Mar 2026 15:58:42 +0100 Subject: [PATCH] multi video --- internal/streams/streams.go | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/internal/streams/streams.go b/internal/streams/streams.go index f3b8df03c..b18fdfb43 100644 --- a/internal/streams/streams.go +++ b/internal/streams/streams.go @@ -116,12 +116,26 @@ func Patch(name string, source string) (*Stream, error) { } func GetOrPatch(query url.Values) (*Stream, error) { - // check if src param exists - source := query.Get("src") - if source == "" { + sources := query["src"] + if len(sources) == 0 { return nil, errors.New("streams: source empty") } + // multi-source: create stream with multiple producers + if len(sources) > 1 { + name := query.Get("name") + if name == "" { + name = sources[0] + } + if stream := Get(name); stream != nil { + return stream, nil + } + log.Info().Msgf("[streams] create new multi-source stream name=%s sources=%d", name, len(sources)) + return New(name, sources...) + } + + source := sources[0] + // check if src is stream name if stream := Get(source); stream != nil { return stream, nil