Lompat ke konten utama
SubtitleMatrix

Konversi ASS ke SMI

Konversi formatAdvanced SubStation Alpha (ASS)
Atau tempel teks subtitle

Apa yang berubah dalam konversi ini

3 hal dihapus atau memerlukan keputusan

  • Pemformatan

    seluruh pemformatan kecuali tebal dan miring (warna, garis tepi, bayangan, margin)

  • 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 ASS ditulis sebagai SMI, format SAMI berbasis HTML yang dulu dipakai Windows Media Player. Setiap event Dialogue menjadi tag <SYNC Start=…> dengan teks di dalam <P>, dan karena setiap SYNC mengganti isi layar, tepat setelahnya ada blok <P>&nbsp; yang mengosongkannya lagi.

Waktu dibawa sampai milidetik — 0:00:04.12 menjadi Start=4120 — dan urutan cue mengikuti waktu mulai. Tiga hal hilang: styling, karaoke, dan isi khas format. Styling karena aturan tabel gaya ASS tidak diterjemahkan menjadi tag; karaoke karena pembagian per suku kata tidak punya padanan; isi khas format karena [Script Info], Comment:, [Fonts], dan [Graphics] berada di luar cue. Posisi di layar tidak masuk daftar itu, tetapi kode penempatan ASS tidak diterjemahkan menjadi koordinat SAMI yang setara; yang dipertahankan adalah teks dan waktunya.

Satu file atau satu musim, antrean bisa dihentikan, hasil dalam satu ZIP, dan seluruh proses berjalan di peramban.

Contoh

File ASS biasa, dikonversi ke SMI

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

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>Hello there.
<SYNC Start=4000>
<P>&nbsp;
<SYNC Start=5000>
<P><i>Italic</i> and <b>bold</b> text.
<SYNC Start=8500>
<P>&nbsp;
<SYNC Start=9000>
<P>Positioned
<SYNC Start=12000>
<P>&nbsp;
<SYNC Start=13000>
<P><c>ka</c><c>ra</c><c>o</c><c>ke</c>
<SYNC Start=16000>
<P>&nbsp;
<SYNC Start=17000>
<P>Line one<br>Line two
<SYNC Start=20000>
<P>&nbsp;
<SYNC Start=21000>
<P>Top left
<SYNC Start=24000>
<P>&nbsp;
</BODY>
</SAMI>

Yang hilang pada hasil ini: styling, 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

<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>Hello, world
<SYNC Start=4000>
<P>&nbsp;
<SYNC Start=5000>
<P>{\fad(300,300)}Unmodelled override
<SYNC Start=8000>
<P>&nbsp;
<SYNC Start=9000>
<P>Both, wrong order
<SYNC Start=12000>
<P>&nbsp;
<SYNC Start=13000>
<P>One decimal centisecond
<SYNC Start=16500>
<P>&nbsp;
<SYNC Start=17000>
<P>Soft<br>break
<SYNC Start=20000>
<P>&nbsp;
</BODY>
</SAMI>

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

Styling apa yang bertahan saat ASS dikonversi ke SMI?

SMI dapat memuat tag HTML sederhana, tetapi tabel gaya ASS tidak diterjemahkan menjadi aturan SAMI. Jenis huruf, warna, garis tepi, dan bayangan dari skrip tidak muncul sebagai gaya di hasil; yang tersisa adalah teks cue di dalam <P>.

Apa yang terjadi pada timing karaoke dari ASS ke SMI?

Hilang. Karaoke ASS membagi baris menjadi suku kata dengan waktu masing-masing, sedangkan SMI mengatur tampil per cue lewat atribut Start. Suku kata tetap ada sebagai teks, tetapi sorotan bertiming tidak bisa dinyatakan.

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

Semuanya dibuang. [Script Info] adalah konfigurasi skrip, baris Comment: adalah catatan penulis, dan [Fonts] serta [Graphics] adalah lampiran renderer. SAMI punya struktur <SYNC> dan <P> sendiri yang tidak bisa menampungnya.

Seperti apa keluaran saat ASS menjadi SMI?

Seperti SMI: tanpa header skrip dan tanpa nomor cue, setiap subtitle adalah <SYNC Start=…> dengan teks di dalam <P>, diikuti <P>&nbsp; untuk mengosongkan layar. Setiap event Dialogue menjadi satu cue SMI.

Apakah waktu ASS tetap persis di file SMI?

Ya, sampai milidetik. ASS menulis 0:00:04.12 — 4120 milidetik — dan SMI menulis Start=4120. Tidak ada pembulatan tambahan atau pergeseran.

Bagaimana cue ASS dua baris keluar di SMI?

Sebagai dua baris dengan <br> di antaranya, cara SAMI menulis baris baru keras. Kode pemisah baris ASS diterjemahkan menjadi <br>, dan pasangannya bertahan dalam satu subtitle.

Apakah cue ASS tetap berurutan di keluaran SMI?

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

Bisakah SMI hasil konversi ASS ini diubah kembali menjadi ASS?

Bisa lewat halaman SMI ke ASS, dan arah balik punya daftar sendiri: yang hilang di sini tidak kembali sebagai gaya lengkap. Yang kembali adalah event dengan waktu dan teks, ditambah pemformatan inline yang dikenali pembaca SMI.

Apakah keluaran SMI mempertahankan encoding file ASS saya?

Tidak. SMI ditulis sebagai UTF-8 tanpa BOM dan dengan akhir baris Unix, berapa pun encoding file ASS asalnya. Panel hasil menandai bila decoding diperlukan.

Alat terkait