Untertitel kommen aus der Datei, und Fortsetzen geht wieder

Im Spurenblatt stand „CC" und sonst nichts — derselbe Fehler wie beim Ton:
das ist AVFoundations Name für den einen Untertitel, den ein umgerechneter
Stream mitbringt. Zur Auswahl steht jetzt, was in der Datei liegt, und die
Nummer geht als `subtitleStreamIndex` mit in die Anfrage.

`-1` heisst dabei ausdrücklich „keine". Das ist nicht dasselbe wie nichts zu
schicken: dann sucht der Server sich einen aus, und es steht plötzlich ein
Untertitel im Bild, den niemand bestellt hat.

Und der Klick ins Bild: Anhalten ging, Fortsetzen nicht. Der Abdunkler
hinter der Bedienung deckt das ganze Fenster ab und lag über dem Film —
solange die Bedienung zu sehen war, landete jeder Klick auf ihm. Auffallen
konnte das nur an einer Stelle: nach dem Pausieren bleibt die Bedienung
stehen, also traf der Klick, der wieder starten sollte, nie das Bild. Der
Abdunkler ist jetzt unantastbar; er dunkelt ab, mehr nicht.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
Scarriffle
2026-09-28 19:14:07 +02:00
co-authored by Claude Opus 5
parent 60194c2d2a
commit 67c679006f
6 changed files with 140 additions and 11 deletions
@@ -27,6 +27,16 @@ public struct PlaybackIntent: Sendable, Equatable {
/// zweite ankommt. Genau daran scheiterte die Sprachwahl bisher: sie lief
/// auf einer Liste mit einem Eintrag.
public let audioStreamIndex: Int?
/// Welcher Untertitel eingebrannt oder mitgeliefert werden soll.
///
/// Dieselbe Lage wie beim Ton: rechnet der Server um, liefert er genau
/// den einen aus, für den er sich entschieden hat. Wer erst im Player
/// wählen will, hat dann nichts mehr zur Auswahl.
///
/// **`-1` heisst ausdrücklich „keine".** Nicht dasselbe wie `nil`: das
/// hiesse „such dir was aus", und der Server sucht sich dann durchaus
/// etwas aus.
public let subtitleStreamIndex: Int?
public init(
itemID: String,
@@ -35,7 +45,8 @@ public struct PlaybackIntent: Sendable, Equatable {
transcode: TranscodeSettings? = nil,
startTime: Duration = .zero,
isLocalConnection: Bool = false,
audioStreamIndex: Int? = nil
audioStreamIndex: Int? = nil,
subtitleStreamIndex: Int? = nil
) {
self.itemID = itemID
self.versionIndex = versionIndex
@@ -44,6 +55,7 @@ public struct PlaybackIntent: Sendable, Equatable {
self.startTime = startTime
self.isLocalConnection = isLocalConnection
self.audioStreamIndex = audioStreamIndex
self.subtitleStreamIndex = subtitleStreamIndex
}
}