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.
Bien que Python soit excellent pour l’IA, Java (via Spring Boot) a été privilégié pour la partie capture pour plusieurs raisons :
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é.
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.
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.

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é
Pour garantir la haute disponibilité, plusieurs mécanismes ont été mis en place :
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.