Prüfen, woran die kleine Plex-Auflösung hängt
Die Servereinstellungen sind es nicht: „Begrenzung der Stream-Bitrate übers Internet" steht auf Original, keine Upload-Grenze, Hardware- Transcoding an. Die Vermutung ist damit widerlegt. Bleibt die eigene Anfrage. Bei „automatisch" schickt die App `maxVideoBitrate` und `videoQuality`, aber **kein** `videoResolution` — dort steht `nil`, weil die Stufe keine vorgibt. Verdacht: Plex nimmt dann seine Voreinstellung für die Qualitätsstufe, und die ist 540p. Wäre das so, bekäme jeder Plex-Nutzer bei „automatisch" über eine Fernverbindung stillschweigend 960x540 bei 1,1 Mbit, auch auf einer schnellen Leitung. Die Probe fährt deshalb vier Kombinationen ab und hält jeden Transcoder einzeln wieder an. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
7ecb16d4eb
commit
b861ca0599
@@ -184,6 +184,37 @@ if CommandLine.arguments.contains("--leiter") {
|
||||
)
|
||||
print("Sitzungen: \(ohne.sessionIdentifier.prefix(8)) / \(mit.sessionIdentifier.prefix(8))\n")
|
||||
|
||||
// **Warum kommt so wenig zurück?**
|
||||
//
|
||||
// Die App schickt bei „automatisch" `maxVideoBitrate` und `videoQuality`,
|
||||
// aber **kein** `videoResolution` — dort steht `nil`. Verdacht: Plex nimmt
|
||||
// dann seine eigene Voreinstellung für die Qualitätsstufe, und die ist
|
||||
// klein. Das wäre kein Servereinstellungs-Problem, sondern unser eigenes.
|
||||
print("=== Woran hängt die gelieferte Größe? ===")
|
||||
let proben: [(String, Int, String?)] = [
|
||||
("wie die App heute (ohne Auflösung)", 8_000, nil),
|
||||
("mit videoResolution=1920x1080", 8_000, "1920x1080"),
|
||||
("20 Mbit, ohne Auflösung", 20_000, nil),
|
||||
("20 Mbit + 1920x1080", 20_000, "1920x1080"),
|
||||
]
|
||||
for (name, bitrate, auflösung) in proben {
|
||||
let probe = TranscodeRequest(
|
||||
ratingKey: movie.ratingKey,
|
||||
maximumBitrate: bitrate,
|
||||
resolution: auflösung,
|
||||
isLocal: connection.local
|
||||
)
|
||||
guard let url = server.transcodeURL(for: probe) else { continue }
|
||||
let antwort = await prüfePlaylist(url)
|
||||
let zeile = antwort
|
||||
.split(separator: "\n")
|
||||
.first { $0.contains("Mbit/s") }
|
||||
.map { $0.trimmingCharacters(in: .whitespaces) } ?? "keine Stufe"
|
||||
print(" \(name): \(zeile)")
|
||||
await server.stopTranscode(sessionIdentifier: probe.sessionIdentifier)
|
||||
}
|
||||
print()
|
||||
|
||||
for (name, anfrage) in [("ohne autoAdjustQuality", ohne), ("mit autoAdjustQuality=1", mit)] {
|
||||
print("=== \(name) ===")
|
||||
guard let url = server.transcodeURL(for: anfrage) else {
|
||||
|
||||
Reference in New Issue
Block a user