> 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/spanish/function-blocks/blocks-reference/input-output/image-inputs/stream-reader.md).

# Stream Reader

Este bloque de función reproduce transmisiones de red (YouTube, Twitch, HTTP/RTSP y similares) en segundo plano y mantiene el último fotograma listo para que otros bloques lo consuman. Está diseñado para previsualización continua de streams y procesamiento posterior, con controles para la velocidad de reproducción, la calidad solicitada y la limitación de fotogramas por segundo.

## 📥 Entradas <a href="#inputs" id="inputs"></a>

Este bloque de función no tiene entradas.

## 📤 Salidas <a href="#outputs" id="outputs"></a>

`Image Any`\
El último fotograma obtenido desde la fuente de streaming proporcionada (se va actualizando a medida que se reproduce la transmisión).

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

`Status`\
Muestra el estado actual y mensajes útiles (por ejemplo: waiting, connecting, live, paused, reconnecting).

`Stream URL`\
Introduce la dirección o enlace del stream que deseas reproducir (ejemplos: enlaces públicos en directo, livestreams HTTP o enlaces de proveedores).

`Playback speed`\
Ajusta la velocidad de reproducción (rango mostrado en la interfaz). Usa valores por debajo de 1.0 para cámara lenta o por encima de 1.0 para reproducción más rápida.

`Preferred quality`\
Solicita una calidad preferida cuando hay múltiples rendiciones disponibles (por ejemplo: Best, 1080p, 720p).

`FPS limit`\
Limita la tasa de fotogramas de salida producida por este bloque. Pon 0 para usar la tasa de fotogramas nativa de la fuente.

`Pause playback`\
Activa/desactiva para pausar/reanudar el stream sin cerrar la conexión.

## 🎨 Características <a href="#features" id="features"></a>

* Reproducción en segundo plano: reproduce streams remotos en un proceso en background para que la UI siga siendo responsiva mientras mantiene disponible el último fotograma.
* Manejo robusto de conexión: muestra mensajes de estado claros (connecting, live, paused, reconnecting) e intenta recuperarse de errores transitorios.
* Control de reproducción: permite controlar la velocidad de reproducción y solicitar una rendición específica cuando esté disponible.
* Limitación de FPS: reduce la carga downstream limitando los fotogramas por segundo.
* Subida remota opcional de fotogramas: cuando se configura, los fotogramas capturados pueden enviarse a un uploader remoto para almacenamiento o registro.
* Pausar sin perder el último fotograma: al pausar, el último fotograma permanece disponible para inspección o procesamiento.

## 📝 Instrucciones de uso <a href="#usage" id="usage"></a>

1. Introduce un enlace de streaming en `Stream URL`.
2. Ajusta `Preferred quality` si quieres una rendición específica.
3. Configura `Playback speed` y `FPS limit` para controlar cómo se entrega el stream a los bloques posteriores.
4. Usa `Pause playback` para detener temporalmente las actualizaciones de fotogramas sin cerrar la conexión.
5. Conecta la salida `Image Any` de este bloque a bloques de visualización o procesamiento para consumir fotogramas en vivo.

## 📊 Evaluación <a href="#evaluation" id="evaluation"></a>

Cuando está activo, este bloque de función obtiene continuamente fotogramas desde el stream configurado y proporciona el fotograma más reciente a través de la salida `Image Any`. Los mensajes de estado se actualizan para reflejar el estado de la conexión. Si está en pausa, las actualizaciones de fotogramas se detienen, pero el último fotograma sigue disponible.

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

* Para previsualizar el stream en vivo de forma interactiva, conecta la salida `Image Any` al bloque `Show Image` para abrir el visor de imágenes e inspeccionar fotogramas.
* Reduce la carga de CPU/GPU conectando `Image Any` a un bloque `Image Resizer` antes de bloques pesados de IA como `Object Detection (D-FINE)`, `Mask Detection`, `Pose Estimation`.
* Para grabaciones a largo plazo o depuración, deriva la salida a `Record Video`, `Image Logger` o `Image Write`.
* Usa `Background Subtractor` sobre la salida del stream para detectar movimiento o extraer regiones de primer plano para detectores posteriores (por ejemplo, `Object Detection - Custom`).
* Si necesitas centrarte en un área específica de la escena, utiliza `Image ROI`, `Image ROI Select` o `Image ROI Polygon` antes de los bloques de detección o medición (como `Find Object` o `Histogram On Line`).
* Combínalo con `Object_Detection_Tracker` y `Draw Detections` para rastrear y visualizar objetos detectados a través de los fotogramas del stream.
* Para OCR en streams en vivo, conecta la salida a `OCR` o `OCR (EasyOCR)` después de aplicar un recorte adecuado (`Image ROI Select`) y mejoras de imagen (`Contrast Optimization` o `Denoising`).
* Si la fuente del stream es grande o inestable, prueba a bajar `FPS limit` o reducir `Preferred quality` para mejorar la estabilidad y disminuir el uso de ancho de banda.

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

* Si el estado muestra "Waiting for stream link", asegúrate de que `Stream URL` sea una URL completa que incluya el esquema (por ejemplo, `http://`, `https://`, `rtsp://`).
* Si la conexión falla o se reconecta con frecuencia, intenta bajar la calidad solicitada o reducir el límite de FPS para aliviar el ancho de banda y el procesamiento.
* Si los fotogramas dejan de actualizarse mientras el estado indica live, alterna `Pause playback` apagándolo y encendiéndolo para forzar una actualización.
* Si necesitas depurar mensajes de conexión, observa la etiqueta `Status` del bloque para pistas textuales sobre el progreso de la conexión o errores.
