DECISIÓN

Matriz de Arquitecturas

CSI / USB × Fase × Tor × RAM
¿Qué arquitectura elegir para el Solar Net Hub?
web-rtc.md §2.2 · web-rtc-ext.md EXT-7
TL;DR — ¿Acceso remoto o Tor? → Arq. 3 (Mumble + go2rtc). ¿Solo LAN, RAM mínima? → Arq. 6 (µStreamer + Mumble). ¿Simplicidad sin Tor audio? → Arq. 1 (go2rtc solo). Las 6 arquitecturas tienen poster con specs detalladas.

☞ 6 Arquitecturas — Vista Rápida

Arq. 1 Arq. 2 Arq. 3 ★★ Arq. 4 Arq. 5 Arq. 6 ★
Stack go2rtc integral MediaMTX + rpicam Mumble + go2rtc + datachannel ffmpeg → HLS RPi-WebRTC nativo µStreamer + Mumble
RAM nueva ~20-40 MB ~15-30 MB ~65 MB (+20 nuevos) ~30 MB ~80-100 MB ~10-20 MB
Cam CSI ✔ zero-copy✔ nativo✔ M2M HW
Cam USB ⚠️ ffmpeg
Audio Tor ⚠️ TURN⚠️ TURN✔ Mumble TCP✔ HTTP⚠️ TURN✔ Mumble TCP
Bidireccional ✔ WHEP✔ WebRTC✔ Mumble✔ P2P✔ Mumble
0 JS browser ✔ vía proxy
Complejidad BajaMediaMediaMínimaAltaBaja
Spec ☞ POSTER ☞ POSTER ☞ POSTER ☞ POSTER ☞ POSTER ☞ POSTER
6Arquitecturas
2Elegidas (★)
1 GBRAM total
22WSolar
CSI+USBCámaras

☞ Árbol de Decisión

 ¿Qué cámara tengo / quiero?
 ════════════════════════════

 ¿Tengo cámara CSI en RPi?
   SÍ → ¿Quiero máxima eficiencia HW encode?
          SÍ → MediaMTX (zero-copy)          → Arq. 2
               o RPi-WebRTC (si P2P nativo)  → Arq. 5
          NO → go2rtc (CSI vía v4l2, simple) → Arq. 1
               o µStreamer (MJPEG + RAM mín.) → Arq. 6 ★

 ¿Tengo cámara USB?
   SÍ → ¿Webcam con H.264 HW integrado?
          SÍ → go2rtc v4l2 (passthrough)     → Arq. 1
          NO → go2rtc v4l2 (MJPEG)           → Arq. 1
               o µStreamer v4l2 (solo MJPEG)  → Arq. 6 ★
        RPi-WebRTC DESCARTADO (no soporta USB)
        MediaMTX requiere ffmpeg → menos ventaja

 ¿Podría tener ambas o cambiar en el futuro?
   SÍ → go2rtc + hardware_detect.js    (Arq. 1)
        o µStreamer + hardware_detect.js (Arq. 6)

 ¿Necesito audio sobre Tor?
   SÍ → Mumble (invariante de CSI/USB)
        + go2rtc (si HLS remoto)             → Arq. 3 ★★
        + µStreamer (si solo MJPEG LAN)       → Arq. 6 ★

 ¿Solo LAN, RAM mínima, pipeline simple?
   SÍ → µStreamer + Mumble                   → Arq. 6 ★
★★ Mumble es agnóstico de cámara. El audio no depende de CSI/USB. ★★

Seleccion por Contexto

ContextoArq.Condicion principal
LAN + remoto + Tor Arq. 3 Siempre válida. CSI+USB. Tor. Audio superior. HLS remoto
Solo LAN + RAM critica Arq. 6 Solo LAN / RAM crítica. CSI+USB. MJPEG only. La más ligera
General sin Tor audio Arq. 1 Sin Tor para audio. Simplicidad máxima, un solo binario
CSI fija + mW critico Arq. 2 Solo CSI fija. Cada mW cuenta. No se prevé USB
P2P real sin Tor (CSI) Arq. 5 Solo CSI. WebRTC P2P real. No Tor. Riesgo mantenimiento
Baseline minima Arq. 4 Mínima. ffmpeg→HLS. 4-12s latencia. Escribe a microSD
¿Por qué Arq. 3 y 6? — Son las únicas que reutilizan Mumble (ya instalado, +0 MB, compatible Tor). Las demás requieren instalar audio nuevo o renunciar a Tor.

Cámara × Fase × Arq.

CamFase 1 (LAN)Fase 3 (Internet)Fase 3 + Tor
CSI Arq. 6 (µS)
Arq. 1 (go2rtc)
Arq. 2 (MTX)
Arq. 3 (Mumble+HLS)
Arq. 5 (P2P)
Arq. 3
USB Arq. 6 (µS)
Arq. 1 (go2rtc)
Arq. 3 (Mumble+HLS) Arq. 3
USB H.264 Arq. 1 (pass) Arq. 3 Arq. 3
Ambas Arq. 6 o 1
+ hw_detect
Arq. 3 + detect Arq. 3
Fase 3 + Tor: SIEMPRE Arq. 3. Mumble TCP tunnel es la única vía de audio que funciona sobre hidden services sin TURN.

☞ Las 2 Elegidas — Detalle Rápido

Arq. 3 — Mumble + go2rtc + datachannel
General purpose · LAN + Remoto + Tor · ~65 MB RAM
Vídeo: go2rtc (MJPEG + HLS) · Audio: murmurd (bridge HTTP 3A + cliente nativo 3C)
Datos: node-datachannel (SDP via SSB)

Ventaja decisiva: audio sobre Tor vía TCP tunnel nativo de Mumble.
Cuándo: siempre que haya posibilidad de acceso remoto o Tor.

☞ VER POSTER COMPLETO
Arq. 6 — µStreamer + Mumble + datachannel
Ultra-ligera · Solo LAN · ~10-20 MB RAM · MJPEG only
Vídeo: µStreamer (V4L2 → MJPEG HTTP) · Audio: murmurd (bridge HTTP 3A)
Datos: node-datachannel (SDP via SSB)

Ventaja decisiva: RAM mínima, CPU mínima, pipeline simple.
Cuándo: solo LAN, no necesita HLS/WebRTC remoto.

☞ VER POSTER COMPLETO

¿Por Qué No las Otras?

Arq.Descarte / Condición
1 · go2rtc Excelente si no se necesita Tor para audio. Pero audio vía WHEP/WebRTC no funciona sobre hidden services. Sin Mumble, pierde la ventaja de privacidad de Arq. 3.
2 · MediaMTX Zero-copy CSI es atractivo para ahorrar mW pero no soporta USB sin ffmpeg intermedio. Pierde flexibilidad. Solo justificable si la cámara CSI es fija y permanente.
4 · ffmpeg→HLS Latencia 4-12s inaceptable para comunicación. Escribe segmentos .ts a microSD constantemente. No bidireccional. Solo útil como fallback de emergencia.
5 · RPi-WebRTC Solo CSI (hard requirement). Mantenimiento irregular del proyecto upstream. ~80-100 MB RAM. Si se necesita P2P WebRTC real con CSI fija y sin Tor, es una opción nicho.

Comparativa Detallada — Arq. 1 vs 3 vs 6

Arq. 1 (go2rtc)Arq. 3 (Mumble hybrid) ★★Arq. 6 (µStreamer) ★
RAM adicional~20-40 MB~65 MB (~20 nuevos)~10-20 MB
CPU streaming~10-15%~12-20%~3-8% (M2M HW)
Latencia vídeo100-300 ms100-300 ms (MJPEG)~50-100 ms (MJPEG)
Latencia audio200 ms (OGG) / 2 s (HLS)~200 ms (bridge) / ~20 ms (nativo)~200 ms (bridge)
Necesita ffmpegNoSolo audio bridgeSolo audio bridge
Audio Tor⚠️ TURN✔ Mumble TCP✔ Mumble TCP
Protocolos vídeoMJPEG + HLS + WHEPMJPEG + HLS (go2rtc)MJPEG only
Reutiliza murmurd✔ (+0 MB)✔ (+0 MB)
Código audio nuevo~50 lín config~100 lín bridge~100 lín bridge
Mantenimiento depsBajoMedio (gumble+go2rtc)Bajo
Caso de usoSimple, sin TorGeneral, LAN+Remoto+TorUltra-ligero, solo LAN

Contexto del Device

DeviceRPi 3B · BCM2837 · 1 GB LPDDR2 · VideoCore IV
OS stackYocto Poky 4.3.4 → Docker → Debian Bookworm
EnergíaSolar 22W
AppOasis :3000 (Node.js / SSB) · cero JS en browser
Audio basemurmurd :64738 (Mumble) · ya instalado · +0 MB
RestricciónCero JavaScript en el browser del SNH servido por Oasis
go2rtc µStreamer Mumble MediaMTX RPi-WebRTC HLS MJPEG Tor WHEP CSI USB node-datachannel gumble