Pipeline Completo
MIC (ALSA) BROWSER (sin JS)
│ ▲
▼ │
┌──────────┐ Opus ┌────────────┐ OGG/HTTP ┌───┴──────┐
│ murmurd │◀═══════════▷│ gumble bot │────────────▷│ <audio> │
│ :64738 │ (Mumble │ ↓ PCM │ chunked │ autoplay │
│ │ protocol) │ ffmpeg │ transfer │ │
└──────────┘ └────────────┘ └──────────┘
│
Oasis :3000
GET /audio
Implementación del Bridge (Estrategia 3A)
Recomendada: gumble (Go) → ffmpeg pipe
mumble-audio-bridge --server localhost:64738 --channel "WebRTC" \
| ffmpeg -f s16le -ar 48000 -ac 1 -i pipe:0 \
-c:a libopus -application voip -b:a 32k \
-f ogg pipe:1 \
| serve-as-http --port 3001 --content-type "audio/ogg"
gumble (Go, github.com/layeh/gumble) se compila como binario estático ARM64 (~5 MB). Conecta a murmurd, captura el audio mezclado del canal, y lo escribe a stdout como PCM raw. No necesita runtime.
Oasis route (/audio)
app.get('/audio', (req, res) => {
res.writeHead(200, {
'Content-Type': 'audio/ogg',
'Transfer-Encoding': 'chunked',
'Cache-Control': 'no-store'
});
bridge.stdout.pipe(res);
req.on('close', () => bridge.stdout.unpipe(res));
});
Alternativa legacy: Node.js mumble-client
const mumble = require('mumble');
mumble.connect('mumble://127.0.0.1:64738', (err, conn) => {
conn.authenticate('oasis-bridge');
conn.on('voice', (pcmBuffer) => { /* ... */ });
});
⚠️ ffmpeg NO tiene handler nativo mumble:// — el comando ffmpeg -i mumble://... NO funciona sin compilación custom. El pipeline correcto es: bot gumble → stdout PCM → pipe a ffmpeg.
Legitimidad: ¿Es Válido Usar murmurd con un Bot?
Sí. murmurd como bus de audio con un bot bridge es un patrón establecido, no un hack. El protocolo Mumble no distingue entre un cliente humano y un bot — esto es by design.
| Precedente | Descripción |
| MumbleDJ | Bot Go que inyecta audio (música) en canales Mumble |
| piepan | Framework Lua para scripting de bots Mumble |
| barnard | Cliente Mumble CLI en Go (usa gumble) |
murmurd ofrece mezclador, Opus, jitter buffer, AGC, cifrado — reimplementar esto sería absurdo cuando ya corre y consume +0 MB extra.
murmurd Config Relevante
host=127.0.0.1
port=64738
opusthreshold=0
bandwidth=64000
users=5
textmessagelength=0
logdays=-1
Si murmurd escucha en 127.0.0.1, clientes externos entran vía Tor TCP tunnel o SSH port forward.