Przejdź do treści
SubtitleMatrix

Konwerter napisów CSV na ASS

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 ASS. Upuść plik — albo wklej tekst — a dostaniesz wersję ASS. 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: ASS 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 ASS

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, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Events]
Format: Layer, 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, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Events]
Format: Layer, 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 ASS się zmieniają?

ASS 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ę ASS?

Jak ASS: bez numerów bloków, każdy napis to wiersz Dialogue w sekcji [Events], a tam gdzie SRT trzyma numer, ASS ma pole warstwy. Każdy blok CSV staje się jednym blokiem ASS, w tej samej kolejności i z tym samym tekstem.

Co dzieje się z dwuwierszowym blokiem CSV w ASS?

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

Czy w CSV na ASS 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 ASS je uporządkuje; to zmiana struktury pliku, nie treści, i jest zamierzona.

Czy mogę przekonwertować ASS z powrotem na CSV?

Tak, ale ten kierunek ma własną listę: konwersja ASS 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 ASS 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 ASS w UTF-8.

Powiązane narzędzia