Przejdź do treści
SubtitleMatrix

Konwerter napisów CSV na SSA

Albo wklej tekst napisów

Co zmienia ta konwersja

1 rzecz zostaje pominięta albo wymaga decyzji

  • 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.

Ta strona zamienia CSV na SSA. Upuść plik — albo wklej tekst — a dostaniesz wersję SSA. Konwersja odbywa się w całości w Twojej przeglądarce, więc nic nie jest wysyłane i konto nie jest potrzebne.

Te dwa formaty nie przechowują tego samego i różnica nie jest kosmetyczna: SSA zapisuje czas do setnej sekundy (0:00:04.13), a CSV do milisekundy (00:00:04.126). Każdy znacznik jest więc zaokrąglany do najbliższych 10 ms; nic nie jest rozciągane ani przestawiane, a żaden blok nie przesuwa się o więcej niż 5 ms. Tekst i kolejność bloków zostają.

Jeden plik wystarczy, cały sezon też: kolejka przetwarza je po kolei, a wyniki pobierasz razem jako jeden ZIP.

Przykłady

Typowy plik CSV zamieniony na SSA

Wejście

start,end,text
00:00:01.000,00:00:03.500,The quick brown fox.
00:00:04.000,00:00:06.250,"Jumps over, the lazy dog."
00:00:07.000,00:00:09.000,"Two lines here.
And a second 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:01.00,0:00:03.50,Default,,0,0,0,,The quick brown fox.
Dialogue: 0,0:00:04.00,0:00:06.25,Default,,0,0,0,,Jumps over, the lazy dog.
Dialogue: 0,0:00:07.00,0:00:09.00,Default,,0,0,0,,Two lines here.\NAnd a second one.

Jedyna strata to zaokrąglenie czasów do setnej sekundy. Cała reszta zgadza się wiersz po wierszu.

Ta sama konwersja na niewygodnym wejściu

Wejście

id,start,end,note,text
1,00:00:01,000,00:00:04,000,cue one,"Hello there, friend."
2,00:00:05.000,00:00:07.000,cue two,Second line.
bad,notatime,00:00:09.000,cue three,Unreadable start.
4,00:00:10.000,00:00:09.000,cue four,End before start.
5,00:00:12.000,00:00:14.000,cue five,Unquoted comma in text, right here.

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:01.00,0:00:04.00,Default,,0,0,0,,Hello there, friend.
Dialogue: 0,0:00:05.00,0:00:07.00,Default,,0,0,0,,Second line.
Dialogue: 0,0:00:10.00,0:00:10.01,Default,,0,0,0,,End before start.
Dialogue: 0,0:00:12.00,0:00:14.00,Default,,0,0,0,,Unquoted comma in text, right here.

Tak wyglądają prawdziwe tabele: nagłówek z innymi nazwami, znacznik czasu bez cudzysłowów, pusta komórka. Porównaj z czystym przykładem powyżej, żeby zobaczyć, co parser wybacza.

Częste pytania

Dlaczego czasy w CSV na SSA się zmieniają?

SSA zapisuje czas jako 0:00:04.13, a CSV jako 00:00:04.126 — setna sekundy przeciw tysięcznej — więc każdy znacznik jest zaokrąglany do najbliższych 10 ms: 4,126 s wychodzi jako 4,13 s. Nic nie jest rozciągane ani przestawiane i żaden blok nie przesuwa się o więcej niż 5 ms, ale jeśli zestawiasz te napisy z innym plikiem, właśnie tu konwersja przestaje być dokładna.

Jak wygląda wynik, gdy CSV staje się SSA?

Jak SSA: bez numerów bloków, każdy napis to wiersz Dialogue w sekcji [Events], z polem Marked tam, gdzie SRT trzyma numer. Style siedzą w sekcji [V4 Styles], a nie w [V4+ Styles], jak w nowszym ASS. Każdy blok CSV staje się jednym blokiem SSA, w tej samej kolejności i z tym samym tekstem.

Co dzieje się z dwuwierszowym blokiem CSV w SSA?

Staje się dwoma wierszami z \N między nimi, bo tak SSA zapisuje twarde przejście do nowej linii. Więź zostaje — oba wiersze z komórki CSV nadal tworzą jeden blok w wyniku SSA i odtwarzacz pokazuje je razem.

Czy w CSV na SSA bloki zachowują kolejność?

Tak, a po drodze są sortowane po czasie startu — najwcześniejsze pierwsze, tak jak oczekuje każdy format na tej stronie i jak czytają je odtwarzacze. Jeśli Twój plik CSV miał bloki w innej kolejności, wynik SSA je uporządkuje; to zmiana struktury pliku, nie treści, i jest zamierzona.

Czy mogę przekonwertować SSA z powrotem na CSV?

Tak, ale ten kierunek ma własną listę: konwersja SSA na CSV gubi stylizację, pozycjonowanie, karaoke oraz treść spoza modelu bloków. Lista różni się od powyższej, bo oba formaty przechowują co innego.

Czy wynik SSA zachowa kodowanie pliku CSV?

Nie — wynik jest w UTF-8, z uniksowymi końcami wierszy i bez BOM, niezależnie od tego, czego używał plik CSV. Plik w UTF-16 albo w windowsowym kodowaniu jednobajtowym jest dekodowany przy wejściu (panel wyniku to sygnalizuje), a na wyjściu zawsze dostajesz ten sam SSA w UTF-8.

Powiązane narzędzia