Zum Inhalt springen

Interaktive Transkriptfunktion

VidPly verfügt über eine leistungsstarke interaktive Transkript-Funktion, die Videountertitel in einem eigenen Fenster anzeigt, sodass Nutzer den Text mitlesen, darin suchen und zu bestimmten Stellen im Video springen können.

VidPly Logo

Funktionen

  • Automatisches Scrollen – Das Transkript hebt die aktuelle Zeile automatisch hervor und scrollt dorthin
  • Klicken zum Springen – Klicken Sie auf eine beliebige Zeile des Transkripts, um zu diesem Moment im Video zu springen
  • Verschiebbares Fenster – Positionieren Sie das Transkript an einer beliebigen Stelle auf dem Bildschirm (nur Desktop)
  • Fenstergröße anpassen – Passen Sie die Größe des Transkriptfensters mit der Maus oder der Tastatur an
  • Tastatur-Ziehmodus – Verwenden Sie die Pfeiltasten, um das Transkriptfenster zu verschieben (Taste „D“ zum Umschalten)
  • Tastatur-Größenänderungsmodus – Verwenden Sie die Pfeiltasten, um die Größe des Transkriptfensters anzupassen (Taste „R“ zum Umschalten)
  • Einstellungsmenü – Konfigurieren Sie die Zieh- und Größenänderungsmodi
  • Mobilgeräte-Optimierung – Passt sich mit optimiertem Layout an mobile Bildschirme (< 768 px) an
  • Vollbildunterstützung – Das Transkript wird im Vollbildmodus intelligent neu positioniert
  • Suchen & Lesen – Ideal für Barrierefreiheit und das Erlernen von Sprachen

Schnellstart

Transkript aktivieren

 
<video data-vidply data-transcript="true" data-transcript-button="true">
  <source src="video.mp4" type="video/mp4">
  <track kind="captions" src="captions.vtt" srclang="en" label="English">
</video>

<script type="module">
  import Player from './dist/prod/vidply.esm.min.js';
</script>
 

Das war’s schon! Die Transkript-Schaltfläche erscheint in der Steuerleiste.

Konfigurationsoptionen

Über JavaScript

 
const player = new Player('#video', {
  transcript: true,              // Enable transcript feature
  transcriptButton: true,        // Show transcript button in controls
  transcriptPosition: 'external' // Position mode (currently only 'external')
});
 

Über Datenattribute

 
<video 
  data-vidply
  data-transcript="true"
  data-transcript-button="true"
  src="video.mp4"
>
  <track kind="captions" src="captions.vtt" srclang="en" label="English">
</video>
 

So funktioniert es

Die Transkriptionsfunktion führt automatisch folgende Schritte durch:

  1. Untertitel-Spuren in Ihrem Video erkennt
  2. Lädt den VTT-Cue-Text (WebVTT)
  3. Erstellt ein interaktives, scrollbares Fenster
  4. hebt die aktuelle Zeile entsprechend der Wiedergabezeit des Videos hervor
  5. scrollt automatisch, damit die aktuelle Zeile sichtbar bleibt

API-Methoden

Transkript anzeigen/ausblenden

 
const player = new Player('#video', {
  transcript: true,
  transcriptButton: true
});

// Show transcript window
player.transcriptManager.showTranscript();

// Hide transcript window
player.transcriptManager.hideTranscript();

// Toggle transcript visibility
player.transcriptManager.toggleTranscript();
 

Status prüfen

 
// Check if transcript is visible
if (player.transcriptManager.isVisible) {
  console.log('Transcript is showing');
}
 

Programmgesteuerte Steuerung

 
// Get transcript entries
console.log(player.transcriptManager.transcriptEntries);

// Get current active entry
console.log(player.transcriptManager.currentActiveEntry);
 

Benutzerinteraktion

Zum Suchen anklicken

Benutzer können auf eine beliebige Zeile des Transkripts klicken, um zu diesem Zeitpunkt zu springen:

 
// This happens automatically, but you can listen for it
player.on('timeupdate', (time) => {
  console.log('User jumped to:', time);
});
 

Ziehen und Größe ändern (Desktop)

Auf dem Desktop (>= 768px) können Benutzer:

Ziehmodus:

  • D-Taste – Tastatur-Ziehmodus umschalten
  • Pfeiltasten – Fenster in 10-px-Schritten verschieben (Umschalt = 50 px)
  • Ziehen mit der Maus – Ziehen Sie die Kopfzeile des Transkripts, um die Position anzupassen
  • Home-Taste – Zur Mitte zurücksetzen
  • Esc-Taste – Drag-Modus beenden

Größenänderungsmodus:

  • R-Taste – Umschalten zwischen Tastatur-Größenanpassungsmodus
  • Pfeiltasten – Fenstergröße in 10-px-Schritten anpassen (Umschalt = 50 px)
  • Größenänderung mit der Maus – Zieh an den Griffen an den Fensterrändern, um die Größe zu ändern
  • Esc-Taste – Größenänderungsmodus beenden

Einstellungsmenü:

  • Klicken Sie auf das Einstellungssymbol (⚙️) in der Kopfzeile des Transkripts
  • Ziehmodus und Größenänderungsmodus umschalten
  • Das Transkriptfenster schließen

Verhalten auf Mobilgeräten

Auf mobilen Geräten (< 768px Breakpoint):

  • Das Transkript wird unterhalb des Videoplayers angezeigt
  • Im Dokumentfluss positioniert (kann nicht verschoben oder in der Größe angepasst werden)
  • Optimiert für das Scrollen und Lesen
  • Mindestbreite: 300px

Anzeigemodi

Desktop (nicht im Vollbildmodus)

  • Wird neben dem Videoplayer angezeigt
  • Kann an eine beliebige Position gezogen werden
  • Die Höhe passt sich der Höhe des Videos an

Vollbildmodus

  • Befindet sich in der rechten unteren Ecke
  • Schwebt über dem Video
  • Lässt Platz für die Steuerelemente

Mobil

  • Unterhalb des Videos und der Steuerelemente
  • Volle Breite
  • Maximale Höhe von 400px
  • Teil des Seitenflusses

Tastaturkürzel

Globale Tastenkombinationen (bei aktivem Player)

TasteAktion
TTranskriptfenster ein-/ausblenden
DZugriffsmodus umschalten (wenn Transkript sichtbar ist)
RGrößenänderungsmodus umschalten (wenn das Transkript sichtbar ist)

Ziehmodus (Taste „D“ – muss zuvor aktiviert werden)

TasteAktion
← → ↑ ↓Fenster verschieben (10px)
Umschalt + PfeiltasteFenster verschieben (50px)
HomeAuf mittlere Position zurücksetzen
EscZiehmodus beenden

Größenänderungsmodus (Taste „R“ – muss zuvor aktiviert werden)

TasteAktion
← →Breite anpassen (10px)
↑ ↓Höhe anpassen (10px)
Umschalt + PfeiltasteGröße anpassen (50px)
EscGrößenänderungsmodus beenden

Transkript-Einträge

TasteAktion
Eingabetaste / LeertasteZu dieser Zeit springen (wenn der Eintrag aktiv ist)
TabDurch die Einträge im Transkript navigieren

Gestaltung des Transkripts

Benutzerdefinierte Farben

 
/* Transcript window */
.vidply-transcript-window {
  background: rgba(20, 20, 30, 0.95);
  border: 1px solid rgba(255, 255, 255, 0.2);
}

/* Header */
.vidply-transcript-header {
  background: rgba(30, 30, 40, 0.95);
  border-bottom: 1px solid rgba(255, 255, 255, 0.1);
}

/* Transcript entries */
.vidply-transcript-entry {
  padding: 12px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.05);
}

/* Active entry */
.vidply-transcript-entry-active {
  background: rgba(59, 130, 246, 0.2);
  border-left: 3px solid #3b82f6;
}

/* Timestamp */
.vidply-transcript-time {
  color: #60a5fa;
  font-weight: 600;
}
 

Vollständiges Beispiel

 
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Transcript Example</title>
  <link rel="stylesheet" href="dist/vidply.min.css">
  
  <style>
    body {
      font-family: system-ui, sans-serif;
      padding: 20px;
      background: #111;
      color: #fff;
    }
    
    .container {
      max-width: 1200px;
      margin: 0 auto;
    }
    
    h1 {
      margin-bottom: 20px;
    }
    
    /* Custom transcript styling */
    .vidply-transcript-window {
      background: linear-gradient(135deg, rgba(30, 30, 50, 0.98), rgba(20, 20, 40, 0.98));
      backdrop-filter: blur(10px);
    }
    
    .vidply-transcript-entry-active {
      background: linear-gradient(90deg, rgba(139, 92, 246, 0.2), rgba(59, 130, 246, 0.2));
    }
  </style>
</head>
<body>
  <div class="container">
    <h1>Video with Interactive Transcript</h1>
    
    <video 
      id="my-video"
      data-vidply
      data-transcript="true"
      data-transcript-button="true"
      width="800" 
      height="450"
    >
      <source src="video.mp4" type="video/mp4">
      <track kind="captions" src="captions-en.vtt" srclang="en" label="English" default>
      <track kind="captions" src="captions-es.vtt" srclang="es" label="Español">
    </video>
    
    <div style="margin-top: 20px;">
      <button id="toggleTranscript">Toggle Transcript</button>
    </div>
  </div>

  <script type="module">
    import Player from './dist/prod/vidply.esm.min.js';
    
    // Player is auto-initialized via data-vidply
    
    // Get player instance
    const videoElement = document.getElementById('my-video');
    const player = videoElement.vidply; // Player instance stored on the media element

    // Or find it manually
    const allPlayers = document.querySelectorAll('[data-vidply]');
    // const player = allPlayers[0].vidply;
    
    // Manual toggle button
    document.getElementById('toggleTranscript').addEventListener('click', () => {
      if (player && player.transcriptManager) {
        player.transcriptManager.toggleTranscript();
      }
    });
    
    // Listen for transcript interactions
    document.addEventListener('DOMContentLoaded', () => {
      // Wait a moment for player to initialize
      setTimeout(() => {
        const container = document.querySelector('.vidply-player');
        const video = container?.querySelector('video, audio');
        if (video && video.vidply) {
          const p = video.vidply;
          
          p.on('timeupdate', (time) => {
            // User can see which line is active
            if (p.transcriptManager && p.transcriptManager.currentActiveEntry) {
              console.log('Active transcript:', p.transcriptManager.currentActiveEntry.cue.text);
            }
          });
        }
      }, 1000);
    });
  </script>
</body>
</html>
 

Anwendungsfälle

1. Barrierefreiheit

  • Benutzer von Bildschirmleseprogrammen können den Transkripttext lesen
  • Gehörlose oder schwerhörige Nutzer erhalten uneingeschränkten Zugriff auf den Text
  • Nutzer in lauten Umgebungen können den Text lesen, anstatt zuzuhören

2. Sprachenlernen

  • Machen Sie mit den Muttersprachlern mit
  • Klicken Sie hier, um schwierige Abschnitte erneut abzuspielen
  • Lesen und hören Sie gleichzeitig

3. Suche & Navigation

  • Inhalte schnell überfliegen
  • Bestimmte Themen finden
  • Zu relevanten Abschnitten springen

4. Notizen machen

  • Genaue Zitate zitieren
  • Text für Zitate kopieren
  • Lernhilfe für Bildungsinhalte

5. SEO & Auffindbarkeit

  • Videoinhalte werden textdurchsuchbar
  • Bessere Indizierung für Barrierefreiheit
  • Verbesserte Auffindbarkeit von Inhalten

Anforderungen

Untertitel-Spur erforderlich

Für die Transkriptfunktion ist mindestens eine Untertitel-Spur erforderlich:

 
<track kind="captions" src="captions.vtt" srclang="en" label="English">
<!-- or -->
<track kind="subtitles" src="subtitles.vtt" srclang="en" label="English">
 

Hinweis: kind="descriptions" oder kind="chapters" Spuren werden NICHT für Transkripte verwendet.

Unterstützte Streaming-Formate

Plattform / FormatUntertitel-TypUnterstützung von Transkripten
HTML5 (MP4/WebM)WebVTTJa
HLS (.m3u8) — hls.js (Chrome / Firefox / Edge / Safari für Desktop)WebVTTJa (Cues werden schrittweise geladen, sobald Segmente gepuffert sind; Hls.Events.SUBTITLE_FRAG_PROCESSED wird erneut gesendet textcuesupdate)
HLS (.m3u8) — Natives HLS in Safari unter iOS / iPadOSWebVTT (über natives TextTrack API)Ja – VidPly bindet die nativen HLS-Untertitel des Browsers in das Untertitelmenü, das Transkriptfenster und das Qualitätsmenü ein
DASH (.mpd)WebVTTJa (die Cues werden schrittweise geladen, sobald die Segmente gepuffert sind)
DASH (.mpd)TTML / stppNein (TTML wird nativ von dash.js gerendert; die Transkript-Schaltfläche ist ausgeblendet)
 

iOS / iPadOS: Obwohl hls.js es auf iOS nicht ausgeführt werden kann (kein MSE), wartet VidPly auf addtrack / removetrack / loadedmetadata die native HTMLMediaElement.textTracks Erfassung und zeigt jede Untertitelvariante über dasselbe Untertitelmenü und dieselbe interaktive Transkriptanzeige an wie auf dem Desktop. Die Transkriptfunktion auf iOS funktioniert nun für Live- und adaptive HLS-Streams.

 

Bei DASH-Streams mit TTML-Untertiteln werden die Untertitel zwar von dash.js auf dem Bildschirm angezeigt, das interaktive Transkript ist jedoch nicht verfügbar. Wenn Sie Transkriptunterstützung bei DASH benötigen, verwenden Sie WebVTT-Untertitel-Spuren.

WebVTT-Format

Untertitel müssen im WebVTT-Format vorliegen:

 
WEBVTT

00:00:00.000 --> 00:00:05.000
Welcome to this video tutorial.

00:00:05.000 --> 00:00:10.000
Today we'll learn about VidPly's transcript feature.

00:00:10.000 --> 00:00:15.000
It's a powerful tool for accessibility and learning.
 

Browser-Unterstützung

Die Transkriptfunktion funktioniert in allen modernen Browsern:

  • Chrome/Edge 90+
  • Firefox 88+
  • Safari 14+
  • Mobile Browser (iOS Safari, Chrome Android)

Fehlerbehebung

Schaltfläche „Untertitel“ wird nicht angezeigt

Ursache: Es wurden keine Untertitel-Spuren erkannt

Lösung:

 
<!-- Add at least one caption track -->
<track kind="captions" src="captions.vtt" srclang="en" label="English">
 

Das Transkript zeigt „Wird geladen...“ an

Ursache: Das Laden der VTT-Datei dauert lange oder der Pfad ist falsch

Lösungen:

  1. Überprüfen Sie, ob der Dateipfad korrekt ist
  2. Überprüfen Sie die CORS-Header, wenn das Laden von einer anderen Domain erfolgt
  3. Überprüfen Sie, ob das VTT-Dateiformat gültig ist

Transkript lässt sich auf Mobilgeräten nicht verschieben

Erwartet: Auf Mobilgeräten (< 768 px) ist das Transkript NICHT verschiebbar. Es wird im Seitenfluss unterhalb des Videos positioniert.

Transkript scrollt nicht automatisch

Ursache: JavaScript-Fehler oder Untertitelspur nicht im hidden Modus

Lösung: Überprüfen Sie die Browserkonsole auf Fehler. Der Transkript-Manager setzt den Track-Modus automatisch auf hidden.

Erweitert: Externer Transkript-Container

Sie können das Transkript in einem benutzerdefinierten Container darstellen (zukünftige Funktion):

 
const player = new Player('#video', {
  transcript: true,
  transcriptPosition: 'external',
  transcriptContainer: '#my-transcript-container'
});
 
<div id="my-transcript-container"></div>
 

Hinweis: Diese Funktion ist teilweise implementiert. Derzeit wird das Transkript immer neben oder unterhalb des Videos angezeigt.

Hinweise zur Leistung

  • Transkript-Einträge werden bei Bedarf erstellt, wenn das Transkript zum ersten Mal angezeigt wird
  • Das automatische Scrollen nutzt effiziente scrollIntoView; das smooth Verhalten wird automatisch übersprungen, wenn der Nutzer prefers-reduced-motion aktiviert hat (WCAG 2.2 SC 2.3.3)
  • Ereignis-Listener werden bereinigt, wenn das Transkript entfernt wird (registriert über eine player-spezifische AbortController)
  • Keine Auswirkungen auf die Leistung, wenn das Transkript nicht sichtbar ist

Barrierefreiheitsfunktionen

Tastaturzugänglichkeit – Vollständige Tastaturnavigation
ARIA-Labels – Korrekte „role“- und „aria-label“-Attribute
Fokusverwaltung – Logische Fokusreihenfolge mit einer Fokusfalle, solange das Fenster geöffnet ist; beim Schließen
kehrt der Fokus zum Umschaltelement zurück Screenreader-freundlich – Semantische HTML-Struktur
Hoher Kontrast – Berücksichtigt die Farbeinstellungen
des Systems Reduzierte Bewegung – Automatisches Scrollen berücksichtigt prefers-reduced-motion
Touch-freundlich – Touch-Ziele entsprechen mindestens der WCAG 2.2 AA-Anforderung von 24×24 CSS-Pixeln (SC 2.5.8)

Bewährte Vorgehensweisen

  1. Stellen Sie immer Beschriftungen bereit – Selbst automatisch generierte Beschriftungen sind besser als gar keine
  2. Verwenden Sie beschreibende Bezeichnungen – Helfen Sie den Nutzern, die Sprachen der Titel zu identifizieren
  3. Auf Mobilgeräten testen – Stellen Sie sicher, dass das Transkript auf kleinen Bildschirmen lesbar ist
  4. Positionierung berücksichtigen – Das Transkript neben dem Video funktioniert auf dem Desktop gut
  5. Stilistisch einheitlich gestalten – Passen Sie den Stil an das Design Ihrer Website an und achten Sie dabei auf gute Lesbarkeit

Demo

Sehen Sie sich funktionierende Beispiele an:

  • demo/demo.html – Grundlegende Verwendung von Transkripten
  • demo/sign-language-demo.html - Transkript mit Gebärdensprache-Video

Erstellt mit Vanilla JavaScript von Matthias Peltzer

Seite teilen