Wiedergabe: die Plex-Kennung muss in die Adresse, nicht nur in die Kopfzeilen
HTTP 400 vom Transcoder. Die Kennung dieses Geräts reist bei jeder Anfrage als Kopfzeile mit — aber die Adresse des Stroms ruft nicht die App ab, sondern AVPlayer, und der schickt keine Kopfzeilen mit. Bei Dateien fällt das nicht auf; bei Live-TV schon: der Server legt die Sitzung unter der Gerätekennung an und kann die Abholung ohne sie keiner Sitzung zuordnen. Also trägt die Transcoder-Adresse die Kennung jetzt selbst. Das gilt für alle Ströme, nicht nur für Live — dort fiel es nur zuerst auf. Dazu: umgerechnet wird die Adresse der Sitzung, nicht die des Teils darin. Der Transcoder sucht sich den Teil selbst, deshalb steht dort -1. Und der Entscheider unterscheidet jetzt zwischen „nein" und „keine Antwort". Ein Schweigen als Ablehnung zu lesen hieße, eine funktionierende Sendung zu blocken, bloß weil er Live-Adressen womöglich gar nicht kennt. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
861ca805a5
commit
8dba05b4f9
@@ -53,6 +53,19 @@ public struct PlexClientIdentity: Sendable, Equatable {
|
||||
"Accept": "application/json",
|
||||
]
|
||||
}
|
||||
|
||||
/// Dieselben Angaben als Abfrageteile der Adresse.
|
||||
///
|
||||
/// Für Adressen, die nicht die App abruft, sondern der Systemplayer:
|
||||
/// AVPlayer schickt keine Plex-Kopfzeilen mit. Bei Live-TV ist das
|
||||
/// entscheidend — der Server legt die Sitzung unter der Gerätekennung an
|
||||
/// und lehnt die Abholung ohne sie mit „HTTP 400" ab.
|
||||
public var queryItems: [URLQueryItem] {
|
||||
headers
|
||||
.filter { $0.key.hasPrefix("X-Plex-") }
|
||||
.map { URLQueryItem(name: $0.key, value: $0.value) }
|
||||
.sorted { $0.name < $1.name }
|
||||
}
|
||||
}
|
||||
|
||||
extension PlexClientIdentity {
|
||||
|
||||
Reference in New Issue
Block a user