Konwerter napisów LRC na SSA
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.
SSA i LRC opisują napisy inaczej: SSA ma zdarzenia `Dialogue` z czasem początku i końca, a LRC tylko znacznik rozpoczęcia i tekst. Konwersja uzupełnia więc koniec z początku następnego wiersza, a ostatniemu wierszowi nadaje długość z pola pod obszarem pliku.
Wspólny znacznik w LRC oznacza wiersze, które mają się pojawić razem. W SSA stają się jednym zdarzeniem, a obie linie rozdziela `N` — twarde złamanie wiersza tego formatu. Dzięki temu tłumaczenie nie rozpada się na dwa niezależne napisy.
Tytuł z nagłówka trafia do `[Script Info]`, wykonawca jest zgłaszany jako strata, a `[offset:…]` pozostaje odczytany bez zastosowania. Plik wynikowy ma sekcję `[V4 Styles]` i pole `Marked` w miejscu, w którym SRT trzyma numer bloku. Całość działa lokalnie.
Przykłady
Typowy plik LRC po konwersji na SSA
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, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1
[Events]
Format: Marked, 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: SSA dostał końce wyliczone z następnych wierszy LRC.
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, TertiaryColour, BackColour, Bold, Italic, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, AlphaLevel, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,1,2,2,2,10,10,10,0,1
[Events]
Format: Marked, 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
Skąd SSA bierze koniec wiersza LRC?
Z początku kolejnego wiersza, ponieważ LRC nie przechowuje końców. Każde zdarzenie `Dialogue` w SSA musi mieć parę czasów, więc parser wylicza ją z sąsiedztwa. Ostatni wiersz nie ma następcy i otrzymuje długość ustawioną na stronie, co raport pokazuje jako wartość wygenerowaną.
Jak wygląda SSA powstałe z pliku LRC?
Plik ma nagłówek `[Script Info]`, sekcję `[V4 Styles]` ze stylem `Default` i sekcję `[Events]`. Każdy wiersz źródłowy to jedna linia `Dialogue` z polem `Marked`, którego SRT nie ma. Liczba zdarzeń odpowiada liczbie bloków LRC, a nie liczbie pojedynczych linii tekstu.
Jak dwuwierszowy blok LRC wychodzi w SSA?
Jako dwie linie w jednym zdarzeniu `Dialogue`, rozdzielone `N`. SSA używa tego samego twardego złamania wiersza co ASS, więc para oryginał–tłumaczenie zachowuje przynależność do jednego napisu. Odtwarzacz pokaże obie linie naraz.
Czy kolejność bloków LRC zostaje zachowana w SSA?
Tak, po uporządkowaniu rosnąco według czasu startu. SSA czyta zdarzenia w kolejności zapisu, a odtwarzacze oczekują porządku chronologicznego. Jeśli LRC miał wiersze pomieszane, wynik je posortuje — zmienia się układ pliku, ale nie treść ani wartości czasów.
Co ginie przy powrocie z SSA do LRC?
Timing, style, pozycjonowanie, karaoke i konstrukcje specyficzne dla SSA. LRC nie ma sekcji stylów ani pól pozycji, a przede wszystkim nie zapisuje końców. Po powrocie zostają same początki i tekst, więc wygląd oraz długość wyświetlania trzeba by odtworzyć od nowa.
Jakie kodowanie ma SSA powstałe z LRC?
Wyjście to UTF-8 z końcami wierszy LF i bez BOM, niezależnie od kodowania pliku LRC. Jeśli wejście było w UTF-16 lub w kodowaniu jednobajtowym Windows, zostanie zdekodowane, a panel wyniku to zaznaczy. Format wyjściowy jest za każdym razem identyczny.