Konversi TTML ke LRC
Atau tempel teks subtitle
Apa yang berubah dalam konversi ini
5 hal dihapus atau memerlukan keputusan
- Waktu
waktu akhir cue (format keluaran hanya mencatat kapan cue mulai)
- Pemformatan
seluruh pemformatan (tebal, miring, warna, garis tepi, bayangan)
- Posisi
posisi di layar (setiap cue kembali ke posisi bawaan)
- Presisi
presisi waktu — jam keluaran lebih kasar, sehingga setiap stempel waktu dibulatkan ke 10 ms terdekat
- 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.
Alat ini mengonversi TTML ke LRC langsung di peramban Anda. Seret file atau tempel teks, dan versi LRC siap diunduh; tidak ada unggahan dan tidak perlu akun.
Kedua format ini tidak menyimpan hal yang sama, dan perbedaannya bukan sekadar kosmetik: timing, gaya, posisi, dan konten khusus format tidak punya tempat di LRC; nilai yang lebih halus dari 10 ms dibulatkan, karena LRC menyimpan waktu dalam langkah 10 ms. 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.
Satu file maupun ratusan file bisa masuk ke antrean yang sama; hasilnya diunduh bersama sebagai satu ZIP setelah semuanya selesai.
Contoh
File TTML umum, dikonversi ke LRC
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
[00:01.00]Hello there.
[00:03.50]How are you?
[00:03.50]Fine, thanks.
Yang hilang pada keluaran ini: timing, gaya, posisi, presisi, 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
[00:01.50]Loaded from an offset and a duration.
[00:04.00]A coarser clock spelling.
[00:07.00]Frames, at 25fps.
[00:09.00]Half-open and Tom & Jerry.
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
Apa yang terjadi pada waktu selesai setiap cue TTML?
LRC mencatat kapan sebuah baris dimulai dan tidak mencatat hal lain — pemutar lirik membiarkan baris tetap tampil sampai baris berikutnya mulai, jadi waktu selesai akan berlebihan. Setiap akhir dibuang dan setiap awal TTML tidak disentuh.
Apa yang terjadi pada tebal, miring, dan warna dari TTML ke LRC?
LRC tidak menyimpan gaya apa pun, jadi ketika TTML menjadi LRC semuanya hilang: `<span tts:color="…">` di dalam paragraf, atau gaya bernama dari tabel `<styling>` yang dirujuknya — tidak ada yang punya tempat, dan setiap baris ditulis sebagai teks biasa. Kata-katanya sendiri tidak disentuh.
Apa yang terjadi pada posisi di layar dari TTML ke LRC?
LRC tidak dapat menyatakan di mana subtitle digambar, jadi rujukan posisi yang dibawa setiap cue dibuang saat keluar dari TTML, dan setiap cue kembali ke posisi bawaan yang dipilih pemutar — umumnya bagian bawah bingkai dan di tengah.
Mengapa stempel waktu bergeser dari TTML ke LRC?
LRC menyimpan waktu sebagai `[00:04.12]` sedangkan TTML menyimpannya sebagai `00:00:04.126` — seperseratus detik versus seperseribu — jadi setiap timecode dibulatkan ke 10 ms terdekat: 00:00:04,126 menjadi 4,13 detik. Tidak ada yang diregangkan atau diurutkan ulang dan tidak ada cue yang bergeser lebih dari 5 ms, tetapi jika Anda menyelaraskan subtitle ini dengan file lain, di situlah konversi ini berhenti eksak.
Apa yang terjadi pada prolog TTML serta tabel `<styling>` dan `<layout>` di LRC?
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. LRC 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 LRC sendiri sejauh LRC memilikinya.
Seperti apa keluarannya ketika TTML menjadi LRC?
Keluaran LRC disusun seperti LRC — tanpa nomor cue: setiap baris membawa stempel waktu dalam tanda kurung siku. Cue yang di TTML ditulis `00:00:04.126` menjadi cue yang di LRC ditulis `[00:04.12]`, dalam urutan yang sama, dan tidak ada teks yang berubah.
Bagaimana cue TTML dua baris keluar di LRC?
Dua baris TTML menjadi dua baris bertimestamp dengan waktu yang sama, cara LRC menyatakan bahwa keduanya satu kesatuan. Pasangannya bertahan — keduanya tetap menjadi satu subtitle di keluaran LRC, dan pemutar menampilkannya bersama.
Apakah cue TTML mempertahankan urutannya di keluaran LRC?
Urutannya dipertahankan, tetapi dirapikan: cue diurutkan menurut waktu mulai, paling awal lebih dulu. Susunan itu yang diharapkan setiap format di sini dan yang dibaca pemutar. Kalau file TTML semula tidak berurutan, keluaran LRC mengembalikannya ke urutan yang benar — perubahan struktur, bukan isi.
Bisakah LRC dikonversi balik ke TTML?
Ya, dan arah itu punya daftarnya sendiri: mengonversi LRC ke TTML menghilangkan timing. Daftar itu berbeda dari daftar di atas karena kedua format menyimpan hal yang berbeda.
Apakah keluaran LRC 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 LRC UTF-8 yang sama.