AlexxIT/go2rtc · error

streams: stream not found

Error message

streams: stream not found: %s

What it means

AddPreload guard: streams.Get(name) returned nil, so the stream named in the preload config (name interpolated) does not exist — a preload can only attach a probe consumer to an already-created stream, it never creates one. Fired from config preload at startup or via the API.

Solutions

  1. Fix the preload name to match a configured stream
  2. Ensure the stream is created (config sources) before preload runs
  3. Create the stream first via the API, then call AddPreload
Defensive patterns

Strategy: validation

When it happens

Trigger: Thrown at internal/streams/preload.go:40 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of AlexxIT/go2rtc@c245815e75 (2026-09-07). Data as JSON: /api/errors/d46efc132f632d44. Report an issue: GitHub.

Appendix: source

Thrown at internal/streams/preload.go:40

	if rawQuery == "" {
		rawQuery = "video&audio"
	}

	query, err := url.ParseQuery(rawQuery)
	if err != nil {
		return err
	}

	preloadsMu.Lock()
	defer preloadsMu.Unlock()

	if p := preloads[name]; p != nil {
		p.stream.RemoveConsumer(p.Cons)
	}

	stream := Get(name)
	if stream == nil {
		return fmt.Errorf("streams: stream not found: %s", name)
	}
	cons := probe.Create("preload", query)

	if err = stream.AddConsumer(cons); err != nil {
		return err
	}

	preloads[name] = &Preload{stream: stream, Cons: cons, Query: rawQuery}
	return nil
}

func DelPreload(name string) error {
	preloadsMu.Lock()
	defer preloadsMu.Unlock()

	if p := preloads[name]; p != nil {
		p.stream.RemoveConsumer(p.Cons)
		delete(preloads, name)

View on GitHub (pinned to c245815e75)