Chemin du flux en deux segments, et revalidation de la console

Larix Broadcaster refuse une URL RTMP a un seul niveau : il impose le
schema rtmp://serveur/application/streamkey et affiche "Can't find rtmp
app and stream". Le chemin passe donc de "biblio" a "live/biblio", ce qui
satisfait cette contrainte sans rien changer pour SRT.

Au passage, un defaut mis en evidence par ce renommage : les ressources
statiques etaient servies sans directive de cache. Un navigateur laisse
ouvert continuait d'appeler l'ancien chemin, et la panne etait invisible
cote serveur - il ne voyait que des requetes vers une route disparue.
max-age=0 + must-revalidate : avec ETag, la revalidation coute un 304.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Adam Belkacemi 2026-09-12 18:51:17 +02:00
parent d017ba4958
commit 9f7a3bece7
3 changed files with 23 additions and 6 deletions

View file

@ -57,7 +57,7 @@ authInternalUsers:
ips: []
permissions:
- action: publish
path: biblio
path: live/biblio
###############################################################################
# Entrees : ce que l'iPhone peut utiliser pour pousser
@ -110,6 +110,10 @@ hlsAlwaysRemux: no
# Flux
###############################################################################
paths:
# Le capteur du studio. Nom volontairement aligne sur le deviceId utilise
# par le domaine d'alarme (iphone-biblio).
biblio:
# Le capteur du studio.
#
# Deux segments et non un seul : Larix Broadcaster impose le schema RTMP
# "rtmp://serveur/application/streamkey" et refuse de valider une URL a un
# seul niveau. Un chemin en deux segments satisfait cette contrainte sans
# rien changer pour SRT, qui accepte les deux formes.
live/biblio:

View file

@ -34,6 +34,19 @@ spring:
enabled: true
baseline-on-migrate: true
web:
resources:
cache:
cachecontrol:
# La console est un fichier statique servi par l'application, mais
# elle evolue a chaque deploiement. Sans revalidation, un navigateur
# laisse ouvert des jours continue d'appeler l'ancienne API - panne
# invisible cote serveur, qui ne voit que des requetes vers une route
# qui n'existe plus. ETag et Last-Modified rendent la revalidation
# quasi gratuite : 304 et rien dans le corps.
max-age: 0
must-revalidate: true
threads:
virtual:
enabled: true
@ -91,7 +104,7 @@ alarm:
# 3 sondes ratees = 60 s reelles sans image. En 4G, le flux tombe
# regulierement sans que personne n'ait touche au telephone.
offline-threshold: ${CAMERA_OFFLINE_THRESHOLD:3}
stream-path: ${CAMERA_STREAM_PATH:biblio}
stream-path: ${CAMERA_STREAM_PATH:live/biblio}
api-url: ${MEDIA_API_URL:http://mediamtx:9997}
api-user: probe
api-password: ${MEDIA_API_PASSWORD:}

View file

@ -18,7 +18,7 @@
(function () {
'use strict';
const STREAM = 'biblio';
const STREAM = 'live/biblio';
const WHEP_URL = '/webrtc/' + STREAM + '/whep';
const HLS_URL = '/hls/' + STREAM + '/index.m3u8';