Lompat ke konten utama
SubtitleMatrix

Konversi ASS ke CSV

Konversi formatAdvanced SubStation Alpha (ASS)
Atau tempel teks subtitle

Apa yang berubah dalam konversi ini

4 hal dihapus atau memerlukan keputusan

  • Pemformatan

    seluruh pemformatan (tebal, miring, warna, garis tepi, bayangan)

  • Posisi

    posisi di layar (setiap cue kembali ke posisi bawaan)

  • Karaoke

    timing karaoke (penyorotan per suku kata)

  • Konten khusus format

    konten yang disimpan format sumber di luar cue-nya (blok non-cue, teks header, pengaturan per cue, event yang dikomentari) — format tujuan tidak punya tempat untuknya

Daftar ini berasal dari matriks kemampuan untuk kedua format ini, bukan dari file tertentu yang Anda muat. File tertentu bisa kehilangan lebih banyak jika memakai fitur yang diizinkan format tetapi tidak dimodelkan matriks.

Di halaman ini skrip Advanced SubStation Alpha ditulis sebagai lembar kerja: kolom start, end, dan text, satu event Dialogue per baris. ASS memperlakukan subtitle sebagai teks yang digambar mesin render — ia punya tabel gaya, kode penempatan, dan timing per suku kata. CSV hanya punya tiga kolom, jadi yang bisa dibawa hanyalah waktu dan kata-katanya.

Empat hal hilang di arah ini: styling, positioning, karaoke, dan isi khas format. Styling karena jenis huruf, warna, dan garis tepi tidak punya kolom; positioning karena posisi di layar tidak bisa dinyatakan; karaoke karena timing per suku kata tidak punya tempat; isi khas format karena blok [Script Info], baris Comment:, dan bagian [Fonts] serta [Graphics] berada di luar cue. Daftar di atas dihitung dari kemampuan format, jadi jawabannya sama sebelum ada file dimuat.

Waktu mulai dan selesai ditulis keduanya, dan teks cue yang memuat koma atau baris baru diberi tanda kutip sesuai standar CSV, sehingga tabel ini bisa diurutkan dan dihitung tanpa kehilangan timeline. Satu file atau satu musim, semuanya di peramban, hasil dalam satu ZIP.

Contoh

File ASS biasa, dikonversi ke CSV

Masukan

[Script Info]
Title: Example
ScriptType: v4.00+
WrapStyle: 0

[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
Style: Title,Arial,36,&H0000FFFF,&H000000FF,&H00000000,&H00000000,-1,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.
Dialogue: 0,0:00:05.00,0:00:08.50,Default,,0,0,0,,{\i1}Italic{\i0} and {\b1}bold{\b0} text.
Dialogue: 0,0:00:09.00,0:00:12.00,Title,,0,0,0,,{\pos(320,240)}Positioned
Dialogue: 0,0:00:13.00,0:00:16.00,Default,,0,0,0,,{\k50}ka{\k30}ra{\k20}o{\k10}ke
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Line one\NLine two
Dialogue: 1,0:00:21.00,0:00:24.00,Default,,0,0,0,,{\an7}Top left

Keluaran

start,end,text
00:00:01.000,00:00:04.000,Hello there.
00:00:05.000,00:00:08.500,<i>Italic</i> and <b>bold</b> text.
00:00:09.000,00:00:12.000,Positioned
00:00:13.000,00:00:16.000,<c>ka</c><c>ra</c><c>o</c><c>ke</c>
00:00:17.000,00:00:20.000,"Line one
Line two"
00:00:21.000,00:00:24.000,Top left

Yang hilang pada hasil ini: styling, positioning, karaoke, dan isi khas format. Sisanya sama baris demi baris.

Konversi yang sama pada input yang berantakan

Masukan

[Script Info]
; 一份真实的脏文件:BOM + CRLF + 认不出的覆写码 + Comment + 坏时间码
Title: Dirty sample
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,1,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1

[Fonts]
fontname: Arial
!!!!!!!!!!!!!!!!!!!!!!!!!!!!

[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
Comment: 0,0:00:00.00,0:00:01.00,Default,,0,0,0,,这是一条注释,不该变成字幕
Dialogue: 0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello, world
Dialogue: 0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\fad(300,300)}Unmodelled override
Dialogue: 0,0:00:09.00,0:00:12.00,Default,,0,0,0,,{\an7\pos(320,240)}Both, wrong order
Dialogue: 0,0:00:13.00,0:00:16.5,Default,,0,0,0,,One decimal centisecond
Dialogue: 0,0:00:17.00,0:00:20.00,Default,,0,0,0,,Soft\nbreak
Dialogue: 0,0:00:xx.00,0:00:24.00,Default,,0,0,0,,Broken timecode

Keluaran

start,end,text
00:00:01.000,00:00:04.000,"Hello, world"
00:00:05.000,00:00:08.000,"{\fad(300,300)}Unmodelled override"
00:00:09.000,00:00:12.000,"Both, wrong order"
00:00:13.000,00:00:16.500,One decimal centisecond
00:00:17.000,00:00:20.000,"Soft
break"

Ini jenis kerusakan yang nyata pada file asli — akhir baris campuran, spasi berlebih, kolom kosong. Bandingkan dengan contoh rapi di atas untuk melihat apa yang dimaafkan parser.

Pertanyaan yang sering diajukan

Apakah tebal dan miring bertahan saat ASS dikonversi ke CSV?

Tidak sebagai styling. CSV hanya punya kolom start, end, dan text, jadi rentang tebal atau miring yang ditulis sebagai kode override di Dialogue tidak bisa dideskripsikan di kolom mana pun. Yang tersisa adalah teks cue.

Apa yang terjadi pada posisi di layar dari ASS ke CSV?

Posisi dibuang. Kode seperti \pos(320,240) atau \an7 adalah instruksi kepada mesin render, dan CSV tidak punya mesin render maupun kolom posisi. Konverter tidak menyelipkannya ke teks sebagai markup palsu.

Apa yang terjadi pada timing karaoke dari ASS ke CSV?

Hilang. Karaoke ASS membagi satu baris menjadi suku kata dengan waktu masing-masing; CSV hanya mencatat satu waktu mulai dan satu waktu selesai per cue, sehingga pembagian per suku kata tidak punya tempat dan tidak direkonstruksi.

Apa yang terjadi pada blok [Script Info] dan bagian lain skrip ASS di CSV?

Semuanya dibuang. [Script Info] adalah konfigurasi skrip, bukan subtitle; baris Comment: adalah catatan, bukan cue; bagian [Fonts] dan [Graphics] adalah lampiran untuk renderer. Tidak ada yang bisa dinyatakan sebagai baris start, end, dan text.

Seperti apa keluaran saat ASS menjadi CSV?

Tabel dengan baris judul start, end, dan text, lalu satu baris per event Dialogue. Stempel waktu memakai titik, dan teks yang berisi koma atau baris baru diberi tanda kutip sesuai standar CSV.

Apakah waktu ASS tetap persis di file CSV?

Ya, sampai milidetik. ASS menyimpan waktu dalam perseratus detik, tetapi nilai itu bisa ditulis sebagai milidetik tanpa kehilangan apa pun; tidak ada pembulatan tambahan di arah ini.

Bagaimana cue ASS dua baris keluar di CSV?

Sebagai satu baris dengan pemisah baris di dalam sel berkutip. Kode baris baru ASS diterjemahkan menjadi baris baru biasa, jadi kedua bagian tetap terpisah saat sel dibuka di spreadsheet.

Apakah urutan cue ASS tetap di keluaran CSV?

Ya, dan cue diurutkan menurut waktu mulai saat diproses. Urutan event di skrip bisa tidak kronologis; CSV mengembalikannya ke urutan waktu, dan itu perubahan struktur, bukan isi.

Bisakah CSV hasil konversi ASS ini diubah kembali menjadi ASS?

Bisa lewat halaman CSV ke ASS, tetapi arah balik tidak memulihkan yang sudah hilang: styling, positioning, karaoke, dan isi khas format tetap tidak ada. Yang kembali adalah cue dengan waktu dan teks.

Apakah keluaran CSV mempertahankan encoding file ASS saya?

Tidak — hasil selalu UTF-8, akhir baris Unix, tanpa byte-order mark. File ASS lama sering memakai encoding satu byte Windows, dan file seperti itu didekode saat dibaca lalu ditulis ulang sebagai UTF-8.

Alat terkait