Die Probe räumt auf und sagt, woran es liegt

Sie hat am Server eine Transcode-Sitzung angelegt und nicht wieder
beendet — ein Messwerkzeug, das Arbeit hinterlässt, ist ein schlechtes.
Jetzt läuft `endPlayback` am Ende.

Und sie erklärt das Ergebnis, statt es nur hinzustellen. Kommt nur eine
Stufe zurück, nennt sie die Hürden aus Jellyfins eigenem Quelltext
(`DynamicHlsHelper.EnableAdaptiveBitrateStreaming`) — allen voran die
erste und überraschendste: im lokalen Netz liefert Jellyfin
**grundsätzlich** keine Leiter. Wörtlich dort: „Within the local network
this will likely do more harm than good." Ein schwaches WLAN ist für
Jellyfin auch nur lokales Netz.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-09-27 15:21:36 +02:00
co-authored by Claude Opus 5
parent ab597ee2f0
commit 2d3c4adbba
@@ -200,8 +200,42 @@ func jellyfinLeiter(host: String) async {
} }
print("3) Als master.m3u8 mit enableAdaptiveBitrateStreaming=true") print("3) Als master.m3u8 mit enableAdaptiveBitrateStreaming=true")
print(await prüfePlaylist( let mitABR = await prüfePlaylist(
setzend("enableAdaptiveBitrateStreaming", auf: "true", in: master), setzend("enableAdaptiveBitrateStreaming", auf: "true", in: master),
kopfzeilen: kopf kopfzeilen: kopf
)) )
print(mitABR)
if mitABR.contains("1 Stufe:") { erklärungWarumKeineLeiter() }
// Aufräumen: die Aushandlung hat am Server eine Sitzung angelegt, und
// ohne dieses Signal rechnet der Transcoder weiter, obwohl niemand
// zusieht. Ein Messwerkzeug, das Arbeit hinterlässt, ist ein schlechtes.
if let sitzung = ziel.sessionID {
await backend.endPlayback(sessionID: sitzung)
}
print("")
print("Transcode-Sitzung beendet.")
}
/// Sagt, woran es liegen kann — aus Jellyfins eigenem Quelltext.
///
/// `DynamicHlsHelper.EnableAdaptiveBitrateStreaming` prüft der Reihe nach,
/// und die erste Hürde ist die überraschendste.
func erklärungWarumKeineLeiter() {
print("")
print(" Warum nur eine Stufe kommt — aus Jellyfins Quelltext,")
print(" `DynamicHlsHelper.EnableAdaptiveBitrateStreaming`, der Reihe nach:")
print("")
print(" 1. Im lokalen Netz liefert Jellyfin grundsätzlich keine Leiter.")
print(" Wörtlich im Quelltext: „Within the local network this will")
print(" likely do more harm than good.\" Das gilt auch für ein")
print(" schwaches WLAN — unterschieden wird da nicht.")
print(" 2. Ohne den Parameter keine Leiter; im Server steht er auf false.")
print(" 3. Bei einem laufenden Sender nicht.")
print(" 4. Wird Bild ODER Ton nur kopiert statt neu gerechnet, nicht.")
print(" Das trifft oft zu, wenn der Ton schon AAC ist.")
print("")
print(" Kam dieser Aufruf von zuhause, ist Punkt 1 die Erklärung — und dann")
print(" sagt die Messung nichts darüber, was von unterwegs käme.")
} }