Zwei Uhren, und niemand hatte sie verglichen
Untertitel zeigten auf keiner Spur Text. Der Grund: die Zeitstempel einer WebVTT-Spur zählen ab Dateianfang, der Strom zählt ab null. Wer bei Minute 30 einstieg, bekam jeden Satz dreissig Minuten in die Zukunft geschoben — und weil ein Strom nur bis zum Filmende reicht, erschien überhaupt keiner mehr. Gemessen im Spieler, vorher: „Fortsetzen ab 8:37" geklickt, deutsche Spur gewählt, Standanzeige 8:38 — angezeigt wurde der Satz von Sekunde 0. Versatz 515 Sekunden, also genau der Einstiegspunkt. Nachher, derselbe Weg: Standanzeige 9:02, angezeigt „Deutsch bei 540 s". Verschoben wird auf dem Server, nicht im Browser: dort hiesse es, die Spur selbst zu zerlegen und als VTTCue neu aufzubauen — ein eigener Parser für ein Format, das der Browser schon kann. Hier ist es eine Zeilenersetzung, und sie lässt sich prüfen. Was vor dem Einstieg endet, fällt samt Text weg; was darüber hinwegreicht, fängt bei null an. Zwei Kleinigkeiten lagen daneben und sind mit erledigt: - `srclang` bekam „ger".slice(0, 2) und damit „ge" — kein gültiges Kürzel. Jetzt bleibt das Feld leer, wenn das Kürzel nicht zweistellig ist. - Scheiterte das Laden einer Spur, geschah nichts Sichtbares. Jetzt sagt es der Spieler. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
57fff63516
commit
51d1db4641
+10
-2
@@ -661,8 +661,16 @@ export const stromStarten = (datei: string, wunsch: Stromwunsch) =>
|
||||
export const stromBeenden = (sitzung: string) =>
|
||||
anfrage<void>(`/stream/${sitzung}`, { method: 'DELETE' });
|
||||
|
||||
export const untertitelAdresse = (datei: string, spur: number) =>
|
||||
`/api/v1/files/${datei}/subtitles/${spur}.vtt`;
|
||||
/** Die Untertitelspur als WebVTT, passend zur Zeitachse des Stroms.
|
||||
*
|
||||
* **`vorlauf` ist nicht geschmückt, sondern nötig.** Die Zeitstempel in der
|
||||
* Datei zählen ab Filmanfang, der Strom zählt ab null. Ohne diesen Wert lägen
|
||||
* beim Einstieg in Minute 30 alle Einblendungen dreissig Minuten in der
|
||||
* Zukunft — und weil der Strom nur bis zum Filmende reicht, käme kein
|
||||
* einziger Satz mehr. */
|
||||
export const untertitelAdresse = (datei: string, spur: number, vorlauf = 0) =>
|
||||
`/api/v1/files/${datei}/subtitles/${spur}.vtt`
|
||||
+ (vorlauf > 0 ? `?ab=${vorlauf.toFixed(3)}` : '');
|
||||
|
||||
/* ---------- Verwaltung ---------- */
|
||||
|
||||
|
||||
Reference in New Issue
Block a user