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
|
// „automatisch" — wer eine Stufe gewählt hatte, sah nie, wie
|
||||||
// weit geladen ist.
|
// weit geladen ist.
|
||||||
self.refreshBuffered()
|
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.
|
// Geregelt wird dagegen nur, wo es etwas zu regeln gibt.
|
||||||
guard self.quality == .automatic else { continue }
|
guard self.quality == .automatic else { continue }
|
||||||
|
|||||||
@@ -85,6 +85,23 @@ public final class AVPlayerEngine: VideoPlayerEngine {
|
|||||||
|
|
||||||
public init() {
|
public init() {
|
||||||
AudioSession.activate()
|
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) {
|
public func load(_ source: PlaybackSource) async throws(PlaybackFailure) {
|
||||||
|
|||||||
Reference in New Issue
Block a user