Start · Sprachen · JavaScript · Referenz · VTTRegion.id

VTTRegion.id

Eigenschaft

Liest oder setzt einen String, der eine WebVTT-Region eindeutig kennzeichnet. Cues verweisen über diesen Bezeichner auf die Region.

seit JavaScript Eingeschränkt: Firefox und Safari; Chrome/Edge nic Kategorie: webapi

Signatur

VTTRegion.id

Beschreibung

Die Eigenschaft id des Interfaces VTTRegion ist ein String, der eine Region für Untertitel eindeutig benennt. Eine Region ist ein Teilbereich des Videobilds, in dem Cues angezeigt werden – zum Beispiel ein Bereich unten links, in dem die Zeilen nach oben weiterlaufen (Roll-up-Untertitel).

In einer WebVTT-Datei legt ein REGION-Block die Region an, etwa mit der Zeile id:sprecher1. Einzelne Cues verweisen dann mit der Cue-Einstellung region:sprecher1 auf diese Region. Die Eigenschaft id enthält genau diesen Bezeichner. Nach dem Parsen können Sie damit Regionen im Skript wiedererkennen und zuordnen.

Wenn Sie eine Region mit new VTTRegion() selbst erzeugen, ist id zunächst ein leerer String. Sie können einen beliebigen String zuweisen. Für die Zuordnung per Skript braucht es die id nicht, denn dort weisen Sie das Region-Objekt direkt über VTTCue.region zu. Die id hilft aber beim Debuggen, beim Serialisieren und beim Wiederfinden von Regionen.

Rückgabewert

Typ
string
Beschreibung
Der Bezeichner der Region. Standardwert ist der leere String "". Die Eigenschaft ist les- und schreibbar.

Beispiele

Region per Skript anlegen und benennen

const video = document.querySelector('video');
const track = video.addTextTrack('subtitles', 'Deutsch', 'de');
track.mode = 'showing';

if ('VTTRegion' in window) {
  const region = new VTTRegion();
  console.log(JSON.stringify(region.id)); // Standardwert

  region.id = 'sprecher-links';
  region.width = 40;          // Prozent der Videobreite
  region.lines = 3;
  region.scroll = 'up';

  const cue = new VTTCue(0, 5, 'Hallo, willkommen!');
  cue.region = region;
  track.addCue(cue);

  console.log(cue.region.id);
} else {
  console.warn('VTTRegion wird in diesem Browser nicht unterstützt.');
}
"" sprecher-links

Regionen aus einer WebVTT-Datei auslesen

// untertitel.vtt:
// WEBVTT
//
// REGION
// id:fred
// width:40%
// lines:3
// regionanchor:0%,100%
// viewportanchor:10%,90%
// scroll:up
//
// 00:00:00.000 --> 00:00:04.000 region:fred align:left
// Hallo, ich bin Fred.

const trackEl = document.querySelector('track');

trackEl.addEventListener('load', () => {
  for (const cue of trackEl.track.cues) {
    const regionId = cue.region?.id ?? '(keine Region)';
    console.log(`${cue.startTime}s: "${cue.text}" → ${regionId}`);
  }
});
0s: "Hallo, ich bin Fred." → fred

Cues nach Region gruppieren

const groupByRegion = (textTrack) => {
  const groups = new Map();
  for (const cue of textTrack.cues ?? []) {
    const key = cue.region?.id || 'standard';
    if (!groups.has(key)) groups.set(key, []);
    groups.get(key).push(cue.text);
  }
  return groups;
};

const video = document.querySelector('video');
const textTrack = video.textTracks[0];
textTrack.mode = 'hidden'; // Cues laden, ohne sie anzuzeigen
console.log(groupByRegion(textTrack));
Map(2) { 'fred' => [...], 'bill' => [...] }

// Wichtig · Fallstricke

  • Browser-Unterstützung: VTTRegion gibt es in Firefox und Safari. Chromium-Browser (Chrome, Edge) unterstützen es standardmäßig nicht oder nur teilweise. Prüfen Sie die Unterstützung vorher mit 'VTTRegion' in window.
  • Keine Eindeutigkeitsprüfung: Der Browser prüft nicht, ob eine per Skript gesetzte id eindeutig ist. Wer mehrere Regionen gleich benennt, verwechselt sie beim späteren Auslesen leicht.
  • Verknüpfung per Objekt, nicht per String: Wenn Sie id nachträglich ändern, bleibt ein Cue trotzdem mit seiner Region verbunden. VTTCue.region verweist auf das Objekt selbst, nicht auf den Namen.
  • In WebVTT-Dateien darf die id keine Leerzeichen und keine Zeichenfolge --> enthalten. Sonst wird die Einstellung ignoriert.
  • Cues sind erst verfügbar, wenn der Track geladen ist, also nach dem load-Event des <track>-Elements. Außerdem muss mode auf 'hidden' oder 'showing' stehen. Vorher ist cue.region nicht zugänglich.