Konwerter napisów LRC na SMI
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.
SAMI buduje napisy z bloków `SYNC`: znacznik `Start` ustawia moment, a element `P` pod nim podaje tekst. LRC dostarcza tylko początki wierszy, więc konwersja musi wyliczyć końce — robi to, biorąc start następnego wiersza, a ostatniemu wierszowi dając długość z pola na stronie.
SAMI ma osobliwość: nowy `SYNC` zastępuje wszystko, co było na ekranie. Dlatego po każdym bloku z tekstem powstaje dodatkowy wpis `<P> `, który czyści ekran przed następnym napisem. Wiersze dzielące jeden znacznik trafiają do jednego bloku, a rozdziela je `<br>`.
Nagłówek LRC jest odczytywany, ale SAMI nie ma pól metadanych na tytuł i wykonawcę, więc trafiają one do raportu jako strata. Konwersja działa w przeglądarce i nie wysyła pliku na żaden serwer.
Przykłady
Typowy plik LRC po konwersji na SMI
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
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=12000>
<P>First line of the song.
<SYNC Start=15300>
<P>
<SYNC Start=15300>
<P>Second line.<br>Second line, translated.
<SYNC Start=18000>
<P>
<SYNC Start=18000>
<P>
<SYNC Start=21500>
<P>
<SYNC Start=21500>
<P>Final line.
<SYNC Start=23500>
<P>
</BODY>
</SAMI>
W tym wyniku ginie timing: każdy blok SYNC dostał koniec wyliczony z kolejnego wiersza 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
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=3000>
<P>Out of order.
<SYNC Start=5500>
<P>
<SYNC Start=5500>
<P>Leading zero omitted, one decimal.
<SYNC Start=7000>
<P>
<SYNC Start=7000>
<P>Second with no centiseconds.<br>Repeated chorus line.
<SYNC Start=9000>
<P>
<SYNC Start=9000>
<P>Repeated chorus line.
<SYNC Start=12000>
<P>
<SYNC Start=12000>
<P>
<SYNC Start=14000>
<P>
</BODY>
</SAMI>
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 bloku przy zapisie do SMI?
Z początku następnego wiersza. SAMI nie ma pola końca w samym bloku — koniec wynika z kolejnego `SYNC` — ale parser potrzebuje go, żeby wygenerować wpis czyszczący ekran. Ostatni wiersz dostaje długość z pola na stronie i również kończy się wpisem `<P> `.
Jak wygląda plik SMI powstały z LRC?
To dokument SAMI z nagłówkiem `<SAMI>`, sekcją `<HEAD>` ze stylem i sekcją `<BODY>`. Każdy napis to `<SYNC Start=…>` oraz `<P>` z tekstem, a po nim blok `<P> ` wygaszający ekran. Numerów bloków nie ma, a czasy są podane w milisekundach.
Jak dwuwierszowy blok LRC wychodzi w SMI?
Jako dwie linie w jednym elemencie `P`, rozdzielone `<br>`. SAMI używa tego znacznika do twardego złamania wiersza, więc oryginał i tłumaczenie pozostają jednym napisem. Odtwarzacz pokaże obie linie w tym samym momencie.
Czy kolejność bloków z LRC zostaje w SMI?
Tak, po posortowaniu rosnąco według czasu startu. W SAMI kolejność bloków `SYNC` wyznacza przebieg napisów, więc plik źródłowy z pomieszanymi wierszami zostanie naprawiony. To zmiana struktury, nie treści — czasy i tekst pozostają te same.
Co ginie przy powrocie z SMI do LRC?
Timing, style, pozycjonowanie, precyzja i konstrukcje SAMI spoza modelu bloków. LRC nie potrafi zapisać sekcji `STYLE` ani wpisów czyszczących, a końców i tak nie przechowuje. Zostaje tekst wierszy i ich początki, o ile mieszczą się w setnej sekundy.
Jakie kodowanie ma SMI powstałe z LRC?
UTF-8, końce wierszy LF, brak BOM — to stałe wyjście niezależne od wejścia. Plik LRC w UTF-16 lub w kodowaniu jednobajtowym jest dekodowany podczas odczytu, a panel wyniku sygnalizuje konwersję kodowania. Wynik zawsze jest czystym UTF-8.