GroovyMorning_RLAC

Capture Audio Haute Disponibilité

Dans le projet, le module RLAC-AudioRecorder constitue le coeur du système. Il capture le flux radio sans interruption, 24 heures sur 24, et transforme ce flux brut en segments exploitables par une application mobile.

Pourquoi Java pour la capture ?

Bien que Python soit excellent pour l’IA, Java (via Spring Boot) a été privilégié pour la partie capture pour plusieurs raisons :

Le concept de “Master Stream” et “Dynamic Recording”

Plutôt que de démarrer un enregistrement au moment précis où une chronique commence (ce qui risquerait de faire rater les premières secondes à cause de la latence de connexion), un système à deux étages a été implémenté.

1. Le Flux Master (Continu)

Un processus FFmpeg fonctionne en permanence. Il génère des segments fMP4 de 1 seconde. Ce buffer roulant permet à l’IA d’analyser le passé proche et au système de remonter le temps pour capturer le début exact d’une chronique.

2. Le Découpage Dynamique

Lorsqu’une notification START est émise par le moteur d’IA, le serveur Java ne démarre pas un nouvel enregistrement. Il commence à créer des liens (symlinks) ou à copier les segments déjà générés par le Flux Master vers un dossier spécifique à la chronique. C’est le principe du Dynamic Recording.

capture-audio-java.png

Maîtriser FFmpeg via Java

Le pilotage de FFmpeg est effectué via ProcessBuilder. La sortie standard est monitorée pour détecter les erreurs de flux (perte de connexion internet, changement de bitrate) et relancer automatiquement le processus si nécessaire.

// Exemple simplifié du monitoring de processus
ProcessBuilder pb = new ProcessBuilder("ffmpeg", "-i", streamUrl, ...);
Process process = pb.start();
// Surveillance active dans un thread séparé

Gestion des erreurs et Robustesse

Pour garantir la haute disponibilité, plusieurs mécanismes ont été mis en place :

Résultat

Ce système permet d’obtenir une fiabilité de capture élevée. Même si le service d’IA est momentanément indisponible, le flux continu reste actif, permettant une analyse a posteriori pour récupérer les segments manquants.