> For the complete documentation index, see [llms.txt](https://docs.augelab.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.augelab.com/german/funktionsblocke/blocks-reference/input-output/image-inputs/stream-reader.md).

# Stream Reader

Dieser Funktionsblock spielt Netzwerkstreams (YouTube, Twitch, HTTP/RTSP und ähnliche) im Hintergrund ab und hält das jeweils neueste Frame bereit, damit andere Blöcke es verwenden können. Er ist für kontinuierliche Stream-Vorschauen und nachgelagerte Verarbeitung ausgelegt und bietet Steuerungen für Wiedergabegeschwindigkeit, gewünschte Qualität und Begrenzung der Bildrate.

## 📥 Eingänge <a href="#inputs" id="inputs"></a>

Dieser Funktionsblock hat keine Eingänge.

## 📤 Ausgänge <a href="#outputs" id="outputs"></a>

`Image Any`\
Das jeweils zuletzt aus der konfigurierten Quelle abgerufene Frame (wird aktualisiert, während der Stream läuft).

## 🕹️ Steuerungen <a href="#controls" id="controls"></a>

`Status`\
Zeigt den aktuellen Zustand und hilfreiche Meldungen an (z. B. waiting, connecting, live, paused, reconnecting).

`Stream URL`\
Geben Sie die Stream-Adresse oder den Link ein, den Sie abspielen möchten (Beispiele: öffentliche Live-Links, HTTP-Livestreams oder Anbieterlinks).

`Playback speed`\
Passt die Wiedergabegeschwindigkeit an (im UI angezeigter Bereich). Verwenden Sie Werte unter 1.0 für Zeitlupe oder über 1.0 für schnellere Wiedergabe.

`Preferred quality`\
Fordert eine bevorzugte Stream-Qualität an, wenn mehrere Renditionen verfügbar sind (z. B. Best, 1080p, 720p).

`FPS limit`\
Begrenzt die ausgehende Bildrate, die dieser Block erzeugt. Auf 0 setzen, um die native Bildrate der Quelle zu verwenden.

`Pause playback`\
Ein/Aus-Schalter zum Pausieren/Fortsetzen des Streams, ohne die Verbindung zu schließen.

## 🎨 Funktionen <a href="#features" id="features"></a>

* Hintergrund-Streaming: Spielt entfernte Streams in einem Hintergrundprozess ab, sodass die UI reaktionsfähig bleibt und das neueste Frame verfügbar gehalten wird.
* Robuste Verbindungsbehandlung: Zeigt klare Statusmeldungen (connecting, live, paused, reconnecting) und versucht, vorübergehende Fehler zu beheben.
* Wiedergabesteuerung: Steuerung der Wiedergabegeschwindigkeit und Anforderung einer bestimmten Rendition, sofern verfügbar.
* Begrenzung der Bildrate: Reduziert die Last downstream, indem die FPS begrenzt werden.
* Optionales Remote-Frame-Upload: Bei Konfiguration können erfasste Frames an einen Remote-Uploader für Speicherung oder Protokollierung gesendet werden.
* Pausieren ohne Verlust des letzten Frames: Beim Pausieren bleibt das letzte Frame zur Inspektion oder Verarbeitung erhalten.

## 📝 Nutzungshinweise <a href="#usage" id="usage"></a>

1. Geben Sie einen Streaming-Link in `Stream URL` ein.
2. Passen Sie `Preferred quality` an, wenn Sie eine bestimmte Rendition wünschen.
3. Stellen Sie `Playback speed` und `FPS limit` ein, um zu steuern, wie der Stream an nachgelagerte Blöcke geliefert wird.
4. Verwenden Sie `Pause playback`, um Frame-Updates vorübergehend anzuhalten, während die Verbindung bestehen bleibt.
5. Verbinden Sie den Ausgang dieses Blocks `Image Any` mit Visualisierungs- oder Verarbeitungsblöcken, um Live-Frames zu konsumieren.

## 📊 Bewertung <a href="#evaluation" id="evaluation"></a>

Wenn aktiv, holt dieser Funktionsblock kontinuierlich Frames aus dem konfigurierten Stream und liefert das aktuellste Frame über den Ausgang `Image Any`. Die Statusmeldungen werden aktualisiert, um den Verbindungszustand widerzuspiegeln. Bei Pausierung stoppen die Frame-Updates, das letzte Frame bleibt jedoch verfügbar.

## 💡 Tipps und Tricks <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* Um den Live-Stream interaktiv zu betrachten, verbinden Sie den Ausgang `Image Any` mit dem `Show Image`-Block, damit Sie den Image Viewer öffnen und Frames inspizieren können.
* Reduzieren Sie CPU-/GPU-Last, indem Sie `Image Any` vor rechenintensiven KI-Blöcken (z. B. `Object Detection (D-FINE)`, `Mask Detection`, `Pose Estimation`) an einen `Image Resizer`-Block anschließen.
* Für Langzeitaufnahmen oder Debugging leiten Sie den Ausgang an `Record Video`, `Image Logger` oder `Image Write` weiter.
* Verwenden Sie `Background Subtractor` auf dem Stream-Output, um Bewegung zu erkennen oder Vordergrundregionen für nachgelagerte Detektoren (z. B. `Object Detection - Custom`) zu extrahieren.
* Wenn Sie sich auf einen bestimmten Bereich der Szene konzentrieren müssen, nutzen Sie `Image ROI`, `Image ROI Select` oder `Image ROI Polygon` vor Erkennungs- oder Messblöcken (wie `Find Object` oder `Histogram On Line`).
* Kombinieren Sie mit `Object_Detection_Tracker` und `Draw Detections`, um erkannte Objekte über Frames hinweg zu verfolgen und zu visualisieren.
* Für OCR in Live-Streams verbinden Sie den Ausgang nach geeigneter Beschneidung (`Image ROI Select`) und Bildverbesserung (`Contrast Optimization` oder `Denoising`) mit `OCR` oder `OCR (EasyOCR)`.
* Wenn die Stream-Quelle groß oder instabil ist, versuchen Sie, die `FPS limit` zu senken oder die `Preferred quality` zu reduzieren, um die Stabilität zu verbessern und Bandbreite zu sparen.

## 🛠️ Fehlersuche <a href="#troubleshooting" id="troubleshooting"></a>

* Wenn der Status "Waiting for stream link" anzeigt, stellen Sie sicher, dass `Stream URL` eine vollständige URL einschließlich Schema enthält (z. B. `http://`, `https://`, `rtsp://`).
* Wenn die Verbindung fehlschlägt oder häufig neu verbindet, versuchen Sie, die angeforderte Qualität zu verringern oder das FPS-Limit zu reduzieren, um Bandbreite und Verarbeitungslast zu senken.
* Wenn Frames nicht mehr aktualisiert werden, obwohl der Status "live" anzeigt, schalten Sie `Pause playback` aus und wieder ein, um eine Aktualisierung zu erzwingen.
* Um Verbindungsfehler zu debuggen, überwachen Sie das `Status`-Label des Blocks auf Texthinweise zum Verbindungsfortschritt oder Fehlern.
