Przejdź do treści
SubtitleMatrix

Konwerter napisów LRC na SMI

Konwersja formatówTekst piosenki (LRC)
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>&nbsp;`, 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>&nbsp;
<SYNC Start=15300>
<P>Second line.<br>Second line, translated.
<SYNC Start=18000>
<P>&nbsp;
<SYNC Start=18000>
<P>
<SYNC Start=21500>
<P>&nbsp;
<SYNC Start=21500>
<P>Final line.
<SYNC Start=23500>
<P>&nbsp;
</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>&nbsp;
<SYNC Start=5500>
<P>Leading zero omitted, one decimal.
<SYNC Start=7000>
<P>&nbsp;
<SYNC Start=7000>
<P>Second with no centiseconds.<br>Repeated chorus line.
<SYNC Start=9000>
<P>&nbsp;
<SYNC Start=9000>
<P>Repeated chorus line.
<SYNC Start=12000>
<P>&nbsp;
<SYNC Start=12000>
<P>
<SYNC Start=14000>
<P>&nbsp;
</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>&nbsp;`.

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>&nbsp;` 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.

Powiązane narzędzia