İçeriğe geç
Free Subtitle Converter
Dil
Renk teması
Bizi destekleyin

XML altyazılar: TTML, DFXP ve IMSC

TTML, DFXP ve IMSC altyazı dosyaları nedir, zamanlamaları nasıl çalışır ve bu sitenin dönüştürücüsü onlardan tam olarak neyi okur, neyi dışarıda bırakır.

Yazan: Syed Peera Saheb · Yayımlanma

Kısa yanıt

TTML, DFXP ve IMSC, W3C'nin Timed Text Markup Language'ı üzerine kurulu XML altyazı dosyalarıdır. DFXP, TTML'nin eski adıdır; IMSC ise dijital yayın ve yayıncılık teslimatlarında kullanılan bir TTML profilidir.

.ttml, .dfxp veya .xml altyazı dosyanız varsa ve SRT ya da VTT'ye ihtiyacınız varsa, bu sitedeki dönüştürücü metnini, zamanlamalarını, satır sonlarını ve italik, kalın ve altı çizili biçimlendirmesini okuyabilir. Konumları, renkleri veya yazı tiplerini korumaz ve altyazı içeren her XML dosyasını okuyamaz.

Tek aile, birkaç ad

TTML, zamanlı metin için bir W3C standardıdır. Yazıldığı sırada adı DFXP (Distribution Format Exchange Profile) idi ve TTML 1 belirtimi bu eski adın profil adlarında ve dosya uzantılarında yaşadığını hâlâ belirtir. Pratikte bir .dfxp dosyası ile bir .ttml dosyası aynı türde belge içerir. TTML2 ikinci sürümdür ve daha fazla özellik ekler.

TTML çok kapsamlı olduğundan sektörler profiller tanımlar: bir dosyanın hangi özellikleri kullanabileceğini belirten alt kümeler. Internet Media Subtitles and Captions profili olan IMSC en yaygın olanlardan biridir. Güncel sürümleri yalnızca metin ve yalnızca görüntü içeren birer profil tanımlar. EBU-TT Avrupalı yayıncıların kullandığı bir profildir, SMPTE-TT ise Amerikan yayıncılığında kullanılır. Hepsi bir <tt> kök öğesiyle başlar.

Bir TTML dosyası nasıl görünür

Bir TTML belgesinin bir head ve bir body bölümü vardır. Head, yazı tipi veya renk gibi stilleri ve ekranın alanları olan bölgeleri (region) tanımlayabilir. Body ise her biri başlangıç ve bitiş zamanı ile altyazı metnini içeren <p> öğelerini, yani paragrafları barındırır. <br/> yeni bir satır başlatır; <span> öğeleri ise bir satırın bölümlerine stil veya zaman verir.

Kısa bir TTML dosyası
<?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:tickRate="10000000">
  <head>
    <styling><style xml:id="it" tts:fontStyle="italic" tts:color="yellow"/></styling>
    <layout><region xml:id="top" tts:origin="10% 5%" tts:extent="80% 20%"/></layout>
  </head>
  <body>
    <div>
      <p begin="12000000t" end="35000000t" region="top">Hello<br/><span style="it">there</span></p>
    </div>
  </body>
</tt>

TTML zamanlamaları nasıl çalışır

TTML bir zamanı yazmanın birkaç yoluna izin verir. Saat biçimindeki zamanlar 00:00:01.200 veya sonunda kare numarası olan 00:00:01:05 gibi görünür. Göreli zamanlar birimli bir sayıdır: 1.2s, 1200ms, kareler için 30f veya tick'ler için 12000000t. Tick'ler dijital yayın hizmetlerinden gelen dosyalarda yaygındır; kök öğedeki tickRate bir saniyenin kaç tick olduğunu söyler, yani 10.000.000 tick hızında 12000000t, 1,2 saniyedir.

Zamanlar göreli de olabilir. Bir div'in, içindeki paragrafların üzerine eklediği kendi başlangıç zamanı olabilir; bir paragraf bitiş zamanı yerine süre verebilir ve zamanı olmayan bir paragraf zamanları span'lerinden alabilir. Basit bul-değiştir araçlarının TTML zamanlamalarını çoğu zaman yanlış yapmasının nedeni budur.

Bu sitenin okudukları

Dönüştürücü TTML'yi dosya uzantısından bağımsız olarak <tt> kök öğesinden tanır; bu yüzden .ttml, .dfxp ve .xml dosyalarının hepsi açılır. Yukarıdaki örnek, 1,2 ile 3,5 saniye arasında iki satırlı bir altyazıya dönüşür; ikinci satır italiktir. Ayrıntılı olarak şunları okur:

  • Kesirli veya kareli saat biçimindeki zamanlar ile saat, dakika, saniye, milisaniye, kare ve tick cinsinden göreli zamanlar.
  • Kök öğedeki frameRate, frameRateMultiplier, subFrameRate ve tickRate ayarları. Tick hızı yoksa belirtimde açıklandığı gibi bunu kare hızından türetir veya saniyede bir tick kullanır.
  • Paragraflarda ve span'lerde begin, end ve dur; kapsayan body ve div öğelerinin başlangıç zamanları da eklenerek.
  • <br/> olarak yazılan satır sonları.
  • Doğrudan bir öğeye veya adlandırılmış bir stil aracılığıyla ayarlanmış olsun, italik, kalın ve altı çizili.
  • EBU-TT ve bazı IMSC dosyalarındaki <tt:p> gibi ad alanı önekli öğeler. Düzenleyicilere yönelik notlar gibi meta veriler atlanır ve hiçbir zaman altyazı metnine dönüşmez.

Dışarıda bıraktıkları

Dönüştürücü sözcükleri ve zamanlamaları korur, sunumu atar. Bölgeler ve konumlar, renkler, yazı tipleri, boyutlar, arka planlar, dış çizgiler ve metin yönü ayarları aktarılmaz. Bir dosya farklı bölgelerde aynı anda iki paragraf gösteriyorsa, örneğin üstte ve altta iki konuşmacı, bunlar çakışan iki altyazıya dönüşür; altyazı denetleyici bunları gösterecektir.

Bazı XML altyazı dosyaları hiç TTML değildir ve sayfa bunları altyazı olarak tanımadığını belirtir. Kök öğesi <tt> yerine <timedtext> veya <transcript> olan YouTube'un kendi timedtext XML'i de buna dahildir. Metnin görüntülerini saklayan görüntü tabanlı IMSC dosyalarında okunacak metin yoktur. SMPTE drop-frame zaman kodları gibi alışılmadık zamanlama modları özel olarak işlenmez; bu yüzden önizlemenin sonuna yakın birkaç altyazıyı videoyla karşılaştırın.

Ne yazar

TTML veya DFXP'ye dönüştürdüğünüzde dönüştürücü basit bir TTML 1 belgesi yazar: her altyazı milisaniye cinsinden begin ve end saat zamanları olan bir paragrafa dönüşür, satır sonları <br/> olur, italik, kalın ve altı çizili ise ilgili stil özniteliğine sahip span'lere dönüşür. Stil veya bölge içeren bir head yoktur; bu yüzden oynatıcılar varsayılan görünümlerini kullanır. DFXP seçeneği aynı belgeyi .dfxp uzantısıyla yazar.

Dönüştürücü altyazılarınızın hangi dilde olduğunu bilemediği için kök öğedeki dil özniteliği boş bırakılır. Bazı platformlar bunu zorunlu tutar. Sizinki de öyleyse dosyayı yüklemeden önce bir metin düzenleyicide açın ve xml:lang değerini en veya es gibi bir kodla doldurun.

Dönüştürücünün örnekten yazdığı dosya
<?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="">
  <body>
    <div>
      <p begin="00:00:01.200" end="00:00:03.500">Hello<br/><span tts:fontStyle="italic">there</span></p>
    </div>
  </body>
</tt>

TTML veya DFXP'yi SRT ya da VTT'ye dönüştürme

Dönüştürme birkaç saniye sürer ve dosya cihazınızda kalır.

  • TTML'den SRT'ye veya DFXP'den SRT'ye dönüştürücüyü ya da ana dönüştürücüyü açın ve .ttml, .dfxp veya .xml dosyanızı seçin.
  • Özeti kontrol edin. Kaç altyazı bulunduğunu ve zamanlaması okunamayan paragraf olup olmadığını gösterir.
  • SRT veya VTT gibi çıktı biçimini seçin ve önizlemeye göz atın.
  • Dosyanın dönüştürücünün işlemediği bir zamanlama modu kullanmış olma ihtimaline karşı sonucu videonuzla oynatın ve başa yakın bir altyazı ile sona yakın bir altyazıyı karşılaştırın.
  • Dosyayı indirin. UTF-8 olarak kaydedilir.

TTML ne zaman kullanılmalı, ne zaman kullanılmamalı

Bir platform, dijital yayın hizmeti veya yayıncı istediğinde TTML ya da DFXP kullanın; teslimat belirtimleri genellikle bir profil belirtir ve sade bir TTML 1 dosyası bunu karşılayabilir de karşılamayabilir de. Oynatıcılarda, düzenleyicilerde ve video platformlarında günlük kullanım için SRT veya WebVTT daha basittir ve daha yaygın desteklenir. Bir TTML dosyası alıp yalnızca izlemek veya düzenlemek istiyorsanız SRT'ye dönüştürün.

Her durumda orijinal dosyayı saklayın. SRT'ye dönüştürmek bölgeleri ve stilleri kalıcı olarak atar; ileride TTML'yi orijinal konumlarıyla yeniden teslim etmeniz gerekirse SRT'den yeniden oluşturulmuş bir TTML dosyası yerine kaynağa ihtiyacınız olacaktır.

Sık sorulan sorular

DFXP ile TTML aynı mı? Pratikte evet. DFXP, TTML taslak aşamasındayken kullanılan addı ve dönüştürücü ikisini de aynı şekilde işler.

.xml dosyam neden altyazı dosyası olmadığını söylüyor? Ya TTML değildir (örneğin YouTube timedtext XML) ya da bir <tt> kök öğesi içermiyordur. Dönüştürücü bu dosyaları okumaz.

Dönüştürülen SRT her altyazının konumunu korur mu? Hayır. SRT'de altyazıları yerleştirmenin standart bir yolu yoktur ve dönüştürücü TTML bölgelerini hiçbir biçime aktarmaz.

Altyazı dönüştürücüyü aç
Bana bir kahve ısmarla