Konversi JSON ke TTML
Atau tempel teks subtitle
Apa yang berubah dalam konversi ini
1 hal dihapus atau memerlukan keputusan
- Karaoke
timing karaoke (penyorotan per suku kata)
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.
Halaman ini mengonversi JSON ke TTML. Seret file ke sini — atau tempel teksnya — dan Anda mendapat versi TTML kembali. Konversi berjalan sepenuhnya di peramban Anda, jadi tidak ada yang diunggah dan tidak perlu akun.
Perbedaan kedua format ini bukan soal tampilan: karaoke tidak punya tempat di TTML. Dokumen JSON di sini adalah model field: setiap cue punya `id`, `start`, dan `end` dalam milidetik, `lines` membawa `tags`, dan objek `styles` menyimpan tabel gaya. TTML menyimpan waktu hingga milidetik dan menaruh gaya serta region bernama di `<head>`. Karena daftar di atas berasal dari model kemampuan format, daftar itu sudah final bahkan sebelum Anda menyeret file.
Satu file tidak masalah, begitu juga satu musim penuh: antrean memprosesnya secara berurutan dan hasilnya diunduh bersama sebagai satu ZIP.
Contoh
File JSON umum, dikonversi ke TTML
Masukan
{
"version": 1,
"title": "Fixture: typical",
"fps": 25,
"styles": {
"Default": {
"name": "Default",
"fontFamily": "Arial",
"fontSize": 20,
"primaryColor": "#FFFFFF",
"bold": false,
"italic": false
}
},
"generator": "subtitlematrix fixtures",
"cues": [
{
"id": "1",
"start": 0,
"end": 2000,
"lines": [
"Hello world.",
"Second line."
],
"style": "Default",
"position": {
"x": 100,
"y": 200,
"align": "center"
}
},
{
"id": "2",
"start": 2500,
"end": 4000,
"lines": [
"Plain line.",
{
"text": "Styled line.",
"tags": [
{
"kind": "italic",
"start": 0,
"end": 6
}
]
}
]
},
{
"id": "3",
"start": 4500,
"end": 6000,
"lines": [
"Roger: I am here."
],
"speaker": "Roger"
}
]
}
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:00.000" end="00:00:02.000">Hello world.<br/>Second line.</p>
<p begin="00:00:02.500" end="00:00:04.000">Plain line.<br/><span tts:fontStyle="italic">Styled</span> line.</p>
<p begin="00:00:04.500" end="00:00:06.000">Roger: I am here.</p> </body>
</tt>
Yang hilang pada keluaran ini: karaoke. Sisanya cocok baris demi baris.
Konversi yang sama pada input berantakan
Masukan
[
{ "start": 0, "end": 1000, "lines": ["First."] },
{ "start": 1000, "end": 2000, "text": "Second." },
"not an object",
{ "start": 2000, "end": 3000, "lines": ["Third."], "class": "top" }
]
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:00.000" end="00:00:01.000">First.</p>
<p begin="00:00:01.000" end="00:00:02.000">Second.</p>
<p begin="00:00:02.000" end="00:00:03.000">Third.</p> </body>
</tt>
Inilah jenis kerusakan yang ada pada file nyata — byte-order mark, koma yang hilang, nilai null, atau waktu yang tidak terbaca. Bandingkan dengan contoh rapi di atas untuk melihat apa yang dimaafkan parser.
Pertanyaan yang sering diajukan
Apa yang terjadi pada timing karaoke dari JSON ke TTML?
Timingnya hilang; kata-katanya tetap. Karaoke hidup di span karaoke yang dibawa cue JSON, yang menandai kapan setiap suku kata menyala, dan TTML tidak punya cara mencatat momen di dalam satu baris — jadi tandanya dilepas dan suku katanya tiba sebagai teks TTML biasa.
Seperti apa keluarannya ketika JSON menjadi TTML?
Keluaran TTML disusun seperti TTML — tanpa nomor cue: setiap subtitle adalah elemen `<p>` dengan atribut `begin` dan `end`, bersarang di `<body>` (biasanya juga `<div>`), dengan deklarasi XML di atas seluruh dokumen. Cue yang di JSON ditulis `4126` menjadi cue yang di TTML ditulis `00:00:04.126`, dalam urutan yang sama, dan tidak ada teks yang berubah.
Apakah timing JSON akurat di file TTML?
Ya, hingga milidetik — serinci yang bisa dicapai kedua format. JSON menulis satu momen sebagai `4126` dan TTML menulis momen yang sama sebagai `00:00:04.126`; tidak ada yang dibulatkan atau digeser di antara keduanya, dan cue yang tampil selama 2,9 detik tetap begitu.
Bagaimana cue JSON dua baris keluar di TTML?
Dua baris JSON menjadi dua baris dengan `<br/>` di antaranya, cara TTML menulis pemisah baris keras. Pasangannya bertahan — keduanya tetap menjadi satu subtitle di keluaran TTML, dan pemutar menampilkannya bersama.
Apakah cue JSON mempertahankan urutannya di keluaran TTML?
Ya, dan cue diurutkan berdasarkan waktu mulai saat proses — paling awal dulu, seperti yang diharapkan setiap format di sini dan cara pemutar membacanya. Jika file JSON Anda mencantumkan cue di luar urutan, keluaran TTML mengembalikannya ke urutan; itu perubahan pada struktur file, bukan isinya, dan disengaja.
Bisakah TTML dikonversi balik ke JSON?
Ya, dan arah itu punya daftarnya sendiri: mengonversi TTML ke JSON menghilangkan konten khusus format. Daftar itu berbeda dari daftar di atas karena kedua format menyimpan hal yang berbeda.
Apakah keluaran TTML mempertahankan encoding file JSON?
Tidak — keluarannya UTF-8, dengan akhir baris Unix dan tanpa byte-order mark, apa pun yang dipakai file JSON. File yang datang dalam UTF-16 atau encoding satu-byte Windows didekode saat masuk (panel hasil memberi tahu bila itu terjadi); yang keluar selalu TTML UTF-8 yang sama.