AVPlayer hat die Untertitel wieder abgeschaltet
Der Server lieferte sie, die Spur lag im Stream, ausgewaehlt war sie auch — und angezeigt wurde trotzdem nichts. Der Grund ist eine Eigenschaft, die von Haus aus auf `true` steht: `appliesMediaSelectionCriteriaAutomatically`. Der Player richtet sich damit nach den Untertiteleinstellungen des Systems, und die stehen in aller Regel auf „aus\". Er nahm also jede Wahl, die wir trafen, wieder zurueck — lautlos, und erst nachdem wir sie gesetzt hatten. Beim Ton aendert das Abschalten nichts: welche Spur klingt, ist laengst beim Aushandeln entschieden, und bei einem umgerechneten Stream kommt ohnehin nur eine an. Dazu eine zweite Absicherung: bei einer Abspielliste laedt AVFoundation die Nebenspuren nachtraeglich. Meldet sie beim ersten Mal noch keine, ginge der bestellte Untertitel verloren — deshalb wird im Sekundentakt nachgefasst, solange nichts ausgewaehlt ist. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
cff0c06745
commit
5e33971452
@@ -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 }
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user