Konversi SSA ke TTML
Atau tempel teks subtitle
Apa yang berubah dalam konversi ini
2 hal dihapus atau memerlukan keputusan
- 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 SSA diubah menjadi TTML, format subtitle berbasis XML untuk penyiaran dan platform streaming. Setiap event Dialogue menjadi elemen <p> dengan atribut begin dan end, dan waktu ditulis 00:00:04.120 — nilai yang sama sampai milidetik, hanya notasi SSA yang diperluas menjadi jam, menit, detik, dan milidetik.
Dua hal hilang: karaoke dan isi khas format. Karaoke karena TTML tidak punya cara menyatakan waktu per suku kata di dalam satu baris; teksnya tetap utuh, tetapi sorotan bertiming tidak bisa dibawa. Isi khas format karena [Script Info], Comment:, [Fonts], dan [Graphics] berada di luar cue dan tidak punya padanan. Styling dan positioning tidak masuk daftar itu: keduanya punya kendaraan di TTML.
Cue dua baris menjadi dua baris dengan <br/>, dan urutan cue mengikuti waktu mulai. Satu file atau satu musim, antrean bisa dihentikan, hasil dalam satu ZIP, dan tidak ada yang keluar dari perangkat Anda.
Contoh
File SSA biasa, dikonversi ke TTML
Masukan
[Script Info]
Title: Example SSA
ScriptType: v4.00
Collisions: Normal
[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: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,Hello there.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,{\i1}Italic{\i0} line.
Dialogue: Marked=0,0:00:09.00,0:00:12.00,Default,,0,0,0,,Two\Nlines
Keluaran
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
<body>
<p begin="00:00:01.000" end="00:00:04.000">Hello there.</p>
<p begin="00:00:05.000" end="00:00:08.000"><span tts:fontStyle="italic">Italic</span> line.</p>
<p begin="00:00:09.000" end="00:00:12.000">Two<br/>lines</p> </body>
</tt>
Yang hilang pada hasil ini: karaoke dan isi khas format. Sisanya sama baris demi baris.
Konversi yang sama pada input yang berantakan
Masukan
[Script Info]
Title: Dirty SSA
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
Comment: Marked=0,0:00:00.00,0:00:01.00,Default,,0,0,0,,not a subtitle
Dialogue: Marked=0,0:00:01.00,0:00:04.00,Default,,0,0,0,,{\b1}Bold{\b0} and {\u1}underlined{\u0}.
Dialogue: Marked=0,0:00:05.00,0:00:08.00,Default,,0,0,0,,A soft\nbreak and a {\p1}mystery{\p0} code.Keluaran
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling">
<body>
<p begin="00:00:01.000" end="00:00:04.000"><span tts:fontWeight="bold">Bold</span> and <span tts:textDecoration="underline">underlined</span>.</p>
<p begin="00:00:05.000" end="00:00:08.000">A soft<br/>break and a {\p1}mystery{\p0} code.</p> </body>
</tt>
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
Apa yang terjadi pada timing karaoke dari SSA ke TTML?
Karaoke tidak bertahan sebagai timing. TTML memakai begin dan end per elemen, dan konversi ini tidak membuat elemen per suku kata; teks suku katanya tetap ada.
Apa yang terjadi pada [Script Info] dan sisa skrip SSA di TTML?
Semua yang berada di luar cue dibuang, termasuk [Script Info], Comment:, dan lampiran [Fonts] serta [Graphics]. Model dokumen TTML tidak menampungnya.
Seperti apa keluaran saat SSA menjadi TTML?
TTML hasilnya berisi elemen <p> dengan atribut begin dan end di dalam <body>, diawali deklarasi XML. Tiap event Dialogue SSA menjadi satu cue.
Apakah waktu SSA tetap persis di file TTML?
Ya, sampai milidetik. SSA menulis 0:00:04.12 — 4120 milidetik — dan TTML menulis 00:00:04.120. Tidak ada pembulatan atau pergeseran yang ditambahkan.
Bagaimana cue SSA dua baris keluar di TTML?
Sebagai dua baris dengan <br/> di antaranya, cara TTML menulis baris baru keras. Kode pemisah baris SSA diterjemahkan menjadi elemen itu, dan pasangannya bertahan dalam satu subtitle.
Apakah cue SSA tetap berurutan di keluaran TTML?
Ya. Cue diurutkan menurut waktu mulai, sehingga urutan event SSA yang tidak kronologis menjadi kronologis di TTML.
Bisakah TTML hasil konversi SSA ini diubah kembali menjadi SSA?
Bisa lewat halaman TTML ke SSA, dan arah balik punya daftar sendiri: karaoke dan isi khas format tidak bisa dipulihkan. Yang kembali adalah event dengan waktu, teks, dan gaya yang dikenali pembaca TTML.
Apakah keluaran TTML mempertahankan encoding file SSA saya?
Tidak. TTML selalu ditulis UTF-8 tanpa byte-order mark dengan akhir baris Unix; encoding SSA didekode lebih dulu.