Przejdź do treści
SubtitleMatrix

Konwersja SUB/IDX (VobSub) na SRT

Napisy z mediówNapisy bitmapowe (PGS / VobSub)

Pierwsze uruchomienie pobiera czytnik tekstu — około 4 MB plus model językowy, serwowany przez tę stronę i potem zapamiętany przez przeglądarkę. Nic nie jest wysyłane, a wynik odczytuje maszyna: przeczytaj go krytycznie, zanim na nim polegasz.

Opcje

Napis bitmapowy to obraz tekstu, więc słowa trzeba z niego odczytać. Powiedz czytnikowi, w jakim języku napisane są napisy — lista obejmuje wszystkie języki, w których ukazuje się ta strona. Rosyjskie napisy czytane modelem angielskim wychodzą jako szum, a nie jako rosyjski. Pobierany jest tylko wybrany model (pozostałe nigdy), więc przełączenie kosztuje jedno pobranie na język, a potem model zostaje w pamięci podręcznej.

VobSub dzieli jedną ścieżkę napisów na dwa pliki i oba są potrzebne. Plik .sub trzyma obrazy: łańcuch pakietów strumienia programowego MPEG, z których każdy niesie bitmapę skompresowaną dwubitowym kodem długości serii. Plik .idx trzyma wszystko inne: szesnastokolorową paletę, rozmiar klatki i jeden wiersz na napis z czasem startu oraz przesunięciem bajtowym w .sub, gdzie zaczyna się jego obraz. Wrzuć sam .sub i nie ma sposobu, by wiedzieć, ile jest napisów; wrzuć sam .idx i nie ma obrazu do odczytania. Ta strona bierze parę i zapisuje plik .srt.

Każdy pakiet jest odnajdywany po tym przesunięciu bajtowym, więc indeks nie jest wygodą — jest mapą. Wewnątrz pakietu dwa słowa nagłówka podają rozmiar i pozycję sekwencji sterującej; sekwencja ustawia obszar wyświetlania, wybiera, do których czterech wpisów palety odnoszą się piksele, i wskazuje skompresowaną bitmapę. Dekoder przechodzi kod długości serii dwa razy, raz dla wierszy parzystych, raz dla nieparzystych, bo VobSub zapisuje dwa pola przeplotu osobno. Ten szczegół jest powodem, dla którego naiwny dekoder daje obraz z brakującym co drugim wierszem.

Znaczniki czasu pochodzą z .idx, bo tylko tam istnieją w użytecznej formie. Blok kończy się tam, gdzie zaczyna się następny; ostatni blok dostaje dwie sekundy i lista strat to odnotowuje. Napisy, których obrazy nie dają czytelnego tekstu, są pomijane i liczone, a nie zapisywane jako puste wiersze.

Sam tekst pochodzi z OCR, więc jest odczytem, a nie transkrypcją. Tu napisy DVD są najtrudniejsze: pisano je małymi krojami bitmapowymi, z kursywą dla głosów spoza ekranu, a rozpoznawacz nie wie, że inaczej pochylone słowo to to samo słowo. Sprawdź plik. Wybierz język, w którym są napisy — model jest wybierany na stronie, pobierany raz i buforowany przez przeglądarkę.

Nic nie jest wysyłane. Para jest parsowana i rozpoznawana w tej karcie; jedyne żądania sieciowe dotyczą plików samego rozpoznawacza, które serwuje ta witryna.

Częste pytania

Dlaczego konwerter VobSub .idx i .sub potrzebuje dwóch plików, gdy inne narzędzia potrzebują jednego?

Bo VobSub z założenia trzyma jedną ścieżkę w dwóch plikach, a nie dlatego, że narzędzie chce dwa wejścia. Plik .sub trzyma bitmapy; .idx trzyma szesnastokolorową paletę, rozmiar klatki oraz przesunięcie każdego obrazu wraz z czasem startu. Żaden z plików osobno nie odpowie na pytanie „ile jest napisów i co mówią”. Jeśli masz .sub bez .idx, ta para została gdzieś rozdzielona i indeks trzeba odzyskać z płyty źródłowej, zanim OCR będzie możliwy.

Na co wskazują liczby filepos w pliku .idx przy konwersji VobSub?

Na przesunięcie bajtowe w pliku .sub, na początek pakietu strumienia programowego MPEG, którego identyfikator strumienia oznacza strumień prywatny — ten, którego odtwarzacze DVD używają do napisów. Przesunięcie nie jest numerem napisu i na nietypowej płycie nie musi być monotoniczne względem znaczników czasu, dlatego ta strona sortuje wpisy po znacznikach czasu, a nie ufa kolejności wierszy w pliku.

Dlaczego konwerter VobSub daje czasem złe litery przy dobrej długości?

Bo paleta i kształty pochodzą z obrazu, a OCR rozwiązuje kształty w ustalonym rozmiarze. Napisy DVD często pisano małym, mocno pochylonym albo mocno pogrubionym krojem; słowo kursywą — używane do dialogu spoza ekranu i do tekstów piosenek — jest zwykłą ofiarą, bo pochylona wersja litery nie jest dla człowieka inną literą, ale jest innym kształtem dla rozpoznawacza. Jeśli długości się zgadzają, a litery nie, rozwiązaniem jest korekta, nie inne narzędzie.

Czy pozycja napisów na ekranie przechodzi do SRT w konwersji VobSub?

Nie przechodzi i nie ma gdzie jej zapisać. VobSub trzyma pozycję jako prostokąt obszaru wyświetlania we współrzędnych dwunastobitowych w każdym pakiecie, a SRT nie ma żadnej składni pozycjonowania. Strona używa prostokąta, żeby wiedzieć, gdzie jest tusz — co pomaga poprawnie przyciąć obraz do OCR — a potem go porzuca. Jeśli twój odtwarzacz potrzebuje napisów z pozycją, formatem, który to niesie, jest ASS; SRT ze znacznikami pozycji to konwencja, którą część odtwarzaczy honoruje, a inne drukuje dosłownie.

Konwerter VobSub zgłasza brak pliku .idx — czy da się go odtworzyć z samego .sub?

Nie z samego .sub i nie wiarygodnie z obrazów. Przesunięcia można co prawda znaleźć, skanując pakiety strumienia prywatnego, ale znaczników czasu nie da się odzyskać: żyją w .idx i nigdzie indziej w parze. Odbudowa indeksu oznacza powrót do płyty albo pliku VOB, z którego parę wyciągnięto, albo użycie oryginalnego .idx, jeśli nadal leży obok innej ścieżki. Zgadywanie czasów dałoby plik, który wygląda poprawnie i rozjeżdża się z filmem, co jest gorsze niż brak pliku.

Czy para .idx i .sub jest gdziekolwiek wysyłana przez konwerter VobSub podczas OCR?

Nie. Oba pliki są czytane do pamięci w tej karcie, dekodowane tutaj i rozpoznawane tutaj. Jedyne pobieranie to rozpoznawacz tekstu, serwowany z tej witryny i buforowany potem przez przeglądarkę. Możesz obserwować panel Sieć podczas przetwarzania pary: żadne żądanie nie niesie któregoś z plików. Ma to znaczenie zwłaszcza dla VobSub, bo te pliki zwykle pochodzą z płyty, którą użytkownik posiada, i są dokładnie tym rodzajem materiału, którego nie należy oddawać usłudze konwersji.

Powiązane narzędzia