Eine wachsende Abspielliste hat keine Länge, also kam nie eine

Mein letzter Versuch griff an der falschen Stelle: er verbesserte, was
`durationResolved` einträgt — nur kommt dieses Ereignis bei einem Strom
aus Flaro gar nicht. Die Abspielliste wächst und trägt kein
`EXT-X-ENDLIST`; für AVPlayer ist die Dauer damit unbestimmt.

`duration` blieb also auf nichts, und die Ansicht rechnet dann mit einer
Sekunde (`model.duration ?? .seconds(1)`). Darum stand der Regler bei
1:50:07 am Anschlag, egal was noch kam.

Jetzt wird die Länge gesetzt, sobald der Strom steht — aus der Datei, die
der Spieler ohnehin in der Hand hat. Auf den Player zu warten hiesse, auf
etwas zu warten, das er nicht wissen kann.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-10-10 20:50:44 +02:00
co-authored by Claude Opus 5
parent 693a6cc867
commit 064f8f61af
+11
View File
@@ -873,6 +873,17 @@ final class PlayerModel {
streamOffset = target.startOffset streamOffset = target.startOffset
streamEnd = nil streamEnd = nil
// **Die Länge kommt aus der Datei, nicht vom Player.**
//
// Eine wachsende Abspielliste hat für AVPlayer keine Länge — sie
// trägt kein `EXT-X-ENDLIST`, also bleibt die Dauer unbestimmt
// und `durationResolved` kommt nie. Ohne diese Zeile blieb
// `duration` auf nichts, und die Ansicht rechnet dann mit einer
// Sekunde: der Regler stand bei 1:50:07 am Anschlag.
if let bekannt = part.duration ?? item.duration {
duration = .milliseconds(bekannt)
}
// **Der Vorrat läuft voraus, nicht der Player.** // **Der Vorrat läuft voraus, nicht der Player.**
// //
// AVPlayer entscheidet selbst, wie weit er puffert, und bei einer // AVPlayer entscheidet selbst, wie weit er puffert, und bei einer