Konwerter napisów SRT na ASS
Albo wklej tekst napisów
Co zmienia ta konwersja
1 rzecz zostaje pominięta albo wymaga decyzji
- Dokładność
dokładność czasów — zegar wyniku jest grubszy, więc każdy znacznik czasu jest zaokrąglany do najbliższych 10 ms
Ta lista pochodzi z macierzy możliwości tych dwóch formatów, a nie z konkretnego wczytanego pliku. Konkretny plik może stracić więcej, jeśli używa cech, które format dopuszcza, ale macierz ich nie modeluje.
Ta strona przepisuje plik SRT na skrypt Advanced SubStation Alpha. Oba formaty inaczej rozumieją, czym są napisy: SRT to lista bloków ze znacznikami czasu, a ASS to skrypt z nagłówkiem, tabelą stylów i listą linii Dialogue. Każdy blok staje się więc jedną linią Dialogue, wskazującą na jeden styl, a czasy są zapisywane po ASS-owemu: 0:00:01.00 zamiast 00:00:01,000, bo ASS liczy setne części sekundy, a SRT milisekundy.
Formatowanie jest tłumaczone, a nie wklejane. Fragment kursywy staje się kodem przesłony włączanym na początku i wyłączanym na końcu, tak samo pogrubienie. Podział wiersza w bloku staje się kodem \N, więc dwie linie zostają dwiema liniami w jednym zdarzeniu, zamiast stawać się dwoma blokami, które przypadkiem leżą obok siebie. Czego SRT nie umie powiedzieć — czcionki, pozycji, obwódki — nie jest wymyślane za Ciebie: dostajesz czysty skrypt z jednym użytecznym stylem, gotowy do ostylowania w dowolnym edytorze ASS.
Jeden plik albo cały sezon, bez zgadywania fps (oba formaty liczą czas zegarowy) i bez wysyłania czegokolwiek z komputera.
Przykłady
Typowy plik SRT przekonwertowany na ASS
Wejście
1
00:00:01,000 --> 00:00:03,500
Hello there.
2
00:00:03,500 --> 00:00:06,000
<i>Whispering</i> now.
And a second line.
3
00:00:06,000 --> 00:00:09,250
<b>Bold</b> statement.
Wynik
[Script Info]
ScriptType: v4.00+
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:03.50,Default,,0,0,0,,Hello there.
Dialogue: 0,0:00:03.50,0:00:06.00,Default,,0,0,0,,{\i1}Whispering{\i0} now.\NAnd a second line.
Dialogue: 0,0:00:06.00,0:00:09.25,Default,,0,0,0,,{\b1}Bold{\b0} statement.
W tym wyjściu ginie: precyzja. Reszta zgadza się linia po linii.
Ta sama konwersja na zniszczonym wejściu
Wejście
1
0:00:01,00 --> 0:00:03,500
<B>Bold</B> and <I>italic</I>.
2
00:00:03,500 --> 00:00:06,000
3
00:00:08,000 --> 00:00:09,000
Last one.
Wynik
[Script Info]
ScriptType: v4.00+
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Dialogue: 0,0:00:01.00,0:00:03.50,Default,,0,0,0,,{\b1}Bold{\b0} and {\i1}italic{\i0}.
Dialogue: 0,0:00:03.50,0:00:06.00,Default,,0,0,0,,
Dialogue: 0,0:00:08.00,0:00:09.00,Default,,0,0,0,,Last one.
To typowe uszkodzenia prawdziwych plików — mieszane końce wierszy, zbłąkane spacje, puste pola. Porównaj z czystym przykładem powyżej, żeby zobaczyć, co parser wybacza.
Częste pytania
Dlaczego konwersja SRT na ASS dodaje tabelę stylów, o którą nie prosiłem?
Bo ASS nie zna bloku bez stylu. Każda linia Dialogue wskazuje na styl, więc skrypt musi zadeklarować co najmniej jeden. Konwerter tworzy jeden styl Default — Arial 20, biały tekst z ciemną obwódką — i kieruje do niego każdą linię. Zmiana tego jednego wiersza w nagłówku zmienia cały plik, a SRT nie ma odpowiednika takiej tabeli.
Co oznacza liczba po kropce w znaczniku czasu ASS?
Setne części sekundy. ASS zapisuje czas co 10 ms, więc początek 00:00:01,250 z SRT wychodzi jako 0:00:01.25. To najdrobniejsza rozdzielczość tego formatu; SRT liczy do milisekundy, więc ostatnia cyfra jest zaokrąglana — to jedyna strata w tym kierunku.
Jak przechodzą kursywa i pogrubienie z SRT do ASS?
Jako prawdziwe stylowanie ASS. Fragment kursywy dostaje kod przesłony {\i1} na początku i {\i0} na końcu, pogrubienie odpowiednio {\b1} i {\b0}. Edytor ASS pokaże je jako styl, a nie jako resztki znaczników; SRT trzyma je w tekście, więc w pliku źródłowym są dosłownymi tagami.
Czy twardy podział wiersza w bloku SRT zostaje w pliku ASS?
Tak, jako kod \N. Dwie linie w jednym bloku SRT zostają dwiema liniami w jednym zdarzeniu Dialogue, więc czas drugiej linii to nadal czas całego bloku. W SRT podział jest zwykłym znakiem nowej linii w tekście, w ASS musi być jawnym kodem.
Czy wyjście nadal pasuje do tego samego wideo?
Tak. Nic tu nie przesuwa ani nie skaluje czasu: pierwszy blok zaczyna się w tym samym momencie, ostatni kończy w tym samym. Zmienia się tylko otoczka wokół słów — nagłówek, tabela stylów i zapis czasu w setnych, podczas gdy SRT zapisuje pełne milisekundy.