This commit is contained in:
team3
2026-09-08 23:39:04 +02:00
parent 13df86e9fc
commit 08c2e8f885

View File

@@ -2,9 +2,9 @@
import { onMounted, onUnmounted, ref } from 'vue' import { onMounted, onUnmounted, ref } from 'vue'
import Hls from 'hls.js' import Hls from 'hls.js'
// Alle Zuschauer regeln auf dieselbe Distanz zur Live-Kante. Damit laufen // Alle Zuschauer halten dieselbe Distanz zur Live-Kante. Damit laufen sie
// sie synchron, ohne dass ein Server sie taktet. hls.js passt dafür die // synchron, ohne dass ein Server sie taktet. Ausgeglichen wird nur über
// Abspielgeschwindigkeit an (maxLiveSyncPlaybackRate). // Sprünge, nicht über die Geschwindigkeit — siehe maxLiveSyncPlaybackRate.
const ZIEL_LATENZ = 4 const ZIEL_LATENZ = 4
const video = ref(null) const video = ref(null)
@@ -108,11 +108,13 @@ function verbinden() {
// ewig mit 1,5-fachem Tempo aufzuholen. Zu dicht an ZIEL_LATENZ // ewig mit 1,5-fachem Tempo aufzuholen. Zu dicht an ZIEL_LATENZ
// führt laut Doku zu Stockern. // führt laut Doku zu Stockern.
liveMaxLatencyDuration: ZIEL_LATENZ + 3, liveMaxLatencyDuration: ZIEL_LATENZ + 3,
// Über 1 erlaubt hls.js, die Geschwindigkeit anzuheben, um die // Kein Aufholen über die Geschwindigkeit. Mit 1,1 wechselte der Player
// Ziel-Latenz zu halten. 1,5 wäre deutlich hörbar, wenn der Player sie // gemessene 112-mal in 104 Sekunden das Tempo und lief 37 % der Zeit
// ausreizt; 1,1 reicht für normale Schwankungen und fällt nicht auf. // schneller als normal — jeder Wechsel ist ein Übergang im Zeitdehner
// Bleibt der Rückstand größer, springt liveMaxLatencyDuration ohnehin. // und knackst hörbar. Der Puffer lief dabei nie leer (nie unter 2 s),
maxLiveSyncPlaybackRate: 1.1, // die Regelung war also gar nicht nötig. Bleibt der Rückstand doch
// einmal groß, springt liveMaxLatencyDuration.
maxLiveSyncPlaybackRate: 1,
backBufferLength: 30, backBufferLength: 30,
}) })