Vue d'ensemble
— actif| Service | État | Démarrage | Événements |
|---|
| Chemin | État | Lecteurs | Reçus | Pistes |
|---|
| Fichier | Taille | Durée | Modifié |
|---|
Choisissez une unité puis chargez son journal.
—
Une caméra ne s’ouvre que dans un contexte sécurisé.
Sans certificat de confiance, le navigateur ne définit même pas
navigator.mediaDevices et refuse l’accès — sans message
explicite. C’est ce certificat qu’il faut installer sur le poste de
l’invité, avant qu’il ouvre le lien.
- Télécharger le fichier
.cerci-dessus. - Double-cliquer dessus → Installer le certificat.
- Choisir Ordinateur local, puis Placer tous les certificats dans le magasin suivant → Autorités de certification racines approuvées.
- Valider l’avertissement de sécurité. Il est attendu : vous ajoutez une autorité à la machine.
- Rouvrir le navigateur complètement, puis ouvrir l’adresse de test. Elle doit indiquer Contexte sécurisé : oui.
Le certificat ne contient aucune clé. Il certifie le site de la carte, il ne chiffre rien, et il ne permet pas d’intercepter le flux : c’est ce que l’invité doit installer, et rien d’autre.
Cette page est une procédure, pas une description. Chaque valeur qu’elle nomme a été vérifiée sur la carte, et les valeurs qui changent d’un direct à l’autre ne sont pas recopiées ici : elles sont lues dans l’onglet qui les détient.
La publication se fait en SRT, et c’est un choix
mesuré, pas un goût. En WHIP, OBS verrouille l’audio sur
Opus 48 kHz ; or Safari refuse Opus dans le HLS
(mesuré sur un iPhone : Opus en fMP4 : NON,
AAC-LC : oui). hls.js, devant ce refus, écarte la piste
audio sans le dire : l’image continue, aucun son, aucune erreur.
En SRT, OBS encode en AAC, que tous les
navigateurs décodent — Windows, Linux, macOS, iPhone, Android.
L’encodeur audio doit être réglé sur AAC, dans Paramètres → Sortie → Audio. C’est le seul réglage qui compte ; la vidéo, elle, est copiée telle quelle.
OBS 28 ou plus récent, pour la sortie SRT. Elle passe par le service Custom, sans extension à installer.
Les trois champs sont dans l’onglet Webinaires, sur la ligne du webinaire : l’identifiant, l’adresse du serveur, et la clé de stream au bouton Clé.
-
Dans l’onglet Webinaires, cliquez
Adresse sur la ligne du webinaire : c’est
l’adresse du serveur, de la forme
srt://.:8890 -
Cliquez Clé : elle affiche et copie la clé de
stream, de la forme
publish:<chemin>:speaker:<mot de passe>. Elle contient le mot de passe, donc elle n’est pas affichée par défaut — un secret ne se montre pas au passage. - Dans OBS : Paramètres → Diffusion, service Custom.
-
Serveur : l’adresse recopiée,
srt://compris. - Clé de stream : la clé recopiée, telle quelle. C’est ici qu’OBS met d’habitude une simple clé RTMP ; pour SRT c’est elle qui porte l’action, le chemin et les identifiants.
- Sortie → Audio : encodeur AAC. En Opus, les iPhone verraient l’image sans le son.
- Diffusion → Démarrer la diffusion. L’onglet Direct passe à « en direct ».
Si la connexion est refusée, la clé de stream est
presque toujours en cause : MediaMTX attend exactement
publish:<chemin>:<identifiant>:<mot de passe>.
Son refus le dit — c’est mesuré, une première tentative au mauvais
format a rendu la forme exacte.
Rien ne change au montage : vous composez votre scène dans OBS, avec une source navigateur par intervenant, et vous publiez l’ensemble par la méthode SRT ci-dessus. Les intervenants restent des invités à part entière.
- Invitez vos intervenants dans l’onglet Invités. L’onglet rend une source OBS pour chacun — c’est cette adresse qu’il faut mettre dans OBS, pas le lien d’entrée.
- Dans OBS : + → Source navigateur.
-
Collez la source OBS, puis remplacez
https://parhttp://dans l’adresse. - Réglez la hauteur sur 720 (ou plus), sinon OBS rogne le bas de l’image.
- Recommencez pour chaque intervenant, placez les sources dans votre scène, puis publiez par la méthode SRT.
Pourquoi changer https:// en
http://. Le lien rendu est en HTTPS, et le
certificat de la carte est signé par une autorité locale que le
portable ne connaît pas. OBS refuse alors la source, sans
explication lisible. En http:// la source
fonctionne — mesuré. Une source navigateur ne publie rien : elle
ne regarde que. C’est pourquoi cette astuce est sans conséquence
ici, alors qu’elle interdirait une caméra.
Le poste de l’intervenant, lui, a besoin de la caméra, et donc du certificat : voir l’onglet Test HTTPS. Le lien qu’il reçoit ne fonctionne qu’après.
Cette procédure décrit l’état mesuré de l’installation. Elle suppose qu’OBS est en 30 ou plus récent, et que le portable est sur le même réseau que la carte.
Si une étape ne donne pas le résultat décrit, ce n’est pas nécessairement OBS : l’onglet Direct affiche l’état réel du relais et la réponse qu’il a rendu.
Version
0.1 Alpha
Un webinaire participatif qui tient sur une seule carte Raspberry Pi 5, chez vous, sans service en ligne. Un intervenant publie depuis OBS en SRT ; les participants suivent en HLS, discutent, posent des questions et peuvent changer de nom en cours de route. Les sous-titres sont produits sur la carte. Rien ne sort du réseau local, sauf ce que vous décidez d’ouvrir.
Distribué sous licence MIT. Le code source et la documentation d’installation sont dans le dépôt du projet.
- Diffusion — l’intervenant publie en SRT, en AAC, depuis OBS ; la carte relaie en HLS par segments de deux secondes. C’est le seul format de publication accepté, et la raison est écrite dans l’onglet Documentation.
- Participation — discussion, questions et présence, avec des rôles séparés : participant, intervenant, modérateur. Le rôle vient de l’adresse et de la session, pas d’un menu.
- Sous-titres — transcription produite sur la carte, sans envoi du son ailleurs.
- Mesures — octets servis, part pair-à-pair, participants distincts, tout est compté puis cumulé par webinaire. Aucun compteur n’est estimé : ce qui n’est pas mesuré n’est pas affiché.
- Invitations — un lien et un code QR par intervenant, pour faire entrer une personne sans lui donner la salle.
| Logiciel | Version mesurée | Ce qu’il fait ici | Licence |
|---|---|---|---|
| MediaMTX | v1.21.1 | reçoit le SRT/AAC de l’intervenant, produit le HLS | MIT |
| Caddy | v2.11.6 | sert les pages et relaie les segments HLS | Apache-2.0 |
| Node.js | v20.19.2 | exécute le moteur de discussion et la console | MIT |
| Express | 4.22.3 | sert les routes de l’API interne | MIT |
| Socket.IO | 4.8.4 | discussion et questions en temps réel | MIT |
| hls.js | 1.7.3 | lit le direct dans le navigateur | Apache-2.0 |
| whisper.cpp | 1.9.4-dev | transcrit le direct en sous-titres, sur la carte | MIT |
| ffmpeg | 7.1.5 | conditionne les segments et l’audio | LGPL-2.1+ |
| VDO.Ninja | cab1238 | caméra des intervenants, quand la salle est hébergée | AGPL-3.0 |
| qrcode-generator | 2.0.4 | dessine les codes QR des liens d’invitation | MIT |
VDO.Ninja est distribué sous AGPL-3.0, licence plus exigeante que les autres : son texte est conservé avec les fichiers qu’il installe. Les licences des autres briques sont celles de leurs paquets.
Chaque intervenant reçoit son lien, et l’OBS du producteur reçoit la source qui va avec. Les deux partagent le même identifiant de flux : s’il se reconnecte, la source déjà en place continue de fonctionner.
Un webinaire est une direction : son chemin dans le relais, sa salle de discussion, et son adresse. Deux webinaires peuvent tourner en même temps sur cette carte — elle a été mesurée, pas supposée.
Un webinaire archive garde son bilan : participants, octets recus du serveur, octets servis par les pairs, nombre de segments. Il est consultable, et il peut etre supprime — c'est le seul endroit ou la suppression est possible, parce qu'un webinaire en cours se archive, il ne se jette pas.
Les participants s’inscrivent sans compte : leur demander un mot de passe avant un webinaire ferait perdre la moitié du public. Les comptes ci-dessous portent une identité vérifiée — le nom affiché vient du compte, personne ne peut se faire passer pour un autre.
L’adresse n’est jamais utilisée pour envoyer quoi que ce soit : cette carte n’a pas d’accès à Internet. Elle sert de contact affiché, rien de plus. Un mot de passe laissé vide est généré, et il n’est communiqué qu’une fois.
Les intervenants et les modérateurs ne se créent pas ici. Ils naissent dans un webinaire, avec le lien qui va avec : ils ont alors une salle, une place et une adresse. Un compte d'intervenant créé ici n'aurait pas de direct où aller, et personne ne saurait où l'inviter.
Changer le mot de passe du compte connecté ferme les sessions ouvertes ailleurs dès la prochaine connexion, et n’affecte aucun autre compte.
| Photo | Login | Nom | Contact | Rôle | État |
|---|