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:
co-authored by
Claude Opus 5
parent
693a6cc867
commit
064f8f61af
@@ -873,6 +873,17 @@ final class PlayerModel {
|
||||
streamOffset = target.startOffset
|
||||
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.**
|
||||
//
|
||||
// AVPlayer entscheidet selbst, wie weit er puffert, und bei einer
|
||||
|
||||
Reference in New Issue
Block a user