Zeilenenden umwandeln
Oder Untertiteltext einfügen
Optionen
Jede Zeile in der Datei endet entweder mit einem unsichtbaren Zeichen (LF) oder mit zwei (CRLF). Player, Editoren und Untertitelwerkzeuge lesen beide, das ist also fast nie der Grund, warum eine Untertiteldatei sich falsch verhält — die beiden Gründe sind eine Build-Pipeline oder ein strenger Parser, der das andere ablehnt, und ein Diff-Werkzeug, das jede einzelne Zeile als geändert zeigt, weil die Enden sich unterscheiden. LF ist hier standardmäßig die Wahl, weil Unix, macOS und das Web es verwenden und weil eine Datei, die es bereits hat, in Ruhe gelassen wird. CRLF umwandelt beide vorhandenen Arten, eine gemischte Datei kommt also einheitlich heraus.
In welcher Bildrate die Zeitangaben gezählt werden. Auf den Formatseiten ist das, was MicroDVD braucht, denn es speichert Zeitangaben als Bildnummern. Auf den Bildraten-Seiten ist es die Rate, gegen die die Datei getaktet wurde — die Fassung, für die die Untertitel erstellt wurden —, und das zweite Feld der Seite nimmt die Rate des Videos auf, mit dem Sie sie verwenden wollen. 23,976, 24, 25, 29,97, 30, 50, 59,94 und 60 sind die üblichen. Ein falscher Wert verschiebt die gesamte Zeitachse, und auf den Bildraten-Seiten verschiebt er sie um einen Faktor statt um einen festen Betrag.
Ein Zeilenende ist das Zeichen oder Zeichenpaar, das eine Zeile beendet, und im gewöhnlichen Gebrauch gibt es zwei davon. Unix-Systeme beenden eine Zeile mit einem Zeichen, LF; Windows beendet sie mit zweien, CR und danach LF. Auf dem Bildschirm sehen beide gleich aus, und Untertitel-Player lesen beide gleich, weshalb das eine dieser Unterschiede ist, die unsichtbar bleiben, bis eine nachgelagerte Stelle sich dafür interessiert.
Wer sich interessiert: Versionsverwaltung, in der jede Zeile geändert aussehen kann, weil sich die Enden geändert haben; Build-Skripte und Pipelines, die das letzte Zeichen einer Zeile abschneiden und einen übrig gebliebenen Wagenrücklauf behalten, wo sie einen Zeilenumbruch erwartet haben; Werkzeuge, die eine Datei an LF teilen und einen angehängten Wagenrücklauf am letzten Feld kleben haben; und jede Liefervorgabe, die eines der beiden nennt. Eine Untertiteldatei, die gegen eine andere verglichen oder mit einer anderen zusammengeführt werden soll, hat Zeilenenden, die zu ihrer Schnittstelle gehören.
Die Seite ist bewusst einheitlich in dem, was sie erzeugt. Eine Datei mit gemischten Enden – manche Zeilen CRLF, weil sie unter Windows bearbeitet wurde, manche LF, weil anderswo – kommt vollständig in dem gewählten Stil heraus, weil die Seite die Zeilenenden zuerst auf LF normalisiert und dann Ihre Wahl anwendet. Das ist nicht dasselbe wie das Umwandeln der bereits richtigen Enden und das Lassen des Rests: Es bedeutet, dass die Antwort auf „welcher Stil ist diese Datei“ nicht mehr davon abhängt, welche Zeile man ansieht – die einzige Form der Antwort, die einem Skript nützt.
Ein einzelner Wagenrücklauf, das Zeilenende eines Mac vor OS X, wird mit dem Rest behandelt. Niemand wählt es mehr, aber Dateien tauchen noch damit auf, und eine Datei, deren Zeilen so enden, ist für jedes Werkzeug, das nur nach LF sucht, eine einzige Zeile. Erst zu normalisieren heißt, dass solche Dateien richtig herauskommen statt als ein riesiger Block.
Die beiden Vorschaufenster sind der eine Ort in dieser Familie, an dem der Unterschied direkt sichtbar ist: Ein Zeilenende ist ein echtes Zeichen, und eine Datei mit doppelt wirkenden Zeilen in einem Betrachter, der sie nicht verbirgt, ist eine Datei mit CRLF. Alle zwölf Formate werden angenommen, weil ein Zeilenende eine Eigenschaft des Textes und nicht des Untertitelformats ist – ein schlichtes Transkript hat auch Zeilen. Nichts wird hochgeladen, die Datei wird im Browser gelesen, geändert und geschrieben.
Beispiele
Eine Unix-Datei in Windows-Zeilenenden umwandeln
Eingabe
1
00:00:01,000 --> 00:00:02,000
The room is dark.
2
00:00:03,000 --> 00:00:04,000
A cold night.
Ausgabe
1
00:00:01,000 --> 00:00:02,000
The room is dark.
2
00:00:03,000 --> 00:00:04,000
A cold night.
Jedes Zeilenende wird zwei Zeichen, auch die Leerzeile zwischen den Blöcken – diese Leerzeile ist ebenfalls ein Zeilenende, und eine Umwandlung, die sie überspränge, ließe eine Datei zurück, deren Blocktrenner noch ein einzelnes LF wäre. Der erwartete Text schreibt die Enden als CR-LF-Paare aus, damit die Anzahl direkt ablesbar ist, und sonst hat sich in der Datei nichts bewegt.
Eine Windows-Datei zurück in Unix-Zeilenenden wandeln
Eingabe
1
00:00:01,000 --> 00:00:02,000
The room is dark.
Ausgabe
1
00:00:01,000 --> 00:00:02,000
The room is dark.
Die Richtung mit der sichtbaren Folge. Eine Datei, die einen übrig gebliebenen Wagenrücklauf behält, erscheint in manchen Editoren mit einer Leerzeile nach jeder Zeile und in einer Shell-Pipeline als Wagenrücklauf am Ende des letzten Felds. Video, Zeiten und Text sind in beiden Dateien identisch; der Unterschied ist ein Zeichen am Ende jeder Zeile, und dies ist die Richtung, die es entfernt.
Eine auf zwei Rechnern bearbeitete Datei, vereinheitlicht
Eingabe
1
00:00:01,000 --> 00:00:02,000
Mixed endings.
2
00:00:03,000 --> 00:00:04,000
Second.
Ausgabe
1
00:00:01,000 --> 00:00:02,000
Mixed endings.
2
00:00:03,000 --> 00:00:04,000
Second.
Dieselbe Datei auf zwei Rechnern angefasst: Manche Zeilen enden CRLF, manche LF, und ein Blocktrenner ist auf beide Arten geschrieben. Die Ausgabe ist einheitlich, und das ist der Punkt – die Datei bedeutet nicht mehr je nach gelesener Zeile etwas anderes. Ein naives Suchen und Ersetzen bekommt diesen Fall in beiden Richtungen falsch: Es lässt in der einen Richtung die LF-Zeilen stehen und erzeugt in der anderen einen doppelten Wagenrücklauf.
Häufige Fragen
Wie sehe ich, welche Zeilenenden eine Untertiteldatei verwendet?
In den meisten Editoren zeigt die Statusleiste den Stil als LF, CRLF oder gemischt. In einer Shell zeigt eine Datei mit CRLF am Zeilenende einen abschließenden Wagenrücklauf, wenn man sie mit einem Werkzeug ansieht, das Steuerzeichen sichtbar macht. Der direkte Test sind die Bytes am Zeilenende: Ein einzelnes 0A ist LF, das Paar 0D 0A ist CRLF.
Was macht diese Seite mit einer Untertiteldatei mit gemischten Zeilenenden?
Sie macht alle gleich. Die Datei wird zuerst auf LF normalisiert und dann in den gewählten Stil umgewandelt; eine Datei, in der manche Zeilen so und manche anders enden, kommt also vollständig einheitlich heraus statt teilweise umgewandelt. Dateien geraten in diesen Zustand, wenn sie auf mehr als einem Rechner bearbeitet werden, und die Mischung ist genau das, was einen Vergleich mit einer anderen Kopie unlesbar macht.
Ändern Zeilenenden die Zeitangaben oder den Text der Blöcke?
Nein. Die Blöcke, ihre Nummern, ihre Start- und Endzeiten und die Wörter darin sind vorher und nachher identisch; geändert wird das eine oder die zwei Zeichen am Ende jeder Zeile. Ein Player liest beide Dateien gleich, weshalb dies eine Umwandlung ist, die man für eine Liefervorgabe vornehmen kann, ohne sich um die Untertitel selbst zu sorgen.
Sollte ich die Zeilenenden von Untertiteln auf LF oder CRLF umstellen?
Auf LF, sofern nichts vor Ihnen CRLF nennt. Unix-Werkzeuge, die meisten Build-Pipelines und die WebVTT-Spezifikation erwarten es, und die Datei wird pro Zeile ein Byte kürzer. Wählen Sie CRLF, wenn eine Liefervorgabe oder ein reines Windows-Werkzeug es verlangt, und beachten Sie, dass die Wahl pro Datei und nicht global gilt: Eine einzeln abgelieferte Untertiteldatei kann vom Rest des Projekts abweichen.
Warum ändert die Umwandlung nach CRLF auch die Leerzeile zwischen den Untertiteln?
Weil diese Leerzeile eine Zeile ist und ihr Ende ein Zeilenende wie jedes andere. SRT trennt Blöcke mit einer Leerzeile; eine nach CRLF umgewandelte Datei, deren Blocktrenner ein einzelnes LF bliebe, hätte mitten in einer einheitlichen Datei ein Zeilenende anderer Art – genau die Mischung, die diese Seite beseitigen soll. Dasselbe gilt für die letzte Zeile der Datei.
Werden alte Mac-Wagenrückläufe ebenfalls umgewandelt?
Ja. Eine Datei, deren Zeilen mit einem einzelnen Wagenrücklauf enden – dem Stil von Mac OS vor OS X –, wird mit allem anderen normalisiert und kommt deshalb im gewählten Stil heraus, statt als ein einziger langer Block zu bleiben. Für CR gibt es im Panel keine Option, weil niemand mehr so schreibt, aber Dateien, die es bereits sind, werden richtig gelesen und neu geschrieben.