Zum Hauptinhalt springen
SubtitleMatrix

TTML in LRC umwandeln

Oder Untertiteltext einfügen

Was diese Konvertierung ändert

5 Sachen entfallen oder brauchen eine Entscheidung

  • Zeitangaben

    die Endzeiten der Untertitelblöcke (das Ausgabeformat zeichnet nur auf, wann ein Block beginnt)

  • Formatierung

    die gesamte Formatierung (Fett, Kursiv, Farbe, Kontur, Schatten)

  • Positionierung

    die Positionierung auf dem Bildschirm (jeder Block kehrt an die Standardposition zurück)

  • Genauigkeit

    Zeitgenauigkeit — die Uhr der Ausgabe ist gröber, jeder Zeitstempel wird also auf die nächsten 10 ms gerundet

  • Formatspezifischer Inhalt

    Inhalt, den das Quellformat außerhalb seiner Blöcke führt (Nicht-Block-Abschnitte, Kopftext, Einstellungen pro Block, auskommentierte Ereignisse) — das Zielformat hat keinen Platz dafür

Diese Liste stammt aus der Fähigkeitsmatrix für diese beiden Formate, nicht aus der konkreten Datei, die Sie geladen haben. Eine bestimmte Datei kann mehr verlieren, wenn sie Merkmale nutzt, die das Format erlaubt, die Matrix aber nicht modelliert.

Diese Seite wandelt TTML in LRC um. Ziehen Sie eine Datei hinein oder fügen Sie den Text ein — Sie erhalten die LRC-Fassung zurück. Die Umwandlung läuft vollständig in Ihrem Browser: kein Upload, keine Anmeldung.

Beide Formate speichern nicht dasselbe, und der Unterschied ist nicht kosmetisch: das Timing, die Formatierung, die Positionierung, die Genauigkeit und formatspezifische Inhalte haben in LRC keinen Platz. Die Liste oben stammt daraus, was die beiden Formate jeweils ausdrücken können, nicht aus Ihrer Datei; sie gilt also schon, bevor Sie etwas laden.

Eine Datei ist kein Problem, eine ganze Staffel auch nicht: Die Warteschlange arbeitet sie der Reihe nach ab und liefert alle Ergebnisse in einem einzigen ZIP.

Beispiele

Eine typische TTML-Datei, umgewandelt in LRC

Eingabe

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling" xml:lang="en">
  <head>
    <styling>
      <style xml:id="s1" tts:color="#FFFF00" tts:fontWeight="bold"/>
    </styling>
    <layout>
      <region xml:id="bottom" tts:origin="10% 80%" tts:extent="80% 20%"/>
    </layout>
  </head>
  <body>
    <div>
      <p begin="00:00:01.000" end="00:00:03.500" region="bottom" style="s1">Hello <span tts:fontStyle="italic">there</span>.</p>
      <p begin="00:00:03.500" end="00:00:06.000" region="bottom">How are you?<br/>Fine, thanks.</p>
    </div>
  </body>
</tt>

Ausgabe

[00:01.00]Hello there.
[00:03.50]How are you?
[00:03.50]Fine, thanks.

In diesem Ergebnis geht verloren: das Timing, die Formatierung, die Positionierung, die Genauigkeit und formatspezifische Inhalte. Alles andere bleibt Zeile für Zeile gleich.

Dieselbe Umwandlung mit einer unordentlichen Eingabe

Eingabe

<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling"
    xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
    ttp:frameRate="25" xml:lang="en">
  <body>
    <div>
      <p begin="1.5s" dur="2s">Loaded from an offset and a duration.</p>
      <p begin="4s" end="00:00:06.50">A coarser clock spelling.</p>
      <p begin="00:00:07:00" end="00:00:08:12">Frames, at 25fps.</p>
      <p begin="9s"><span tts:color="#FF0000">Half-open</span> and Tom &amp; Jerry.</p>
    </div>
  </body>
</tt>

Ausgabe

[00:01.50]Loaded from an offset and a duration.
[00:04.00]A coarser clock spelling.
[00:07.00]Frames, at 25fps.
[00:09.00]Half-open and Tom &amp; Jerry.

So sehen echte Dateien aus: gemischte Zeilenenden, verirrte Leerzeichen, leere Felder. Vergleichen Sie das mit dem sauberen Beispiel oben, dann sehen Sie, was der Parser verzeiht.

Häufige Fragen

Was geschieht mit der Endzeit eines TTML-Untertitels beim Weg nach LRC?

Sie fällt weg. LRC kennt nur eine Startmarke pro Zeile; <p begin="00:00:04.126" end="00:00:06.000"> wird zu [00:04.12]…, und das Ende steht nirgends mehr. Ein Liedtext-Player zeigt die Zeile bis zur nächsten Marke.

Was geschieht mit Fett, Kursiv und Farbe beim Umwandeln von TTML nach LRC?

Alles davon geht verloren. Ein <span tts:fontStyle="italic"> oder ein benannter Stil mit tts:color hat in LRC keinen Platz; LRC speichert nur Zeitstempel und Text, die Schrift bestimmt der Player.

Was geschieht mit der Bildschirmposition beim Weg von TTML nach LRC?

Sie fällt weg. Eine TTML-Region mit tts:origin und tts:extent beschreibt, wo der Text steht; LRC hat kein Konzept dafür und überlässt die Anzeige dem Player. Der Bericht führt die Positionierung als verloren.

Warum haben sich die Zeitstempel beim Umwandeln von TTML nach LRC verschoben?

LRC schreibt Hundertstelsekunden, TTML Millisekunden. Aus begin 00:00:04.126 wird [00:04.12] — 6 ms früher. Diese Rundung meldet der Verlustbericht unter Genauigkeit, zusätzlich zum Timing, weil LRC keine Enden speichert.

Was geschieht mit dem TTML-Prolog und seinen Tabellen <styling> und <layout> in LRC?

Sie werden nicht übernommen. Die XML-Deklaration, die Namensräume, benannte Stile mit tts:color oder tts:fontWeight und Regionen mit tts:origin haben in einer LRC-Datei keinen Ort. Sie zählen als formatspezifischer Inhalt.

Wie sieht die LRC-Datei aus, die aus TTML entsteht?

Eine Folge aus eckigem Zeitstempel und Textzeile, etwa [00:01.00]Hallo …; jedes <p> wird ein Eintrag mit der Startmarke. Ein <br/> im <p> wird zu einem Umbruch innerhalb desselben LRC-Eintrags.

Kann ich die LRC-Datei zurück nach TTML umwandeln?

Ja, und LRC nach TTML verliert das Timing — LRC hat keine Endzeiten, TTML braucht begin und end. Die Rückrichtung muss das Ende aus der nächsten Marke ableiten und kann die ursprüngliche Genauigkeit der TTML-Datei nicht wiederherstellen.

In welcher Kodierung wird das LRC-Ergebnis aus der TTML-Datei geschrieben?

UTF-8 mit Unix-Zeilenenden und ohne Byte-Order-Mark, unabhängig von der TTML-Quelle. Beim Einlesen erkannte Altkodierungen werden im Ergebnispanel genannt.

Verwandte Werkzeuge