> 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/play-folder.md).

# Play Folder

Esta función reproduce imágenes desde una carpeta seleccionada, devolviendo un archivo por evaluación. Úsala para recorrer conjuntos de imágenes paso a paso, previsualizar secuencias o alimentar imágenes a procesos posteriores. Puedes elegir una carpeta por defecto con el botón de selección de carpeta, sobrescribirla mediante la entrada `Folder Path`, filtrar archivos con un patrón glob y controlar la reproducción con las opciones `Mode` y `Order`.

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

`Folder Path` Entrada de tipo string (opcional) que sobrescribe la carpeta por defecto seleccionada con el botón. Proporciona una ruta completa de carpeta para cambiar la fuente en tiempo de ejecución.

`Restart` Entrada booleana opcional. Cuando es True, el bloque reinicia la reproducción según el `Mode` actual y devuelve la imagen de borde reiniciada en esa evaluación.

Notas: Estos son sockets de entrada.

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

`Image` La imagen actual leída desde la carpeta. Este es un socket de salida de imagen.

`File Path` Ruta absoluta del archivo de imagen actual. Este es un socket de salida de tipo string.

`Restarted` Booleano que es True cuando el bloque devolvió en esta evaluación una imagen de borde envuelta o reiniciada. Este es un socket de salida.

Notas: Estos son sockets de salida.

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

`Select folder` Botón para elegir la carpeta por defecto usada cuando `Folder Path` está vacío.

`Glob pattern` Campo de texto para filtrar archivos usando la sintaxis glob de Python (ejemplos: `*`, `*.png`, `**/*`).

`Mode` Menú desplegable para controlar la dirección de reproducción: `Forward`, `Backward` o `Stop`.

`Order` Menú desplegable para seleccionar el orden de los archivos: `Name` (orden natural por nombre de archivo) o `Time` (por fecha de modificación).

Notas: Estos son widgets visibles que afectan cómo el bloque selecciona y devuelve archivos.

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

* Gestión de lista de reproducción: construye y cachea una lista de archivos de imagen que coinciden con la carpeta elegida, el patrón glob y el orden.
* Reproducción flexible: soporta modos forward, backward y stop con comportamiento de envoltura (wrap-around).
* Sobrescritura de carpeta: permite sobrescribir en tiempo de ejecución vía la entrada `Folder Path` sin cambiar la carpeta por defecto guardada.
* Manejo de reinicio: la entrada explícita `Restart` reinicia la reproducción y devuelve la imagen de borde en esa evaluación.
* Salida de metadatos de archivo: devuelve la ruta absoluta para facilitar el registro o el procesamiento posterior.
* Subida asíncrona opcional de frames: si está disponible, los fotogramas pueden subirse en segundo plano para registro remoto.

## ⚙️ Mecanismo de ejecución <a href="#running-mechanism" id="running-mechanism"></a>

En cada evaluación, el bloque determina la carpeta efectiva (por defecto o sobrescrita), comprueba el patrón glob y el orden, y actualiza su lista interna de reproducción cuando es necesario. Lleva un índice actual y devuelve la imagen en ese índice junto con su ruta de archivo y la bandera `Restarted`. Tras devolver la imagen actual, el bloque prepara el índice siguiente según el `Mode` seleccionado (forward/backward/stop), envolviéndose al inicio o al final cuando sea necesario.

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

1. Haz clic en el botón `Select folder` para elegir una carpeta por defecto, o déjalo vacío y proporciona una ruta en tiempo de ejecución mediante la entrada `Folder Path`.
2. Introduce un `Glob pattern` para filtrar archivos (usa `*` para todo o `*.jpg` / `**/*.png` para tipos específicos).
3. Elige `Mode` para avanzar, retroceder o mantener la imagen actual entre evaluaciones.
4. Selecciona `Order` para ordenar archivos por nombre o por fecha de modificación.
5. Opcionalmente envía `Restart` = True para reiniciar la reproducción hacia la imagen de borde correspondiente al modo actual.

## 💡 Consejos y trucos <a href="#tips-and-tricks" id="tips-and-tricks"></a>

* Previsualiza imágenes en una ventana más grande enviando la salida `Image` al bloque `Show Image` para verlas interactivamente mientras avanzas por la carpeta.
* Guarda fotogramas interesantes usando `Image Write` o exporta por lotes ejemplos con `Image Logger` conectado a la salida `Image`.
* Si las imágenes son demasiado grandes para bloques de IA posteriores, conecta `Image Resize` o `Image Resizer` después de la salida `Image` para reducir el tiempo de procesamiento.
* Para centrarte en un área específica de cada imagen antes del análisis, añade `Image ROI Select` (o `Image ROI`) tras este bloque y alimenta el recorte a detectores como `Find Object` o `Mask Detection`.
* Para informes visuales o vistas combinadas, recoge varios fotogramas y pásalos a `Collage Images` o `Image Concatenate`.
* Al construir flujos basados en datasets, usa la salida `File Path` para crear registros o CSV junto a los datos de imagen mediante bloques de exportación de datos.

(pista: combina únicamente con los function blocks listados disponibles en el entorno.)

## 🛠️ Solución de problemas <a href="#troubleshooting" id="troubleshooting"></a>

* No se encontraron archivos: Comprueba que la carpeta seleccionada contiene extensiones de imagen soportadas y que el `Glob pattern` coincide con tus nombres de archivo.
* Sobrescritura de carpeta inválida: Asegura que la entrada `Folder Path` sea una cadena no vacía y apunte a un directorio existente.
* Orden inesperado: Usa `Order` = `Time` para ordenar por marca de tiempo de modificación; usa `Name` para un orden predecible por nombre de archivo (el orden natural maneja partes numéricas).
* Reproducción que no avanza: Verifica que la configuración de `Mode` no esté en `Stop` y que el bloque reciba evaluaciones (algunos modos de ejecución solo corren cuando el escenario se ejecuta).
