Deutsch

Video & Untertitel · Untertitel-Toolkit

Warum eine Untertiteldatei in VLC abgespielt wird, im HTML5-Track-Element jedoch ein Fehler auftritt

· Wie es funktioniert

Untertitel webvtt Browser-Verarbeitung

Eine Untertiteldatei, die zwei Parser erreicht, wobei der milde Parser jeden Hinweis anzeigt und der strenge Parser die Lücken anzeigt, in denen Hinweise gelöscht wurden
Original-ToolAcre-Vektorillustration

Desktop-Player sind nachsichtig; Das Track-Element des Browsers ist es nicht. In diesem Beitrag wird erklärt, wie der HTML5-Untertitelparser eine WebVTT-Datei liest, welche Fehler er stillschweigend löscht und wie man eine Datei vorbereitet, die beide akzeptiert.

Dieselbe Datei funktioniert in VLC und zeigt nichts auf der Webseite – zwei Parser, zwei Toleranzebenen

Eine Untertiteldatei, die in einem Desktop-Player korrekt abgespielt wird und auf einer Webseite nichts anzeigt, hat sich zwischen beiden nicht geändert. Was sich geändert hat, ist, wie viel Toleranz der Leser mitbringt. Desktop-Player sind so konzipiert, dass sie alles anzeigen, was ein Benutzer auf sie zieht, sodass sie raten, reparieren und überspringen können. Das HTML5-Track-Element implementiert eine Spezifikation, und eine Spezifikation, die Vermutungen akzeptiert, wäre keine solche.

Der Unterschied ist in beiden Fällen kein Fehler. Es handelt sich um zwei Designs mit unterschiedlichen Verpflichtungen, und die praktische Konsequenz ist, dass der Desktop-Player ein schlechter Test dafür ist, ob eine Datei im Web funktioniert.

Wie das Track-Element eine Untertiteldatei lädt – die Anfrage, der MIME-Typ, CORS für Cross-Origin-Tracks und die WEBVTT-Header-Prüfung

Das Track-Element ruft die Untertiteldatei als normale Ressource ab, was bedeutet, dass es denselben Regeln unterliegt wie jede andere Anfrage. Sie muss mit dem WebVTT-Medientyp bereitgestellt werden und eine Datei, die als einfacher Text bereitgestellt wird, wird unabhängig von ihrem Inhalt abgelehnt. Ein auf einem anderen Ursprung gehosteter Track benötigt Cross-Origin-Header und das Cross-Origin-Attribut für das Videoelement. Ohne diese schlägt der Abruf fehl, bevor eine Analyse erfolgt.

Dann folgt die Headerprüfung. Eine WebVTT-Datei muss mit der WEBVTT-Signatur beginnen, optional mit vorangestellter Byte-Reihenfolgemarkierung, und eine Datei ohne diese ist keine WebVTT-Datei. Dies ist der häufigste Grund dafür, dass eine SRT-Datei, die in eine VTT-Erweiterung umbenannt wurde, nichts anzeigt: Durch das Umbenennen wurde die Erweiterung und nicht die erste Zeile geändert.

Cue-by-Cue-Analyse – was der Browser mit einem fehlerhaften Timecode oder einer unerwarteten Zeile macht und warum der Fehler stumm bleibt

Das Parsen nach diesem Punkt erfolgt Cue für Cue, und der Fehlermodus macht es verwirrend. Ein Block, den der Parser nicht lesen kann, wird verworfen und das Parsen wird fortgesetzt. Es gibt keine Ausnahme, keinen Konsolenfehler und keine visuelle Anzeige; Der Hinweis erscheint einfach nie. Eine Datei mit vier von neunhundert fehlerhaften Timecodes wird nahezu perfekt abgespielt, mit vier Momenten der Stille, die eher wie eine fehlende Übersetzung als wie ein Formatfehler aussehen.

Aus diesem Grund wird das Symptom normalerweise als intermittierend gemeldet. Daran ist nichts unregelmäßig. Dieselben Hinweise schlagen jedes Mal fehl, aber da die umgebenden Hinweise funktionieren, sieht die Datei im Großen und Ganzen funktionsfähig aus und der Fehler wird dem Inhalt und nicht der Analyse zugeschrieben.

Nachsicht bei Desktop-Playern – warum VLC und andere Dateien akzeptieren, die technisch ungültig sind

Desktop-Spieler nehmen bewusst die gegenteilige Position ein. Sie akzeptieren beide Millisekunden-Trennzeichen, tolerieren fehlende Indexzeilen, leiten das Format aus dem Inhalt statt aus der Erweiterung ab, reparieren die Reihenfolge und überspringen, was sie nicht ohne Beanstandung verwenden können. Ein Benutzer, der eine Datei auf einen Player zieht, möchte, dass der Film Untertitel und keinen Validierungsbericht hat.

Der Toolkit-Parser folgt der gleichen nachsichtigen Tradition bei der Eingabe und akzeptiert optionale Stunden, entweder Trennzeichen und Dateien, deren Blöcke unregelmäßig sind. Der Unterschied besteht darin, was es anschließend tut: Es zeichnet jeden tolerierten Fehler als lokalisiertes Problem auf und schreibt eine kanonische Form zurück, anstatt die akzeptierte Unregelmäßigkeit beizubehalten.

Bearbeitetes Beispiel: eine Datei mit drei häufigen Fehlern – testen Sie sie in einem Browser und sehen Sie, welche Hinweise verschwinden

Nehmen Sie eine Datei mit drei Fehlern: Ihr fehlt der WEBVTT-Header, ein Cue hat ein Sekundenfeld von fünfundsiebzig und ein Cue endet, bevor er beginnt. In einem Desktop-Player wird die Datei abgespielt, die unmöglichen Sekunden werden repariert oder stillschweigend übersprungen und der umgekehrte Hinweis blinkt oder wird gelöscht. Der Betrachter sieht Untertitel.

Im Track-Element beendet der fehlende Header es sofort; Es wird kein einziger Hinweis angezeigt, da die Datei nie als WebVTT akzeptiert wurde. Wenn Sie die Kopfzeile hinzufügen, ändert sich das Bild: Die meisten Hinweise werden angezeigt, der Hinweis mit 75 Sekunden wird beim Parsen verworfen und der umgekehrte Hinweis wird analysiert, aber nie angezeigt, da er keine Anzeigedauer hat. Die Validierung benennt beide, bevor Sie die Seite laden, und meldet den unmöglichen Timecode sowie den Cue, der endet, bevor er beginnt, jeweils nach Nummer.

Was hiervon nicht abgedeckt wird – Styling mit ::cue, Positionierungseinstellungen und Live-Untertitel

Hier geht es darum, ob Cues geladen werden, nicht wie sie aussehen. Das Styling durch das Cue-Pseudoelement, Positionierungs- und Ausrichtungseinstellungen auf der Timecode-Zeile, Regionsdefinitionen und vertikaler Text sind allesamt separate Anliegen, die erst dann von Bedeutung sind, wenn die Datei analysiert wird. Eine Datei, die nichts anzeigt, stellt kein Styling-Problem dar und kann durch Styling nicht behoben werden.

Live- und Streaming-Untertitel fallen ebenfalls nicht darunter. Segmentierte Untertiteltitel, die zusammen mit adaptiven Streams bereitgestellt werden, verfügen über ein eigenes Bereitstellungsmodell und erreichen den Player nicht über eine statische Datei, die von einem Titelelement geladen wird.

Takeaway: Bereiten Sie sich auf den strengsten Parser vor – wie die Konvertierung und Bereinigung des Subtitle Toolkits eine Datei erzeugt, die das Track-Element akzeptiert

Bereiten Sie sich auf den strengsten Parser vor und nicht auf den nachsichtigsten, denn der strikte Parser ist derjenige, den Ihre Zielgruppe verwendet. Konvertieren Sie ordnungsgemäß in WebVTT, sodass die Signaturzeile geschrieben und nicht angenommen wird, stellen Sie sie mit dem richtigen Medientyp bereit und fügen Sie ursprungsübergreifende Header hinzu, wenn sich die Datei auf einem anderen Host befindet.

Führen Sie die Konvertierung durch und lesen Sie die gemeldeten Probleme vor dem Versand. Der Konverter schreibt kanonische Zeitstempel mit dem Trennzeichen, das das Format erfordert, nummeriert Cues fortlaufend neu und meldet die Fehler, die er tolerieren musste, also die Liste der Cues, die in einem Browser stillschweigend verschwunden wären. Laden Sie dann die Seite neu und vergleichen Sie die Anzahl der Hinweise mit der Quelle, anstatt darauf zu vertrauen, dass Untertitel angezeigt werden.