Timed Text Markup Language
XML W3C untuk subtitle dan caption, dan yang diminta penyiar serta layanan streaming. DFXP adalah nama profil pertamanya, dan banyak berkas masih membawa nama itu. IMSC, EBU-TT-D dan iTT Apple juga TTML, masing-masing dengan kebiasaannya sendiri.
Sekilas
| Ekstensi | .ttml |
|---|---|
| Tipe media | application/ttml+xml |
| Spesifikasi | W3C, Timed Text Markup Language 1 (TTML1), sebuah Recommendation. TTML2 memperluasnya; IMSC dan EBU-TT-D adalah subset untuk distribusi. |
| Ketelitian waktu | Bebas: pecahan detik, frame, atau tick |
| Encoding teks | Dinyatakan dalam XML. Hampir selalu UTF-8. |
| Gaya | Gaya bernama dan atribut tts:: font, ukuran, warna, latar belakang, miring, tebal, garis bawah, coret, garis tepi |
| Posisi | Region: kotak yang ditempatkan dan diatur ukurannya di mana saja pada gambar |
| Pembicara | Agen (ttm:agent), dinamai di bagian head |
| Dalam kontainer | MP4 sebagai stpp (ISO/IEC 14496-30), dalam aliran DASH, CMAF dan HLS |
Anatomi berkas
Dokumen XML: bagian head yang menamai gaya dan region, dan bagian body berisi paragraf, satu untuk setiap subtitle.
<tt xml:lang="en" …> <head>styles, regions</head> <body><div> <p begin="00:00:23.000" end="00:00:24.500"> You're a jerk,<br/>Thom.</p> </div></body> </tt>
- 1 · Root
<tt>, dengan namespace TTML, bahasanya, dan jam yang menjadi acuan waktu:ttp:frameRate,ttp:tickRate. - 2 · Head
Gaya bernama, region layar, dan siapa yang berbicara.
- 3 · Waktu
beginsetiap paragraf, danendataudur-nya. - 4 · Teks
Subtitlenya. Span menata sebagian teks, dan
<br/>memisahkan baris.
Waktu
TTML menulis waktu dengan lebih banyak cara dibanding format subtitle lain:
| Ditulis sebagai | Artinya |
|---|---|
00:00:23.500 |
Jam, menit, detik dan pecahan |
00:00:23:12 |
Frame setelah detik: dua belas pada ttp:frameRate berkas |
23.5s, 23500ms, 1h |
Offset dalam jam, menit, detik atau milidetik |
564f |
Frame |
235000000t |
Tick, sebanyak ttp:tickRate per detik |
Waktu dihitung dari elemen yang memuatnya. begin sebuah paragraf dihitung dari awal <div> dan <body>-nya, dan paragraf tanpa end sendiri berakhir bersama elemen tersebut.
Gaya
Gaya adalah sekumpulan atribut tts:. Teks menerimanya secara berurutan: dari region-nya, lalu dari body, div, paragraf dan span di sekitarnya. Setiap elemen menerima gaya yang disebutnya (style="s1 s2", dan yang disebut oleh gaya tersebut), lalu atributnya sendiri.
| Atribut | Efek | Di Subtitld |
|---|---|---|
tts:fontStyle="italic" |
Miring | Dipertahankan |
tts:fontWeight="bold" |
Tebal | Dipertahankan |
tts:textDecoration="underline", "lineThrough" |
Garis bawah, coret | Dipertahankan |
tts:color |
Warna teks: nama, #rrggbb, #rrggbbaa atau rgb() |
Dipertahankan, tanpa transparansinya |
tts:displayAlign, tts:textAlign |
Letak teks di dalam region-nya | Dipertahankan, sebagai satu dari sembilan posisi |
tts:fontFamily, tts:fontSize |
Font dan ukuran | Tidak dipertahankan |
tts:backgroundColor, tts:textOutline |
Kotak di belakang teks, garis tepi | Tidak dipertahankan |
<set> |
Gaya yang berubah seiring waktu | Tidak dipertahankan |
Region
Region adalah kotak pada gambar, ditempatkan oleh tts:origin dan diatur ukurannya oleh tts:extent. Di dalamnya, tts:displayAlign menempatkan teks di atas, tengah atau bawah (before, center, after), dan tts:textAlign ke satu sisi atau tengah.
<region xml:id="top"
tts:origin="10% 10%"
tts:extent="80% 80%"
tts:displayAlign="before"/>
Subtitld menghitung di mana teks jatuh, apakah region diukur dalam persen, piksel atau sel, dan mengambil yang terdekat dari sembilan posisi yang dinamai {\an1} sampai {\an9} di SubRip. Saat menulis berkas, setiap posisi yang dipakai menjadi region dengan nama tersebut: bottom, top, top-left…
Saat berkas tidak menyebutkannya. Bawaan TTML menempatkan teks di pojok kiri atas region-nya, tetapi pemutar menampilkannya di bawah dan di tengah, dan Subtitld mengikuti hal yang sama. Subtitld juga membaca textAlign="start" pada region tanpa ukuran atau posisi sebagai rata tengah: berkas yang ditulis dengan pycaption, termasuk Subtitld versi lama, menaruhnya di setiap region.
Profil
Sebagian besar TTML ditulis dengan sebuah profil: subset bahasa, dengan aturannya sendiri. Subtitld membaca masing-masing sebagai TTML.
| Profil | Dipakai di | Kebiasaannya |
|---|---|---|
| DFXP | Profil pertama TTML, dan ekstensi .dfxp |
Berkas lama dalam namespace http://www.w3.org/2006/10/ttaf1 |
| IMSC 1 | Streaming lewat DASH, CMAF dan HLS | Profil W3C untuk subtitle dan caption daring |
| EBU‑TT‑D | Pemutar daring penyiar Eropa | Elemen sering ditulis dengan awalan: <tt:p> |
| SMPTE‑TT | Caption televisi Amerika secara daring | Tambahan SMPTE, untuk caption yang dibawa dari siaran |
iTT (.itt) |
Pengiriman ke iTunes Store dan Apple TV | Waktu dalam frame (ttp:timeBase="smpte") |
TTML di Subtitld
- Teks dan pemisah baris setiap subtitle
- Miring, tebal, garis bawah, coret, dan warna
- Posisinya di layar
- Pembicara, sebagai agen
- Waktu mulai dan selesai, hingga milidetik, berurutan
- Font, ukuran, latar belakang dan garis tepi per baris
- Ukuran dan letak tepat sebuah region
- Gaya yang berubah seiring waktu, ruby, subtitle gambar
- Terjemahan di samping yang asli, dubbing, wajah pembicara
Simpan proyek .usfx untuk menyimpan apa yang menjadi milik Subtitld.
Membuka berkas TTML
Subtitld membuka .ttml, .dfxp, .itt dan .xml, dan:
- membaca TTML apa pun bentuknya: dalam namespace-nya, dalam namespace DFXP lama, atau dengan
tt:di depan setiap elemen; - membaca setiap bentuk waktu, masing-masing dihitung dari div dan body tempatnya berada;
- mengikuti gaya sebagaimana TTML menerapkannya, mempertahankan miring, tebal, garis bawah, coret, dan warna apa pun selain putih;
- menempatkan setiap subtitle di tempat region-nya menampilkannya;
- mengambil agen sebagai pembicara, siap untuk dubbing, dan
xml:langberkas sebagai bahasa proyek; - membaca encoding yang dinyatakan berkas, dan entitas HTML seperti
.
Berkas yang bukan XML well-formed akan dibuka dengan pesan yang menyebutkan baris dan kolomnya. Berkas yang sama sekali bukan TTML akan diberi tahu demikian.
Mengekspor TTML
Export, lalu Subtitle dan TTML atau DFXP, menawarkan:
- TeksYang asli, terjemahan, atau keduanya, dengan terjemahan di bawah.
- Nama pembicaraDihilangkan, ditulis sebelum teks (Thom: …), atau sebagai agen (
ttm:agent), cara asli TTML. - PemformatanDipertahankan, atau dihapus.
- Geser waktuSetiap subtitle dimajukan atau dimundurkan dengan selisih yang sama.
- LookPutih dengan garis tepi hitam, atau seperti yang digambar pratinjau Subtitld: font, warna dan kotak transparannya.
Berkas adalah TTML 1 dalam UTF-8. Waktu ditulis sebagai 00:00:23.000, setiap posisi subtitle sebagai region, pemformatan sebagai span, dan pemisah baris sebagai <br/>. xml:lang-nya adalah bahasa teks yang dimuatnya. TTML dan DFXP menghasilkan berkas yang sama; hanya ekstensinya yang berbeda.
TTML atau WebVTT?
WebVTT untuk <track> di halaman web: peramban membacanya sendiri. TTML untuk penyiar, untuk layanan streaming yang memintanya, dan untuk pemutar yang membacanya, seperti dash.js dan Shaka Player. Halaman WebVTT memuat sisanya.
Tahukah Anda
TTML 1.0 menjadi W3C Recommendation pada November 2010, setelah draf-draf yang dinamai dari profil pertamanya: Distribution Format Exchange Profile, DFXP.
Namespace lama, http://www.w3.org/2006/10/ttaf1, berasal dari draf 2006, ketika TTML bernama Timed Text Authoring Format. Berkas-berkas masih membawanya.
Pada 2016 W3C menerima Technology & Engineering Emmy untuk TTML, bersama HBO, Netflix, Telestream dan SMPTE.
Format terkait
Buka di Subtitld bersama videonya, lalu atur waktunya pada bentuk gelombang.