diff --git a/Flixy/Views/Player/PlayerModel.swift b/Flixy/Views/Player/PlayerModel.swift index 2e089af..cd14716 100644 --- a/Flixy/Views/Player/PlayerModel.swift +++ b/Flixy/Views/Player/PlayerModel.swift @@ -814,6 +814,11 @@ final class PlayerModel { // „automatisch" — wer eine Stufe gewählt hatte, sah nie, wie // weit geladen ist. self.refreshBuffered() + // **Noch einmal nachfassen.** Bei einer Abspielliste lädt + // AVFoundation die Nebenspuren nachträglich; meldet sie beim + // ersten Mal noch keine, ginge der bestellte Untertitel sonst + // verloren. Der Aufruf prüft selbst, ob es etwas zu tun gibt. + self.showOrderedSubtitle() // Geregelt wird dagegen nur, wo es etwas zu regeln gibt. guard self.quality == .automatic else { continue } diff --git a/Packages/FlixyKit/Sources/FlixyPlayback/Engine/AVPlayerEngine.swift b/Packages/FlixyKit/Sources/FlixyPlayback/Engine/AVPlayerEngine.swift index 030198c..fad508b 100644 --- a/Packages/FlixyKit/Sources/FlixyPlayback/Engine/AVPlayerEngine.swift +++ b/Packages/FlixyKit/Sources/FlixyPlayback/Engine/AVPlayerEngine.swift @@ -85,6 +85,23 @@ public final class AVPlayerEngine: VideoPlayerEngine { public init() { AudioSession.activate() + + // **AVPlayer wählt Untertitel sonst selbst — und schaltet sie ab.** + // + // Diese Eigenschaft steht von Haus aus auf `true`: der Player richtet + // sich dann nach den Untertiteleinstellungen des Systems. Die stehen + // in aller Regel auf „aus", und damit nimmt er jede Wahl, die wir + // treffen, wieder zurück — lautlos, und erst nachdem wir sie gesetzt + // haben. + // + // Zu sehen war das als „ich schalte Untertitel ein und sehe nichts": + // der Server lieferte sie, die Spur war im Stream, ausgewählt war sie + // auch, und angezeigt wurde trotzdem nichts. + // + // Beim Ton ändert das Abschalten nichts: welche Spur klingt, ist + // längst beim Aushandeln entschieden, und bei einem umgerechneten + // Stream kommt ohnehin nur eine an. + player.appliesMediaSelectionCriteriaAutomatically = false } public func load(_ source: PlaybackSource) async throws(PlaybackFailure) {