Przejdź do treści
SubtitleMatrix

Konwerter napisów MicroDVD na SSA

Konwersja formatówMicroDVD (SUB)
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

2 rzeczy zostają pominięte albo wymagają decyzji

  • Liczba klatek

    źródło zapisuje czasy jako numery klatek — każdy znacznik czasu zależy od podanej liczby klatek na sekundę

  • Dokładność

    dokładność czasów — zegar wyniku jest grubszy, więc każdy znacznik czasu jest zaokrąglany do najbliższych 10 ms

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 MicroDVD mierzą czas inaczej: SSA w setnych częściach sekundy, MicroDVD w klatkach. Konwersja przelicza więc oba numery klatek przez fps, a następnie zaokrągla wynik do 10 ms, bo taką rozdzielczość ma pole czasu w SSA.

Fps wybiera się w kolejności: pole na stronie, deklaracja w pierwszej linii pliku, domyślne 25. Klatka 100 przy 25 fps to czwarta sekunda. Pionowa kreska `|` w tekście oznacza złamanie wiersza i w SSA staje się `N`, dzięki czemu dwuliniowy napis pozostaje jednym zdarzeniem.

Każdy blok trafia do `[Events]` jako `Dialogue` z polem `Marked` i stylem `Default`. Zaokrąglenie nie przesuwa napisu o więcej niż 5 ms, ale jest to jedyna strata precyzji w tej konwersji. Całość odbywa się w przeglądarce.

Przykłady

Typowy plik MicroDVD po konwersji na SSA

Wejście

{1}{1}25
{100}{150}The quick brown fox jumps over the lazy dog.
{200}{260}Faster than|the last one.

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:04.00,0:00:06.00,Default,,0,0,0,,The quick brown fox jumps over the lazy dog.
Dialogue: 0,0:00:08.00,0:00:10.40,Default,,0,0,0,,Faster than\Nthe last one.

W tym wyniku giną liczba klatek i precyzja: SSA liczy setne sekundy, więc czasy z klatek zostały zaokrąglone.

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

[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:04.00,0:00:06.00,Default,,0,0,0,,Leading zeros in the frame numbers.
Dialogue: 0,0:00:12.00,0:00:13.60,Default,,0,0,0,,An unrecognized line above was kept in place.
Dialogue: 0,0:00:16.00,0:00:18.00,Default,,0,0,0,,Trailing spaces are kept.   

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

Jaka liczba klatek obowiązuje przy odczycie MicroDVD przed zapisem do SSA?

Pole na stronie ma pierwszeństwo, potem liczy się deklaracja z pierwszej linii pliku, a gdy jej brak — 25. SSA przechowuje czas, nie klatki, więc fps jest potrzebne wyłącznie w momencie konwersji. Warto je sprawdzić, bo pliki `.sub` często pisano z myślą o PAL i deklaracja 25 bywa myląca.

Dlaczego czasy w SSA różnią się od tych z MicroDVD?

SSA zapisuje `0:00:04.13`, czyli setne sekundy, a MicroDVD operuje numerami klatek. Po przeliczeniu każdy moment jest zaokrąglany do najbliższych 10 ms, co daje maksymalne przesunięcie 5 ms. Kolejność i długość napisów pozostają niezmienione; różnica jest wyłącznie w rozdzielczości czasu.

Jak wygląda SSA powstałe z pliku MicroDVD?

Plik ma `[Script Info]`, `[V4 Styles]` i `[Events]`. Każdy napis to `Dialogue` z polem `Marked` w miejscu, gdzie SRT trzyma numer bloku. Style są zapisane w osobnej sekcji, a tekst zdarzenia zawiera właściwe linie napisu.

Jak dwuwierszowy blok MicroDVD wychodzi w SSA?

Jako dwie linie w jednym `Dialogue`, rozdzielone `N`. To twarde złamanie wiersza SSA, więc odtwarzacz pokaże obie części naraz. Kreska `|` ze źródła znika, a jej funkcję przejmuje znacznik formatu docelowego.

Czy kolejność bloków MicroDVD zostaje w SSA?

Tak, po posortowaniu rosnąco według czasu startu. SSA czyta zdarzenia po kolei i nie ma numerów bloków, które mogłyby wymusić inny porządek. Jeśli źródło miało klatki pomieszane, wynik zostanie uporządkowany — to świadoma normalizacja, nie zmiana treści.

Co ginie przy powrocie z SSA do MicroDVD?

Style, pozycjonowanie, karaoke, liczba klatek i konstrukcje specyficzne dla SSA. MicroDVD nie ma sekcji stylów ani pól pozycji, a czasy trzeba by ponownie przeliczyć na klatki, których SSA nie zapisuje. Zostaje tekst i momenty wyrażone w sekundach.

Jakie kodowanie ma SSA powstałe z MicroDVD?

Wyjście to UTF-8 z końcami LF i bez BOM. Jeśli plik `.sub` był w UTF-16 lub w jednobajtowym kodowaniu Windows, zostanie zdekodowany przed konwersją, a panel wyniku o tym poinformuje. Format wyjściowy nie zależy od kodowania wejścia.

Powiązane narzędzia