Live-TV: die Abspielliste ist fertig — sie gehört abgerufen, nicht umgerechnet

Das Belegen des Tuners klappt, und heraus kommt:

    /livetv/sessions/1b5bb998…/DBACCA6D…/index.m3u8?offset=-1.000000

Eine fertige HLS-Abspielliste. Ich habe sie an den Transcoder gegeben —
also darum gebeten, etwas umzurechnen, das schon fertig ist. Daher die
nackte 400. Sie wird jetzt unmittelbar abgerufen, mit Token und
Gerätekennung in der Adresse, weil der Systemplayer keine Kopfzeilen
mitschickt. Die eigene Abfrage der Sitzung bleibt dabei erhalten.

Dazu das Gegenstück, ebenfalls aus dem Quelltext des Plex-Clients:
`DELETE /media/subscriptions/{id}` gibt den Tuner wieder frei. Er ist ein
Stück Hardware — vier Stück gibt es, und ein nicht freigegebener fehlt
beim nächsten Einschalten. Das passiert jetzt beim Schließen des Players
und auch dann, wenn das Belegen zwar klappt, aber nichts Abspielbares
dabei herauskommt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-09-12 15:25:56 +02:00
co-authored by Claude Opus 5
parent 562fd758d5
commit a9563be1e1
6 changed files with 120 additions and 11 deletions
+2 -1
View File
@@ -231,7 +231,8 @@ struct LiveTVView: View {
title: channel.title,
mediaIndex: 0,
startTime: .zero,
streamURL: stream
streamURL: stream,
liveSubscriptionKey: result.subscriptionKey
)
}
}
+7
View File
@@ -386,6 +386,13 @@ final class PlayerModel {
await server.stopTranscode(sessionIdentifier: transcodeSession)
}
// Und bei Live-TV den Tuner freigeben. Er ist ein Stück Hardware:
// vier Stück gibt es, und ein nicht freigegebener fehlt beim nächsten
// Einschalten — bis der Server von selbst merkt, dass niemand zusieht.
if let subscription = request.liveSubscriptionKey, let server {
await server.endLiveSession(subscriptionKey: subscription)
}
engine?.teardown()
engine = nil
}