SRT'den WebVTT'ye 35 satırda dönüştürücü: Tarayıcılar yalan söylüyor
Altyazı desteği konusunda tarayıcılar ve oynatıcılar seni yanıltabiliyor. RKMovies Android uygulamasını geliştiren hammiwor, internet'ten gelen SRT dosyalarının HTML5 video elementinde sessizce çalışmadığını fark etti. Sorun basit ama sinir bozucu: SRT ve WebVTT biçimleri aynı değil.
En kritik fark zaman damgaları. SRT dosyaları `00:00:01,000` (virgül) kullanırken, WebVTT `00:00:01.000` (nokta) bekliyor. Virgül varsa altyazı hiç görünmüyor. Ek olarak SRT dosyaları satır numaraları ile başlar (cue index), WebVTT bunu cue kimliği olarak kabul eder ama sıra dışı numaralar sorun yaratır. HTML benzeri etiketler (`<b>`, `<i>`) ve ASS override etiketleri (`{\an8}`, `{\pos(...)}`) de sıkıntı çıkarır, tarayıcı bazılarını render eder, bazılarını görmezden gelir, override etiketleri ise düz metin olarak ekranda görünür.
Bir de BOM (Byte Order Mark) ve Windows satır sonları (`\r\n`) var. Birçok dosya UTF-8 BOM ile başlıyor. captionVtt() fonksiyonu dört işi hallediyor: BOM ve `\r` karakterlerini siliyor, boş satırlardan blok ayırıyor, sayısal satırı atıyor, zaman satırındaki virgülleri noktalara dönüştürüyor, son olarak metin satırlarını temizliyor (etiketleri kaldırıyor, HTML entity'leri çözerek).
Orijinal yazıda tam kod var. Eğer mobil uygulamada altyazı gösteriyorsan ve SRT dosyaları ile uğraşıyorsan, bu tür bir dönüştürücü neredeyse zorunlu. Tarayıcı ve oynatıcı üreticileri 'WebVTT desteği var' derken, gerçekte sadece standarda uygun dosyaları render ediyor.
0 yorum