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:
co-authored by
Claude Opus 5
parent
562fd758d5
commit
a9563be1e1
@@ -231,7 +231,8 @@ struct LiveTVView: View {
|
||||
title: channel.title,
|
||||
mediaIndex: 0,
|
||||
startTime: .zero,
|
||||
streamURL: stream
|
||||
streamURL: stream,
|
||||
liveSubscriptionKey: result.subscriptionKey
|
||||
)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user