> ## Documentation Index
> Fetch the complete documentation index at: https://docs.dwe.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# dweOS (H.264 RTP sobre UDP) a OpenCV

> Un proyecto inicial ligero y multiplataforma para recibir video codificado en H.264 mediante paquetes RTP/UDP en bruto y decodificarlos en cuadros compatibles con OpenCV.

<Card title="Repositorio de guías de OpenCV" icon="github" href="https://github.com/DeepwaterExploration/opencv-guides">
  Consulta el código fuente completo y los proyectos de ejemplo para las cámaras DWE.ai en GitHub.
</Card>

## Características

* **RTP/UDP en bruto**: no requiere GStreamer ni dependencias externas.
* **Alta resolución**: optimizado para flujos 1080p a 30 fps o más.
* **Soporte de 10 bits**: maneja YUV 4:4:4 de 10 bits (`yuv444p10le`) y formatos estándar de 8 bits.
* **Baja latencia**: utiliza un hilo receptor en segundo plano y decodificación multihilo.
* **Diseño modular**: separa la gestión de red, la decodificación y la lógica de visualización.

## Requisitos previos

* **Python 3.8+**
* **Bibliotecas FFmpeg** (normalmente instaladas automáticamente mediante PyAV)

## Instalación

Navega al directorio `3-receive-dweos-h264/python` en el repositorio y configura tu entorno:

1. Crea un entorno virtual:
   ```bash theme={null}
   python3 -m venv venv
   source venv/bin/activate  # En Windows: venv\Scripts\activate
   ```

2. Instala las dependencias requeridas:
   ```bash theme={null}
   pip install -r requirements.txt
   ```

## Uso

1. Inicia tu flujo RTP H.264 (por defecto en `127.0.0.1:5600`).
2. Ejecuta el receptor:
   ```bash theme={null}
   python main.py
   ```

## Estructura del proyecto

* **`rtp_receiver.py`**: gestiona la recepción de paquetes UDP en bruto y el reensamblaje de NAL H.264 (incluyendo FU-A y STAP-A).
* **`h264_decoder.py`**: encapsula PyAV para una decodificación H.264 de alto rendimiento.
* **`main.py`**: punto de entrada principal que conecta el receptor y el decodificador a una ventana OpenCV.
