fix: logs debug AudioBridge + install pulseaudio-utils
- Ajout logs FLUX 2 (réception audio LiveKit → carte son) - Ajout logs GroupRouter pour debug routing - install/linux.sh: ajout pulseaudio-utils (requis pour pactl)
This commit is contained in:
+2
-1
@@ -71,7 +71,8 @@ install_system_deps() {
|
|||||||
# Outils PipeWire
|
# Outils PipeWire
|
||||||
sudo apt install -y \
|
sudo apt install -y \
|
||||||
pipewire-bin \
|
pipewire-bin \
|
||||||
libspa-0.2-jack
|
libspa-0.2-jack \
|
||||||
|
pulseaudio-utils
|
||||||
|
|
||||||
# Démarrage automatique
|
# Démarrage automatique
|
||||||
systemctl --user enable --now pipewire pipewire-pulse wireplumber
|
systemctl --user enable --now pipewire pipewire-pulse wireplumber
|
||||||
|
|||||||
@@ -352,10 +352,14 @@ export class AudioBridge extends EventEmitter {
|
|||||||
|
|
||||||
// Réception audio depuis les clients LiveKit
|
// Réception audio depuis les clients LiveKit
|
||||||
this.liveKitClient.on('audioData', ({ participantName, pcmData, sampleRate, channels }) => {
|
this.liveKitClient.on('audioData', ({ participantName, pcmData, sampleRate, channels }) => {
|
||||||
|
console.log(`[AudioBridge FLUX 2] Audio reçu de ${participantName}: ${pcmData.length} bytes (${sampleRate}Hz, ${channels}ch)`);
|
||||||
|
|
||||||
// Pour l'instant, on route vers le groupe principal
|
// Pour l'instant, on route vers le groupe principal
|
||||||
// TODO: Mapper les participants aux groupes selon la configuration
|
// TODO: Mapper les participants aux groupes selon la configuration
|
||||||
const groupName = 'Equipe'; // Groupe par défaut
|
const groupName = 'Equipe'; // Groupe par défaut
|
||||||
this.emit('groupAudioIn', { groupName, pcmBuffer: pcmData });
|
this.emit('groupAudioIn', { groupName, pcmBuffer: pcmData });
|
||||||
|
|
||||||
|
console.log(`[AudioBridge FLUX 2] Événement groupAudioIn émis pour groupe "${groupName}"`);
|
||||||
});
|
});
|
||||||
|
|
||||||
await this.liveKitClient.connect();
|
await this.liveKitClient.connect();
|
||||||
@@ -449,19 +453,27 @@ export class AudioBridge extends EventEmitter {
|
|||||||
// Écouter l'audio entrant de LiveKit (sera connecté par LiveKitServerBridge)
|
// Écouter l'audio entrant de LiveKit (sera connecté par LiveKitServerBridge)
|
||||||
this.on('groupAudioIn', ({ groupName, pcmBuffer }) => {
|
this.on('groupAudioIn', ({ groupName, pcmBuffer }) => {
|
||||||
try {
|
try {
|
||||||
|
console.log(`[AudioBridge FLUX 2] Handler groupAudioIn: groupe="${groupName}", buffer=${pcmBuffer.length} bytes`);
|
||||||
|
|
||||||
// Stocker le buffer du groupe pour le routing
|
// Stocker le buffer du groupe pour le routing
|
||||||
const float32Data = this._bufferToFloat32(pcmBuffer);
|
const float32Data = this._bufferToFloat32(pcmBuffer);
|
||||||
this.groupBuffersFromLiveKit.set(groupName, float32Data);
|
this.groupBuffersFromLiveKit.set(groupName, float32Data);
|
||||||
|
|
||||||
|
console.log(`[AudioBridge FLUX 2] Buffer Float32 créé: ${float32Data.length} samples`);
|
||||||
|
|
||||||
// ÉTAPE 3 : Groupes → Outputs physiques (via GroupAudioRouter)
|
// ÉTAPE 3 : Groupes → Outputs physiques (via GroupAudioRouter)
|
||||||
const outputBuffers = this.groupAudioRouter.processGroupsToOutputs(
|
const outputBuffers = this.groupAudioRouter.processGroupsToOutputs(
|
||||||
this.groupBuffersFromLiveKit
|
this.groupBuffersFromLiveKit
|
||||||
);
|
);
|
||||||
|
|
||||||
|
console.log(`[AudioBridge FLUX 2] GroupRouter processGroupsToOutputs: ${this.groupBuffersFromLiveKit.size} groupes → ${outputBuffers.size} outputs`);
|
||||||
|
|
||||||
// ÉTAPE 4 : Envoyer chaque output à la carte son
|
// ÉTAPE 4 : Envoyer chaque output à la carte son
|
||||||
outputBuffers.forEach((outputBuffer, channelId) => {
|
outputBuffers.forEach((outputBuffer, channelId) => {
|
||||||
const pcmBuffer = this._float32ToBuffer(outputBuffer);
|
const pcmBuffer = this._float32ToBuffer(outputBuffer);
|
||||||
|
|
||||||
|
console.log(`[AudioBridge FLUX 2] → Output ${channelId}: ${pcmBuffer.length} bytes vers carte son`);
|
||||||
|
|
||||||
// Envoyer à la carte son
|
// Envoyer à la carte son
|
||||||
this.audioBackend.queueAudio(pcmBuffer);
|
this.audioBackend.queueAudio(pcmBuffer);
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -270,11 +270,19 @@ export class GroupAudioRouter extends EventEmitter {
|
|||||||
// Réinitialise les buffers de sortie
|
// Réinitialise les buffers de sortie
|
||||||
this.outputBuffers.clear();
|
this.outputBuffers.clear();
|
||||||
|
|
||||||
|
logger.debug(`[GroupRouter] processGroupsToOutputs: ${groupBuffersData.size} groupes en entrée`);
|
||||||
|
logger.debug(`[GroupRouter] Routes disponibles: ${JSON.stringify([...this.groupToOutputRoutes.keys()])}`);
|
||||||
|
|
||||||
// Pour chaque groupe
|
// Pour chaque groupe
|
||||||
groupBuffersData.forEach((pcmData, groupName) => {
|
groupBuffersData.forEach((pcmData, groupName) => {
|
||||||
const routes = this.groupToOutputRoutes.get(groupName);
|
const routes = this.groupToOutputRoutes.get(groupName);
|
||||||
|
|
||||||
if (!routes || routes.length === 0) return;
|
logger.debug(`[GroupRouter] Groupe "${groupName}": ${routes ? routes.length : 0} routes trouvées`);
|
||||||
|
|
||||||
|
if (!routes || routes.length === 0) {
|
||||||
|
logger.warn(`[GroupRouter] Aucune route de sortie configurée pour groupe "${groupName}" - audio ignoré`);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Applique chaque route vers les sorties
|
// Applique chaque route vers les sorties
|
||||||
routes.forEach(route => {
|
routes.forEach(route => {
|
||||||
|
|||||||
Reference in New Issue
Block a user