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:
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.")
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user