Player: die Qualitätsleiter des Servers, Bitrate im Blick, Doppeltipp

Die vier erfundenen Stufen weichen der Leiter, die der Server selbst
meldet: 64, 96, 208, 320, 720, 1500, 2000, 3000, 4000, 8000, 10000,
12000, 20000 kbps mit den Auflösungen, die Plex dafür vorsieht. Eine
eigene Leiter hieße, Stufen anzubieten, die der Transcoder nicht kennt —
er rundet dann still auf die nächste, und die Anzeige log.

Angeboten wird nur, was zur Quelle passt. Eine 720p-Datei auf 1080p
hochzurechnen bringt kein Bild dazu, und die Stufen sähen alle gleich aus.

Oben im Blatt steht, was tatsächlich über die Leitung kommt — gemessene
Bitrate, Auflösung, verworfene Bilder. Der Unterschied zur gewählten
Stufe ist keine Haarspalterei: die eine sagt, was erlaubt ist, die andere,
was ankommt. Ruckelt es trotz hoher Stufe, steht die Antwort dort.

„Nur Ton" gibt es, aber ehrlich beschriftet: Plex kennt für Videos keinen
reinen Tonstrom, also wird die unterste Sprosse geholt und das Bild
ausgeblendet.

Dazu Doppeltipp links und rechts für zehn Sekunden zurück und vor. Die
Reihenfolge der Gesten ist entscheidend — das einfache Tippen verschluckt
sonst das doppelte.

Die Kachel hängt nicht mehr in vier Ecken fest, sondern klebt links oder
rechts und ist in der Höhe frei. Vier Ecken sind schnell gebaut, aber im
Weg: steht sie über einem Knopf, bleiben drei Orte, die ebenso stören.
Größer wird sie durch Zusammen- und Auseinanderziehen; der Griff ist weg,
er saß zwangsläufig auf dem Bild und stritt sich mit dem Verschieben.

Und die Begriffe: „Motor" für engine sagt kein deutscher Entwickler.
Fachwörter, die im Deutschen englisch bleiben, bleiben jetzt englisch.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-09-12 21:50:39 +02:00
co-authored by Claude Opus 5
parent c2ddc10871
commit 12bb49615b
28 changed files with 666 additions and 262 deletions
@@ -385,7 +385,7 @@ extension PlexServer {
/// Schaltet einen Sender ein.
///
/// Live-TV kommt immer als umgerechneter Strom: der Tuner liefert einen
/// Live-TV kommt immer als umgerechneter Stream: der Tuner liefert einen
/// Transportstrom, den kein iPhone direkt abspielt.
///
/// Zwei Schritte, und der erste ist der, den ich zuerst übersprungen
@@ -675,7 +675,7 @@ extension PlexServer {
return lines.joined(separator: "\n")
}
/// Belegt einen Tuner über den Empfänger und liefert den Strom.
/// Belegt einen Tuner über den Empfänger und liefert den Stream.
///
/// Die Antwort auf das POST trägt den Vorgang mitsamt Metadaten-Eintrag,
/// und **dort** steht die abspielbare Teil-Adresse — nicht im Raster und
@@ -746,7 +746,7 @@ extension PlexServer {
// Abwarten, bis der Empfänger abgestimmt hat. Er meldet
// `status: inprogress` und `currentSize: 0` — es gibt in dem Moment
// noch keinen Strom, und jede Frage danach musste scheitern. Ein
// noch keinen Stream, und jede Frage danach musste scheitern. Ein
// Tuner ist ein Stück Hardware; er braucht Sekunden, keine
// Millisekunden.
if let operation = Self.grabOperationKey(in: data) {
@@ -861,7 +861,7 @@ extension PlexServer {
///
/// Höchstens zwölf Sekunden. Länger zu warten hieße, den Nutzer vor einem
/// schwarzen Bild sitzen zu lassen; gar nicht zu warten hieß bisher, nach
/// einem Strom zu fragen, den es noch nicht gibt.
/// einem Stream zu fragen, den es noch nicht gibt.
private func waitForGrab(atKey key: String, limit: Int = 12) async -> String {
for second in 1...limit {
try? await Task.sleep(for: .seconds(1))
@@ -1180,7 +1180,7 @@ extension PlexServer {
return keys.filter { !$0.isEmpty && seen.insert($0).inserted }
}
/// Fragt den Server, ob er diesen Strom zulässt — und warum nicht.
/// Fragt den Server, ob er diesen Stream zulässt — und warum nicht.
public func liveTVVerdict(for url: URL) async -> LiveTVVerdict {
// Dieselben Angaben, nur an den Entscheider statt an den Transcoder.
// Er antwortet im Klartext, warum er ablehnt — sonst bleibt nur „die
@@ -1450,7 +1450,7 @@ public struct LiveTuneResult: Sendable {
public let trace: [ChannelProbe]
}
/// Was der Server zu einem Strom sagt.
/// Was der Server zu einem Stream sagt.
public enum LiveTVVerdict: Sendable, Equatable {
case allowed
/// Ausdrücklich abgelehnt, mit Begründung.