Konwerter napisów LRC na ASS
Albo wklej tekst napisów
Opcje
Używane, gdy źródło nie ma czasów końca (zwykły tekst, LRC). Oś czasu w wyniku jest tu generowana, a nie konwertowana, więc dostajesz dokładnie tę liczbę.
Co zmienia ta konwersja
1 rzecz zostaje pominięta albo wymaga decyzji
- Czasy
czasy końca bloków — źródło ich nie zapisuje, więc czasy w wyniku zostaną wygenerowane, a nie skonwertowane
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.
ASS przechowuje napisy jako zdarzenia z warstwą, stylem i dwoma czasami. LRC zna tylko czas rozpoczęcia, więc przy konwersji brakujący koniec powstaje z początku następnego wiersza, a ostatni wiersz dostaje długość z pola na stronie. Bez tego ASS nie miałby czym zamknąć zdarzenia.
Wiersze dzielące jeden znacznik — zwykle oryginał i tłumaczenie — stają się jednym zdarzeniem `Dialogue`. Obie linie rozdziela `N`, czyli twarde złamanie wiersza w ASS, więc para zostaje razem i odtwarzacz pokazuje ją jako jeden napis.
Tytuł z nagłówka `[ti:…]` trafia do sekcji `[Script Info]`, natomiast wykonawca nie ma tam odpowiednika i jest zgłaszany jako strata. Przesunięcie `[offset:…]` jest odczytywane, ale nie doliczane do czasów. Konwersja działa w przeglądarce, bez wysyłania plików.
Przykłady
Typowy plik LRC po konwersji na ASS
Wejście
[ti:Sample Song]
[ar:Some Artist]
[length:00:41.00]
[offset:+250]
[00:12.00]First line of the song.
[00:15.30]Second line.
[00:15.30]Second line, translated.
[00:18.00]
[00:21.50]Final line.Wynik
[Script Info]
Title: Sample Song
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:12.00,0:00:15.30,Default,,0,0,0,,First line of the song.
Dialogue: 0,0:00:15.30,0:00:18.00,Default,,0,0,0,,Second line.\NSecond line, translated.
Dialogue: 0,0:00:18.00,0:00:21.50,Default,,0,0,0,,
Dialogue: 0,0:00:21.50,0:00:23.50,Default,,0,0,0,,Final line.
W tym wyniku ginie timing: LRC nie zapisał końców, więc ASS dostał je z kolejnych wierszy.
Ta sama konwersja na nierównym pliku wejściowym
Wejście
[ar:Some Artist]
[0:05.5]Leading zero omitted, one decimal.
[00:07]Second with no centiseconds.
[00:03.00]Out of order.
[00:07.00][00:09.00]Repeated chorus line.
[00:12.00]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:03.00,0:00:05.50,Default,,0,0,0,,Out of order.
Dialogue: 0,0:00:05.50,0:00:07.00,Default,,0,0,0,,Leading zero omitted, one decimal.
Dialogue: 0,0:00:07.00,0:00:09.00,Default,,0,0,0,,Second with no centiseconds.\NRepeated chorus line.
Dialogue: 0,0:00:09.00,0:00:12.00,Default,,0,0,0,,Repeated chorus line.
Dialogue: 0,0:00:12.00,0:00:14.00,Default,,0,0,0,,
Takie uszkodzenia ma wiele prawdziwych plików: mieszane końce wierszy, zbłąkane spacje, puste pola. Porównaj to z czystym przykładem powyżej, żeby zobaczyć, co parser wybacza.
Częste pytania
Jak LRC wyznacza koniec wiersza przy zapisie do ASS?
Korzysta z początku następnego wiersza, bo sam nigdy nie zapisał końca. ASS wymaga pary czasów w każdym zdarzeniu `Dialogue`, więc ta reguła jest jedynym sposobem, żeby zachować oryginalne odstępy między wersami. Ostatni wiersz dostaje długość z pola na stronie, a raport to odnotowuje.
Jak wygląda plik ASS powstały z LRC?
Ma sekcje `[Script Info]`, `[V4+ Styles]` i `[Events]`. Każdy wiersz LRC staje się zdarzeniem `Dialogue` z warstwą, stylem `Default` i tekstem. Numerów bloków nie ma — w ASS ich rolę przejmuje pole warstwy, a kolejność wyznaczają czasy.
Jak dwuwierszowy blok LRC wygląda w ASS?
Jako jedno zdarzenie `Dialogue`, w którym dwie linie rozdziela `N`. To twarde złamanie wiersza znane ASS i SSA. Para z LRC pozostaje więc jednym napisem, a odtwarzacz wyświetla obie linie jednocześnie, zamiast traktować je jako dwa niezależne zdarzenia.
Czy kolejność bloków z LRC zostaje w ASS?
Tak, ale przed zapisem bloki są sortowane według czasu rozpoczęcia. ASS i jego odtwarzacze zakładają porządek chronologiczny, więc plik LRC z wierszami poza kolejnością zostanie uporządkowany. Zmienia się struktura pliku, nie treść ani przypisane czasy.
Co tracę, wracając z ASS do LRC?
Timing, style, pozycjonowanie, karaoke oraz konstrukcje spoza modelu bloków, czyli sekcję `[Script Info]`, osadzone fonty i grafiki oraz zdarzenia `Comment:`. LRC nie potrafi ich zapisać. Zostaje tekst i początek każdego wiersza, więc powrót nie odtworzy wyglądu ani końców.
Jakie kodowanie ma ASS powstały z LRC?
Wyjście jest zawsze w UTF-8, z końcami wierszy LF i bez BOM, nawet jeśli LRC przyszedł w UTF-16 albo w kodowaniu jednobajtowym. Dekodowanie wejścia odbywa się po drodze i panel wyniku mówi o tym, gdy to nastąpi. Nie ma opcji zachowania starego kodowania.