Konversi TTML ke SMI
Atau tempel teks subtitle
Apa yang berubah dalam konversi ini
2 hal dihapus atau memerlukan keputusan
- Pemformatan
seluruh pemformatan kecuali tebal dan miring (warna, garis tepi, bayangan, margin)
- 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 sini Anda dapat mengonversi TTML ke SMI: seret satu file atau tempel teks, lalu unduh hasil SMI. Pemrosesan sepenuhnya lokal di peramban — tidak ada file yang diunggah dan tidak perlu akun.
Kedua format ini tidak menyimpan hal yang sama, dan perbedaannya bukan sekadar kosmetik: gaya dan konten khusus format tidak punya tempat di SMI. TTML adalah dokumen XML dengan namespace `tts:` untuk gaya dan `ttp:` untuk parameter profil: `<head>` mendeklarasikan gaya bernama di `<styling>` dan region di `<layout>`, sedangkan elemen `<p>` adalah subtitlenya dan waktu ditulis hingga milidetik. Daftar di atas berasal dari apa yang dapat diekspresikan masing-masing format, bukan dari file Anda, jadi jawabannya sama sebelum Anda memuat apa pun.
Batch juga didukung: antrean memproses setiap file secara berurutan, lalu seluruh hasil dikemas sebagai satu ZIP.
Contoh
File TTML umum, dikonversi ke SMI
Masukan
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling" xml:lang="en">
<head>
<styling>
<style xml:id="s1" tts:color="#FFFF00" tts:fontWeight="bold"/>
</styling>
<layout>
<region xml:id="bottom" tts:origin="10% 80%" tts:extent="80% 20%"/>
</layout>
</head>
<body>
<div>
<p begin="00:00:01.000" end="00:00:03.500" region="bottom" style="s1">Hello <span tts:fontStyle="italic">there</span>.</p>
<p begin="00:00:03.500" end="00:00:06.000" region="bottom">How are you?<br/>Fine, thanks.</p>
</div>
</body>
</tt>
Keluaran
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1000>
<P>Hello <i>there</i>.
<SYNC Start=3500>
<P>
<SYNC Start=3500>
<P>How are you?<br>Fine, thanks.
<SYNC Start=6000>
<P>
</BODY>
</SAMI>
Yang hilang pada keluaran ini: gaya dan konten khusus format. Sisanya cocok baris demi baris.
Konversi yang sama pada input berantakan
Masukan
<?xml version="1.0" encoding="UTF-8"?>
<tt xmlns="http://www.w3.org/ns/ttml" xmlns:tts="http://www.w3.org/ns/ttml#styling"
xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
ttp:frameRate="25" xml:lang="en">
<body>
<div>
<p begin="1.5s" dur="2s">Loaded from an offset and a duration.</p>
<p begin="4s" end="00:00:06.50">A coarser clock spelling.</p>
<p begin="00:00:07:00" end="00:00:08:12">Frames, at 25fps.</p>
<p begin="9s"><span tts:color="#FF0000">Half-open</span> and Tom & Jerry.</p>
</div>
</body>
</tt>
Keluaran
<SAMI>
<HEAD>
<STYLE TYPE="text/css">
<!--
P { text-align: center; font-family: Arial, sans-serif; }
-->
</STYLE>
</HEAD>
<BODY>
<SYNC Start=1500>
<P>Loaded from an offset and a duration.
<SYNC Start=3500>
<P>
<SYNC Start=4000>
<P>A coarser clock spelling.
<SYNC Start=6500>
<P>
<SYNC Start=7000>
<P>Frames, at 25fps.
<SYNC Start=8480>
<P>
<SYNC Start=9000>
<P><font color="#FF0000">Half-open</font> and Tom & Jerry.
<SYNC Start=11000>
<P>
</BODY>
</SAMI>
Inilah jenis kerusakan yang ada pada file nyata — byte-order mark, akhir baris Windows, namespace yang tidak dikenal, atau atribut waktu yang tidak terbaca. Bandingkan dengan contoh rapi di atas untuk melihat apa yang dimaafkan parser.
Pertanyaan yang sering diajukan
Gaya apa yang bertahan dari TTML ke SMI?
Penekanan, ditulis ke dalam teks sebagai tag: tebal, miring, garis bawah, dan warna keluar sebagai `<b>`, `<i>`, `<u>`, dan `<font color="…">`, yang dijalankan peramban. Yang tidak dibawa file SMI adalah tabel gaya TTML yang diandalkan TTML — font, ukurannya, garis tepi, bayangan, dan margin semuanya hilang, dan halaman yang menyematkan subtitle menatanya lewat CSS-nya sendiri.
Apa yang terjadi pada prolog TTML serta tabel `<styling>` dan `<layout>` di SMI?
Dibuang. File TTML menyimpan tampilan dan tata letaknya di head, bukan di kata-kata: deklarasi XML dan pengikatan namespace-nya, tabel `<styling>` berisi gaya bernama (`tts:color`, `tts:fontWeight`), tabel `<layout>` berisi region bernama (`tts:origin`, `tts:extent`), `<metadata>` apa pun, dan atribut `style` / `region` yang dipakai `<p>` untuk merujuknya. SMI menyimpan cue, bukan dokumen, jadi tidak ada bagian dari head itu yang punya tempat mendarat. Pemformatan yang ditulis di dalam paragraf adalah hal lain — `<span tts:fontStyle="italic">` adalah penekanan pada kata-kata, dan ditulis dengan markup SMI sendiri sejauh SMI memilikinya.
Seperti apa keluarannya ketika TTML menjadi SMI?
Keluaran SMI disusun seperti SMI — tanpa nomor cue dan tanpa baris timecode: setiap cue adalah tag `<SYNC Start=…>` dengan teksnya di `<P>` di bawahnya, disusul blok `<P> ` yang mengosongkan layar. Cue yang di TTML ditulis `00:00:04.126` menjadi cue yang di SMI ditulis `Start=4126`, dalam urutan yang sama, dan tidak ada teks yang berubah.
Apakah timing TTML akurat di file SMI?
Ya, hingga milidetik — serinci yang bisa dicapai kedua format. TTML menulis satu momen sebagai `00:00:04.126` dan SMI menulis momen yang sama sebagai `Start=4126`; tidak ada yang dibulatkan atau digeser di antara keduanya, dan cue yang tampil selama 2,9 detik tetap begitu.
Bagaimana cue TTML dua baris keluar di SMI?
Dua baris TTML menjadi dua baris dengan `<br>` di antaranya, cara SAMI menulis pemisah baris keras. Pasangannya bertahan — keduanya tetap menjadi satu subtitle di keluaran SMI, dan pemutar menampilkannya bersama.
Apakah cue TTML mempertahankan urutannya di keluaran SMI?
Ya. Cue keluar dalam urutan waktu mulai, paling awal dulu, karena semua format di sini mengharapkan urutan itu dan pemutar membacanya begitu. File TTML yang cue-nya tidak berurutan akan dirapikan di keluaran SMI; itu perubahan struktur yang disengaja, bukan perubahan isi.
Bisakah SMI dikonversi balik ke TTML?
Ya, dan arah itu punya daftarnya sendiri: mengonversi SMI ke TTML menghilangkan konten khusus format. Daftar itu berbeda dari daftar di atas karena kedua format menyimpan hal yang berbeda.
Apakah keluaran SMI mempertahankan encoding file TTML?
Tidak — keluarannya UTF-8, dengan akhir baris Unix dan tanpa byte-order mark, apa pun yang dipakai file TTML. File yang datang dalam UTF-16 atau encoding satu-byte Windows didekode saat masuk (panel hasil memberi tahu bila itu terjadi); yang keluar selalu SMI UTF-8 yang sama.