Konwerter napisów MicroDVD na SMI
Albo wklej tekst napisów
Opcje
W jakiej liczbie klatek na sekundę liczone są czasy. Na stronach formatów tego wymaga MicroDVD, bo zapisuje czasy jako numery klatek. Na stronach poświęconych liczbie klatek jest to stawka, według której zgrany był plik — wersja, dla której powstały napisy — a drugie pole na stronie przyjmuje liczbę klatek wideo, z którym napisy będą używane. Najczęstsze wartości to 23,976, 24, 25, 29,97, 30, 50, 59,94 i 60. Pomyłka przesuwa całą oś czasu, a na stronach poświęconych liczbie klatek przesuwa ją o współczynnik, a nie o stałą wartość.
Co zmienia ta konwersja
1 rzecz zostaje pominięta albo wymaga decyzji
- Liczba klatek
źródło zapisuje czasy jako numery klatek — każdy znacznik czasu zależy od podanej liczby klatek na sekundę
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 zapisuje napisy jako sekwencję bloków `SYNC`: każdy ustawia moment i podmienia zawartość ekranu. MicroDVD podaje numery klatek, więc konwersja przelicza je przez liczbę klatek na sekundę i tworzy blok startowy oraz blok czyszczący po zakończeniu napisu.
Fps pochodzi z pola na stronie, potem z deklaracji w pierwszej linii pliku, a na końcu przyjmowane jest 25. Po każdym napisie powstaje wpis `<P> `, bo SAMI nie zna czasu trwania — ekran trzeba wyczyścić kolejnym `SYNC`. Pionowa kreska `|` zamienia się na `<br>`, czyli złamanie wiersza SAMI.
Numery klatek nie trafiają do wyniku, bo SAMI myśli milisekundami. Konwersja działa w przeglądarce i nie wysyła pliku na żaden serwer.
Przykłady
Typowy plik MicroDVD po konwersji na SMI
Wejście
{1}{1}25
{100}{150}The quick brown fox jumps over the lazy dog.
{200}{260}Faster than|the last one.
Wynik
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=4000>
<P>The quick brown fox jumps over the lazy dog.
<SYNC Start=6000>
<P>
<SYNC Start=8000>
<P>Faster than<br>the last one.
<SYNC Start=10400>
<P>
</BODY>
</SAMI>
W tym wyniku ginie liczba klatek: bloki SYNC dostały czasy w milisekundach, a klatki zniknęły.
Ta sama konwersja na nierównym pliku wejściowym
Wejście
{1}{1}23.976
{0100}{0150}Leading zeros in the frame numbers.
[INFORMATION]
{300}{340}An unrecognized line above was kept in place.
{400}{450}Trailing spaces are kept.
Wynik
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=4000>
<P>Leading zeros in the frame numbers.
<SYNC Start=6000>
<P>
<SYNC Start=12000>
<P>An unrecognized line above was kept in place.
<SYNC Start=13600>
<P>
<SYNC Start=16000>
<P>Trailing spaces are kept.
<SYNC Start=18000>
<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
Który fps jest używany przy odczycie MicroDVD przed zapisem do SMI?
Najpierw wartość z pola na stronie, potem deklaracja w pierwszej linii pliku, na końcu 25. SAMI nie przechowuje liczby klatek, więc przeliczenie musi się odbyć podczas konwersji. Błędna wartość przesuwa wszystkie bloki `SYNC` proporcjonalnie do długości materiału.
Jak wygląda SMI powstałe z pliku MicroDVD?
To dokument `<SAMI>` z sekcjami `<HEAD>` i `<BODY>`. Każdy napis to `<SYNC Start=…>` i element `<P>` z tekstem, a po nim `<P> ` czyszczący ekran. Czasy są w milisekundach, a numerów klatek nie ma.
Jak dwuwierszowy blok MicroDVD wychodzi w SMI?
Jako dwie linie w jednym elemencie `P`, rozdzielone `<br>`. SAMI używa tego znacznika do twardego złamania wiersza, więc kreska `|` ze źródła zamienia się na `<br>`, a para pozostaje jednym napisem. Odtwarzacz pokaże obie linie razem.
Czy kolejność bloków MicroDVD zostaje w SMI?
Tak, po sortowaniu rosnąco według czasu rozpoczęcia. W SAMI kolejność `SYNC` dosłownie steruje tym, co widać, więc uporządkowanie jest konieczne. Plik źródłowy z klatkami poza porządkiem zostanie naprawiony, a treść i momenty pozostaną bez zmian.
Co ginie przy powrocie z SMI do MicroDVD?
Style, pozycjonowanie, liczba klatek i konstrukcje SAMI spoza modelu bloków, takie jak sekcja `STYLE` i wpisy czyszczące. MicroDVD nie potrafi ich zapisać i wymaga ponownego przeliczenia czasów na klatki. Zostaje tekst napisów oraz ich momenty.
Jakie kodowanie ma SMI powstałe z MicroDVD?
Plik wychodzi w UTF-8, z końcami wierszy LF i bez BOM. Źródło w UTF-16 lub w kodowaniu jednobajtowym Windows jest dekodowane podczas odczytu, o czym informuje panel wyniku. Polskie znaki są zapisane poprawnie, bo wynik zawsze korzysta z UTF-8.