@mostajs/vox-live
@mostajs/vox-live
Auteur : Dr Hamid MADANI drmdh@msn.com
Runtime VoxStudio Live : diffusion plateau en direct (talk-show, 1+ intervenants → N spectateurs) par composition de @mostajs/media-sfu (WebRTC SFU, mediasoup, signaling WHIP/WHEP). Fournit une factory + les clients plateau/embed/spectateur. Une app le compose en un lanceur mince (ex. live.amia.fr, embarqué en iframe depuis market.amia.fr).
NON zéro-dépendance :
@mostajs/media-sfutire mediasoup (natif C++). Service à isoler. Ports UDP média à ouvrir ; HTTPS requis (getUserMedia).
Usage
import { createVoxLiveServer } from '@mostajs/vox-live';
const live = await createVoxLiveServer({ announcedIp: '212.132.109.40' /* IP publique, REQUIS en prod */ });
live.listen(4700);ou en CLI : mosta-vox-live 4700 (config via .env/process.env : SFU_ANNOUNCED_IP, SFU_MIN_PORT…).
Pages servies
/host?room=<id>— plateau : l'intervenant publie (WHIP)./embed?room=<id>&audio=1— spectateur auto-subscribe (WHEP), pensé pour l'iframe./viewer— liste des rooms actives ·/— accueil ·/api/health.
Factory
createVoxLiveServer({ listenIp, announcedIp, minPort, maxPort, workers, logLevel, corsOrigins, webDir, permissionChecker, onEvent }) → { server, sfu, handlers, listen(port,cb), close() }. Rooms créées à la volée (une room = une session live). API SFU /api/sfu/rooms/:room/{whip,whep} (identique au serveur prouvé de @mostajs/media-sfu).
Pré-requis infra
mediasoup (npm install compile) · ports UDP/TCP 50000-50100 ouverts (firewall + panneau hébergeur) · SFU_ANNOUNCED_IP = IP publique · sous-domaine + HTTPS · TURN si NAT strict. Licence : AGPL-3.0-or-later.