TTML in CSV umwandeln
Oder Untertiteltext einfügen
Was diese Konvertierung ändert
3 Sachen entfallen oder brauchen eine Entscheidung
- Formatierung
die gesamte Formatierung (Fett, Kursiv, Farbe, Kontur, Schatten)
- Positionierung
die Positionierung auf dem Bildschirm (jeder Block kehrt an die Standardposition zurück)
- 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 CSV um. Ziehen Sie eine Datei hinein oder fügen Sie den Text ein — Sie erhalten die CSV-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: Formatierung, Positionierung und formatspezifische Inhalte haben in CSV 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 CSV
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
start,end,text
00:00:01.000,00:00:03.500,Hello <i>there</i>.
00:00:03.500,00:00:06.000,"How are you?
Fine, thanks."
In diesem Ergebnis geht verloren: Formatierung, Positionierung 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 & Jerry.</p>
</div>
</body>
</tt>
Ausgabe
start,end,text
00:00:01.500,00:00:03.500,Loaded from an offset and a duration.
00:00:04.000,00:00:06.500,A coarser clock spelling.
00:00:07.000,00:00:08.480,"Frames, at 25fps."
00:00:09.000,00:00:11.000,"<font color=""#FF0000"">Half-open</font> and Tom & 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
Bleiben Fett und Kursiv beim Umwandeln von TTML nach CSV erhalten?
Die Betonung bleibt, die Stiltabelle nicht. Fett, kursiv, unterstrichen und eine Farbe werden als <i>, <b>, <u> und <font color="…"> in die CSV-Textzelle geschrieben. Was verloren geht, ist die globale Festlegung der TTML-Datei: Schrift, Größe, Kontur, Schatten und Ränder.
Was geschieht mit der Bildschirmposition beim Weg von TTML nach CSV?
Sie fällt weg. Ein <p region="bottom"> verweist auf eine Region mit tts:origin und tts:extent; CSV hat keine Spalte dafür, also bleibt nur der Text. Der Bericht führt die Positionierung als verloren.
Was geschieht mit dem TTML-Prolog und seinen Tabellen <styling> und <layout> in CSV?
Sie werden nicht übertragen. Die XML-Deklaration, die Namensräume, die Stiltabelle (tts:color, tts:fontWeight) und die Regionentabelle (tts:origin, tts:extent) sind Dokumentstruktur; CSV speichert Zeilen mit start, end und text. Alles davon zählt als formatspezifischer Inhalt.
Wie sieht die CSV-Datei aus, die aus TTML entsteht?
Die Kopfzeile lautet start,end,text, danach folgt eine Zeile pro Untertitel. begin 00:00:01.000 und end 00:00:03.500 werden unverändert zu 00:00:01.000 und 00:00:03.500; mehrzeiliger Text steht in Anführungszeichen.
Sind die TTML-Zeiten in der CSV-Datei exakt?
Ja. TTML und CSV rechnen beide in Millisekunden, deshalb wird nichts gerundet: Aus 00:00:04.126 bleibt 00:00:04.126. Ein Verlust an Genauigkeit entsteht auf diesem Weg nicht.
Kann ich die CSV-Datei zurück nach TTML umwandeln?
Ja, und diese Richtung kostet nichts: Eine CSV-Datei enthält weniger, als TTML ausdrücken kann, also geht auf dem Rückweg nichts weiter verloren. Was auf dem Hinweg verloren ging, bleibt allerdings verloren — Stile und Regionen lassen sich aus einer CSV nicht rekonstruieren.
Ordnet die Umwandlung TTML-Untertitel für CSV?
Ja, nach Startzeit, früheste zuerst. TTML erlaubt beliebige Dokumentreihenfolge, CSV erwartet Abspielreihenfolge. Der Text bleibt unangetastet, nur die Zeilen werden sortiert.