Altyazı Formatları: SRT, VTT ve ASS Arasındaki Farklar
6 dk okuma
Altyazı dosyaları basit metin dosyalarıdır ama aralarındaki farklar, videonuzun nerede ve nasıl görüneceğini belirler. Bu yazıda üç yaygın formatın yapısını, karakter kodlaması sorununun kaynağını ve senkron kaymalarının teknik sebeplerini açıklıyoruz.
SRT: en yaygın ve en basit
SubRip Text formatı, adını bir DVD altyazı çıkarma programından alır ve yapısı olabildiğince basittir:
1
00:00:01,500 --> 00:00:04,200
Merhaba, bu ilk altyazı satırı.
2
00:00:04,500 --> 00:00:07,800
Bu ikinci satır ve
iki satıra bölünmüş durumda.
Her blok dört parçadan oluşur:
- Sıra numarası (1'den başlar)
- Zaman aralığı (başlangıç
-->bitiş) - Metin (bir veya birden çok satır)
- Boş satır (blokları ayırır)
Zaman formatı saat:dakika:saniye,milisaniye şeklindedir ve milisaniye ayracı virgüldür. Bu detay VTT'yle ayrımın kilit noktalarından biridir.
SRT'nin sınırları:
- Stil bilgisi yoktur. Yazı tipi, boyut, renk, konum — hiçbiri dosyada tanımlı değildir. Oynatıcı veya yakma aracı bunları dışarıdan belirler.
- Konumlandırma yoktur. Her altyazı aynı yerde görünür (genellikle alt orta).
- Sınırlı biçimlendirme. Bazı oynatıcılar
<i>(italik),<b>(kalın),<u>(altı çizili) HTML etiketlerini destekler ama bu standart bir özellik değildir; her oynatıcı yorumlamaz.
Buna karşılık evrensel desteği vardır: hemen her oynatıcı, her televizyon, her altyazı düzenleyici SRT okur. Basit olduğu için bir metin editöründe elle düzenlenebilir.
VTT: web için tasarlanmış SRT
WebVTT (Web Video Text Tracks), HTML5 video için geliştirildi. SRT'ye çok benzer ama üç fark taşır:
WEBVTT
1
00:00:01.500 --> 00:00:04.200
Merhaba, bu ilk altyazı satırı.
2
00:00:04.500 --> 00:00:07.800 position:50% line:80%
Bu satır özel konumlandırılmış.
Fark 1: WEBVTT başlığı. Dosya bu satırla başlamak zorundadır.
Fark 2: Nokta ayracı. Zaman damgalarında milisaniye ayracı virgül değil noktadır. Bir SRT dosyasını VTT'ye çevirmenin en basit yolu, başa WEBVTT satırı eklemek ve virgülleri noktaya çevirmektir.
Fark 3: Konumlandırma ve stil ipuçları. Zaman satırının sonuna position, line, align, size gibi değerler eklenebilir. Ayrıca CSS ile stillendirme mümkündür.
VTT'nin asıl önemi: HTML5 <video> etiketi yalnızca VTT kabul eder.
<video controls>
<source src="video.mp4" type="video/mp4">
<track src="altyazi-tr.vtt" kind="subtitles" srclang="tr" label="Türkçe" default>
<track src="altyazi-en.vtt" kind="subtitles" srclang="en" label="English">
</video>
Bu yapının önemli bir avantajı var: altyazı metni arama motorları tarafından okunabilir. Yakılmış bir altyazı görüntünün parçasıdır ve makineler onu okuyamaz; ayrı bir VTT dosyası ise metin olarak erişilebilirdir.
kind özniteliği farklı iz türlerini ayırır: subtitles (çeviri), captions (işitme engelliler için, ses efektlerini de içerir), descriptions (görme engelliler için sesli betimleme), chapters (bölüm işaretleri).
ASS/SSA: stil gücü
Advanced SubStation Alpha, çok daha karmaşık bir formattır ve stil bilgisini kendi içinde taşır:
[Script Info]
ScriptType: v4.00+
PlayResX: 1920
PlayResY: 1080
[V4+ Styles]
Format: Name, Fontname, Fontsize, PrimaryColour, OutlineColour, ...
Style: Varsayilan,Arial,48,&H00FFFFFF,&H00000000,...
Style: Tabela,Arial,36,&H0000FFFF,&H00000000,...
[Events]
Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Text
Dialogue: 0,0:00:01.50,0:00:04.20,Varsayilan,,0,0,0,,Merhaba.
Dialogue: 0,0:00:05.00,0:00:07.00,Tabela,,0,0,0,,{\pos(800,200)}KAPALI
ASS'in sunduğu yetenekler:
- Adlandırılmış stiller. Farklı konuşmacılar, farklı türde metinler için ayrı stiller tanımlanır.
- Serbest konumlandırma.
\pos(x,y)ile altyazı ekranın herhangi bir noktasına yerleştirilebilir. - Renk ve kenarlık kontrolü. Her stil kendi renk paletini taşır.
- Animasyon. Kayma, solma, döndürme, ölçekleme.
- Karaoke etkisi. Şarkı sözlerinde hecelerin sırayla vurgulanması.
- Katmanlar. Üst üste gelen altyazılar.
Ne zaman gerekli? Altyazının konumu, rengi veya hareketi içeriğe göre değişmesi gerektiğinde: ekranda görünen bir tabelanın çevirisini o tabelanın yanına koymak, farklı konuşmacıları renklerle ayırmak, şarkı sözlerini vurgulamak.
Bedeli: Desteği SRT kadar geniş değildir. Bazı oynatıcılar stilleri yok sayar ve düz metin gösterir; bazıları hiç açmaz.
Karakter kodlaması: Türkçe'nin baş belası
Bu, Türkçe altyazılarda en sık yaşanan sorundur ve kaynağı formatların doğasındadır.
Altyazı dosyaları düz metindir ve metin dosyaları hangi kodlamada kaydedildiklerini kendiliğinden belirtmez. Bir program dosyayı açarken bir varsayım yapmak zorundadır.
Tarihsel olarak Türkçe metinler şu kodlamalarda saklanırdı:
| Kodlama | Dönem | Durum | |---|---|---| | ISO-8859-9 (Latin-5) | 1990'lar-2000'ler | Eski | | Windows-1254 | Windows sistemleri | Eski | | UTF-8 | 2000'lerden itibaren | Modern standart |
Bir Windows-1254 dosyasını UTF-8 varsayarak okuduğunuzda, Türkçe'ye özgü harfler bozulur:
| Doğru | Bozuk görünüm | |---|---| | ş | þ veya ÅŸ | | ğ | ð veya ÄŸ | | ı | ý veya ı | | İ | Ý veya İ | | ç | ç | | ü | ü |
Çözüm: Dosyayı bir metin editöründe açın ve UTF-8 olarak yeniden kaydedin. Not Defteri'nde Farklı Kaydet penceresinin altında kodlama seçeneği bulunur; VS Code'da sağ alt köşede mevcut kodlama gösterilir ve tıklanarak değiştirilebilir.
BOM meselesi: UTF-8 dosyaları isteğe bağlı olarak başlarında bir "bayt sırası işareti" (BOM) taşıyabilir. Bazı araçlar BOM'lu dosyalarda ilk satırı yanlış okur. Sorun yaşıyorsanız BOM'suz UTF-8 deneyin.
Kare hızı ve senkron kayması
Altyazı senkronu iki farklı biçimde bozulur ve her birinin çözümü farklıdır.
Sabit kayma
Altyazı sürekli aynı miktarda erken veya geç geliyor.
Sebep: Videonuzun başında altyazı dosyasında olmayan bir bölüm var (dağıtımcı logosu, uyarı ekranı) veya tersi.
Çözüm: Tüm zaman damgalarına aynı değeri ekleyin veya çıkarın. Altyazı düzenleyicileri bunu tek işlemde yapar.
Artan kayma
Başta senkron iyi, sona doğru bozuluyor.
Sebep: Kare hızı uyuşmazlığı. Aynı içeriğin farklı kare hızlarında sürümleri vardır:
| Standart | Kare hızı | Kullanım | |---|---|---| | Sinema | 24 fps | Film çekimi | | PAL | 25 fps | Avrupa televizyon | | NTSC | 23.976 fps | Amerika, dijital dağıtım | | NTSC video | 29.97 fps | Amerika televizyon |
25 fps için hazırlanmış bir altyazı, 23.976 fps videoda oynatıldığında her saniye yaklaşık %4 hata birikir. İki saatlik bir filmde bu, sonlara doğru beş dakikayı aşan bir kayma demektir.
Çözüm: Oransal düzeltme. Tüm zaman damgaları (hedef fps / kaynak fps) oranıyla çarpılır. Altyazı düzenleyicileri "kare hızı dönüştürme" seçeneği sunar.
Bazı eski formatlar (MicroDVD gibi) zamanı doğrudan kare numarasıyla saklar, saniyeyle değil. Bu formatlarda kare hızı bilgisi olmadan zamanı hesaplamak imkânsızdır.
Gömme ve yakma: dosyada ne değişir
Gömme (soft subtitle): Altyazı, video kabına ayrı bir iz olarak eklenir. MKV bunu mükemmel destekler; MP4'te destek daha sınırlıdır (genellikle sadece belirli formatlar). Video verisine hiç dokunulmaz, dolayısıyla kopyalama yapılabilir ve kalite korunur.
Yakma (hardsub): Altyazı, her video karesinin üzerine çizilir ve piksel hâline gelir. Bu, videonun yeniden kodlanmasını gerektirir — dolayısıyla bir miktar kalite kaybı olur.
Yakma sırasında altyazı metni kalıcı olarak kaybolur; geriye sadece görüntü kalır. Bu yüzden:
- Geri alınamaz.
- Arama motorları okuyamaz.
- Ekran okuyucular erişemez.
- Kapatılamaz.
Buna karşılık hiçbir uyumluluk sorunu yaşanmaz — altyazı artık görüntünün bir parçasıdır.
Özetle
SRT en basit ve en yaygın desteklenen formattır ama stil ve konum bilgisi taşımaz; VTT web için tasarlanmıştır, HTML5 video etiketinin tek kabul ettiği formattır ve arama motorlarınca okunabilir olması ek bir avantaj sağlar; ASS ise stil, konum ve animasyon gücü sunar ama desteği daha dardır. Türkçe altyazılarda en sık karşılaşılan sorun karakter kodlamasıdır ve çözümü dosyayı UTF-8 olarak yeniden kaydetmektir. Senkron kaymalarında sabit kayma basit bir zaman ötelemesiyle, artan kayma ise kare hızı oranlı düzeltmeyle giderilir. Ve gömme ile yakma arasındaki seçim geri dönülemez bir karardır: yakma her yerde çalışır ama altyazı metni kalıcı olarak kaybolur.
Sıkça Sorulan Sorular
SRT ve VTT neredeyse aynı görünüyor, gerçek fark ne?
Yapısal olarak çok benzerler ama üç fark var: VTT dosyası WEBVTT satırıyla başlar, zaman damgalarında virgül yerine nokta kullanır (00:00:01.500), ve konumlandırma, hizalama ile stil ipuçlarını destekler. En önemlisi, HTML5 video etiketi yalnızca VTT kabul eder — SRT dosyasını web sayfasında doğrudan kullanamazsınız.
Karakter kodlaması neden bu kadar sorun çıkarıyor?
Çünkü altyazı dosyaları düz metindir ve metin dosyaları hangi kodlamada kaydedildiklerini kendiliğinden belirtmez. Bir program dosyayı açarken bir varsayım yapmak zorundadır. Türkçe altyazılar geçmişte Windows-1254 kodlamasıyla kaydedilirdi; UTF-8 varsayan modern bir araç bu dosyayı okuduğunda ş, ğ, ı harfleri anlamsız karakterlere dönüşür.
Kare hızı altyazı senkronunu neden etkiliyor?
Bazı eski altyazı formatları zamanı saniye yerine kare numarasıyla saklar. Ayrıca aynı filmin farklı kare hızlarında sürümleri olabilir — sinema 24 fps, PAL televizyon 25 fps, NTSC 23.976 fps. 25 fps için hazırlanmış bir altyazı 23.976 fps videoda oynatılırsa, her saniye küçük bir hata birikir ve iki saat sonunda kayma dakikalar seviyesine ulaşabilir.
ASS formatı ne zaman gerekli olur?
Altyazının konumu, rengi, yazı tipi veya hareketi içeriğe göre değişmesi gerektiğinde. Örneğin ekranda görünen bir tabelanın çevirisini o tabelanın yanına yerleştirmek, farklı konuşmacıları farklı renklerle ayırmak veya şarkı sözlerini karaoke tarzı vurgulamak. SRT bunların hiçbirini yapamaz; her satır aynı stille, aynı konumda görünür.
Bu konuyu Videoya Altyazı Ekle aracıyla hemen deneyin.
Videoya Altyazı Ekle aracını dene