feat: implémentation complète du bridge audio serveur (Phase 1.3)

Composants créés :
- CoreAudioBackend.js : Backend audio macOS natif (naudiodon/PortAudio)
  - Énumération et sélection devices audio
  - Capture audio 48kHz mono/stereo
  - Lecture audio avec buffer circulaire
  - Gestion underrun/overrun

- OpusCodec.js : Encodeur/décodeur Opus
  - Support 32-320 kbps configurable
  - Présets voix (économique, standard, HD) et musique
  - Frame 20ms (960 samples à 48kHz)
  - Statistiques encode/decode

- JitterBuffer.js : Buffer FIFO adaptatif
  - Cible 40ms (2 frames)
  - Détection underrun/overrun
  - Mode adaptatif pour conditions réseau variables
  - Statistiques latence et santé buffer

- LiveKitClient.js : Client LiveKit pour bridge
  - Connexion room en tant que participant "AudioBridge"
  - Publication/souscription tracks audio
  - Reconnexion automatique
  - Gestion événements participants

- AudioBridge.js : Classe principale orchestration
  - Détection automatique backend (CoreAudio macOS)
  - Routing bidirectionnel CoreAudio ↔ Opus ↔ LiveKit
  - Configuration via présets ou custom
  - Logs détaillés et statistiques temps réel

Dépendances ajoutées :
- opusscript : Codec Opus JavaScript
- naudiodon : Bindings natifs PortAudio/CoreAudio
- livekit-client : SDK LiveKit côté serveur

TODO.md mis à jour avec tâches Phase 1.3 complétées.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2026-05-22 22:18:18 +02:00
parent 8bae2f03bf
commit efd697a9d3
7 changed files with 1656 additions and 23 deletions
+23 -23
View File
@@ -36,38 +36,38 @@ Valider la faisabilité technique : 2-4 clients, PTT basique, latence < 150ms, m
### 1.3 Bridge audio macOS
#### Backend CoreAudio
- [ ] server/bridge/backends/CoreAudioBackend.js
- [ ] Énumération devices (entrée/sortie)
- [ ] Capture audio (48kHz, mono/stereo)
- [ ] Lecture audio (48kHz)
- [ ] Gestion buffer circulaire
- [x] server/bridge/backends/CoreAudioBackend.js
- [x] Énumération devices (entrée/sortie)
- [x] Capture audio (48kHz, mono/stereo)
- [x] Lecture audio (48kHz)
- [x] Gestion buffer circulaire
#### Codec Opus
- [ ] server/bridge/OpusCodec.js
- [ ] Encoder PCM → Opus (configurable 32-320kbps, 20ms frame)
- [ ] Decoder Opus → PCM
- [ ] Configuration bitrate (par groupe ou global)
- [x] server/bridge/OpusCodec.js
- [x] Encoder PCM → Opus (configurable 32-320kbps, 20ms frame)
- [x] Decoder Opus → PCM
- [x] Configuration bitrate (par groupe ou global)
- [ ] Tests unitaires codec (différentes qualités)
#### Jitter Buffer
- [ ] server/bridge/JitterBuffer.js
- [ ] Buffer FIFO 40ms cible
- [ ] Détection underrun/overrun
- [ ] Statistiques latence
- [x] server/bridge/JitterBuffer.js
- [x] Buffer FIFO 40ms cible
- [x] Détection underrun/overrun
- [x] Statistiques latence
#### Intégration LiveKit
- [ ] server/bridge/LiveKitClient.js
- [ ] Connexion room en tant que participant
- [ ] Publish track audio (Opus)
- [ ] Subscribe tracks autres participants
- [ ] Gestion reconnexion
- [x] server/bridge/LiveKitClient.js
- [x] Connexion room en tant que participant
- [x] Publish track audio (Opus)
- [x] Subscribe tracks autres participants
- [x] Gestion reconnexion
#### Classe principale
- [ ] server/bridge/AudioBridge.js
- [ ] Détection backend (CoreAudio pour macOS)
- [ ] Routing : CoreAudio → Opus → LiveKit
- [ ] Routing : LiveKit → Opus → CoreAudio
- [ ] Logs détaillés (latence, drops)
- [x] server/bridge/AudioBridge.js
- [x] Détection backend (CoreAudio pour macOS)
- [x] Routing : CoreAudio → Opus → LiveKit
- [x] Routing : LiveKit → Opus → CoreAudio
- [x] Logs détaillés (latence, drops)
---