WCAG 1.2.2 · A Seviyesi

Altyazılar (Önceden Kaydedilmiş)

Önceden kaydedilmiş ve hem ses hem görüntü içeren medyada, konuşmaların ve anlam taşıyan seslerin senkronize altyazılarla sunulmasını ister.

Kısaca

Önceden kaydedilmiş ve hem ses hem görüntü içeren her medya (eğitim videosu, tanıtım filmi, webinar kaydı, röportaj) için senkronize altyazı sağlanmalıdır. Altyazı yalnızca konuşulanları değil, anlamı etkileyen diğer sesleri de içerir.

Amaç, sesi duyamayan veya duymak istemeyen kullanıcıların videodaki bilgiye eşit şekilde ulaşabilmesidir. Altyazı, video ile eşzamanlı ilerlemeli ve eksiksiz, doğru, anlaşılır olmalıdır.

Neleri kapsar?

  • Konuşmalar: Videodaki tüm konuşmaların metne dökülmesi.
  • Konuşmacı değişimleri: Birden fazla kişi konuşuyorsa kimin konuştuğunun anlaşılması.
  • Anlam taşıyan sesler: Kapı zili, alkış, alarm, müzik gibi içeriğin anlaşılması için gerekli sesler.
  • Senkronizasyon: Altyazının konuşma ile aynı anda görünmesi.
  • Kapsam dışı notlar: Videodaki yalnızca görsel bilgilerin sesle veya metinle aktarılması sonraki kriterin (Sesli Betimleme veya Medya Alternatifi) konusudur. Yalnızca ses içeren kayıtlar için transkript, bir önceki kriterin konusudur.

Kimleri etkiler?

Sağır ve işitme güçlüğü olan kullanıcılar bu kriterden doğrudan yararlanır. Ayrıca sesi açamayan (toplu taşıma, ofis, kütüphane), gürültülü bir ortamda bulunan, konuşulan dili yeni öğrenen veya konuşmayı yazıyla daha rahat takip eden kullanıcılar da altyazıya ihtiyaç duyar. Yardımcı teknolojiyle gezinen kullanıcılar için ise altyazı seçeneğinin klavye ve ekran okuyucu ile açılabilmesi önemlidir.

Kontrol listesinde

Bu kriter, Bakanlığın A Seviyesi Kontrol Listesi'nde 21–23 numaralı soruları kapsar. Yönlendirme soruları sayfada ilgili içerik olup olmadığını belirler; yoksa liste sizi sonraki soruya geçirir. Aşağıdaki açıklamalar sorulardan alıntı değil, özetidir. Soruların tam metni için resmî listeye bakın.

BK 3 kapsamındaki sorular
SoruTürüNe kontrol eder?
21YönlendirmeSayfada veya ekranda, önceden kaydedilmiş ve hem ses hem görüntü barındıran bir medya olup olmadığını sorar. Video, aynı sayfadaki bir metnin birebir karşılığı olarak sunulmuş ve bu açıkça belirtilmişse kapsam dışı bırakılabilir.
22★ ZorunluBu medyalar için konuşmaları ve önemli sesleri içeren, görüntüyle eşzamanlı çalışan altyazı sunulup sunulmadığını kontrol eder.
23★ ZorunluSunulan altyazının kalitesini sorgular: konuşmalar, konuşmacı değişimleri ve anlam taşıyan sesler eksiksiz, doğru ve anlaşılır biçimde yer almalıdır.

Resmî kontrol listesini indirin (PDF), yeni sekmede açılır

Web için kod örnekleri

1. Videoya altyazı dosyası bağlamak

HTML5 video için altyazı, öğesiyle bir WebVTT dosyasına bağlanır. Altyazı dosyası olmayan video, 22. soruyu karşılamaz.

Hatalı
Doğru

2. Altyazı içeriği: konuşmacı ve anlam taşıyan sesler

Yalnızca konuşulan sözleri yazmak yeterli değildir. Konuşmacı değişimi ve içeriği etkileyen sesler de altyazıda yer almalıdır (23. soru).

Hatalı
WEBVTT

00:00:02.000 --> 00:00:05.000
Başvurunuz alınmıştır.

00:00:05.500 --> 00:00:08.000
Evraklarınızı yarın getirebilir miyim?
Doğru
WEBVTT

00:00:01.000 --> 00:00:02.000
[Kapı zili çalıyor]

00:00:02.000 --> 00:00:05.000
Memur: Başvurunuz alınmıştır.

00:00:05.500 --> 00:00:08.000
Vatandaş: Evraklarımı yarın
getirebilir miyim?

3. Altyazıyı açıp kapatan özel kontrol

Kendi oynatıcınızı yazıyorsanız altyazı düğmesi gerçek bir  

4. Gömülü YouTube videosu

Gömülü oynatıcıda altyazının görünmesi için önce videonun kendisine altyazı yüklenmiş olmalıdır. cc_load_policy parametresi, altyazı varsa varsayılan olarak açık başlatır; altyazı yoksa bir şey eklemez.

5. Altyazının görünürlüğünü bozan stil

Altyazı metni arka plan ile yeterli kontrast taşımalı ve oynatıcı arayüzü tarafından kapatılmamalıdır. Tarayıcıların altyazı biçimlendirmesi ::cue ile ayarlanabilir.

Hatalı
video::cue {
  color: #cccccc;
  background: transparent;
}
Doğru
video::cue {
  color: #ffffff;
  background: rgba(0, 0, 0, 0.8);
  font-size: 1.1em;
}

Mobil için kod örnekleri

iOS (SwiftUI)

Standart oynatıcı, videoda gömülü veya HLS bildiriminde tanımlı altyazıları kendi denetim menüsünde sunar. Aşağıdaki örnek, Türkçe altyazı tercihini oynatıcıya bildirir.

import SwiftUI
import AVKit

struct DuyuruVideosu: View {
    @State private var oynatici = AVPlayer(
        url: URL(string: "https://ornek.belediye.gov.tr/video/duyuru.m3u8")!
    )

    var body: some View {
        VideoPlayer(player: oynatici)
            .frame(height: 220)
            .onAppear {
                // Altyazı (legible) kanalında Türkçe ve erişilebilirlik amaçlı iz tercih edilir.
                let kriter = AVPlayerMediaSelectionCriteria(
                    preferredLanguages: ["tr"],
                    preferredMediaCharacteristics: [.transcribesSpokenDialogForAccessibility]
                )
                oynatici.setMediaSelectionCriteria(kriter, forMediaCharacteristic: .legible)
            }
    }
}

Android (Jetpack Compose)

Media3 ExoPlayer ile altyazı dosyası, medya öğesine SubtitleConfiguration olarak eklenir. PlayerView altyazı düğmesini kendi denetimlerinde gösterir.

import android.net.Uri
import androidx.compose.runtime.*
import androidx.compose.ui.viewinterop.AndroidView
import androidx.compose.ui.platform.LocalContext
import androidx.media3.common.C
import androidx.media3.common.MediaItem
import androidx.media3.common.MimeTypes
import androidx.media3.exoplayer.ExoPlayer
import androidx.media3.ui.PlayerView

@Composable
fun DuyuruVideosu() {
    val context = LocalContext.current

    val oynatici = remember {
        val altyazi = MediaItem.SubtitleConfiguration.Builder(
            Uri.parse("https://ornek.belediye.gov.tr/video/duyuru.tr.vtt")
        )
            .setMimeType(MimeTypes.TEXT_VTT)
            .setLanguage("tr")
            .setLabel("Türkçe")
            .setRoleFlags(C.ROLE_FLAG_CAPTION)
            .setSelectionFlags(C.SELECTION_FLAG_DEFAULT)
            .build()

        val medya = MediaItem.Builder()
            .setUri("https://ornek.belediye.gov.tr/video/duyuru.mp4")
            .setSubtitleConfigurations(listOf(altyazi))
            .build()

        ExoPlayer.Builder(context).build().apply {
            setMediaItem(medya)
            prepare()
        }
    }

    DisposableEffect(Unit) {
        onDispose { oynatici.release() }
    }

    AndroidView(
        factory = { ctx ->
            PlayerView(ctx).apply {
                player = oynatici
                setShowSubtitleButton(true)
            }
        }
    )
}

Nasıl test edilir?

  • Sesi kapatıp izleyin: Videoyu sessizde baştan sona izleyin. Anlatılan her şeyi altyazıdan takip edebiliyor musunuz?
  • Senkronizasyonu kontrol edin: Altyazı, konuşma ile aynı anda mı görünüyor, belirgin bir gecikme veya öne geçme var mı?
  • Anlam taşıyan sesleri arayın: Alarm, zil, alkış gibi içeriği etkileyen sesler ve konuşmacı değişimleri altyazıda belirtilmiş mi?
  • Klavye ve ekran okuyucu ile deneyin: Altyazı düğmesine Tab ile ulaşabiliyor, açıp kapatabiliyor ve durumunu duyabiliyor musunuz?
  • Mobilde cihaz ayarlarıyla deneyin: İşletim sisteminin altyazı tercihleri açıkken uygulama altyazıyı gösteriyor mu?
  • Otomatik araçların sınırı: Otomatik tarayıcılar genellikle öğesinde bulunup bulunmadığını işaretleyebilir. Altyazının doğruluğunu, eksiksizliğini, senkronizasyonunu ve anlam taşıyan seslerin yazılıp yazılmadığını kontrol edemezler. Üçüncü taraf oynatıcılarda (gömülü videolar) altyazının varlığını da güvenilir biçimde göremeyebilirler. Bu nedenle bu kriter büyük ölçüde elle denetlenmelidir.

Sık yapılan hatalar

  • Otomatik altyazıyı gözden geçirmeden yayınlamak: Otomatik üretilen altyazılar özel adları, Türkçe ekleri ve teknik terimleri yanlış yazabilir. Yayınlamadan önce düzeltilmelidir.
  • Yalnızca konuşmayı yazmak: Konuşmacı değişimi ve anlam taşıyan sesler eksik kalır.
  • Altyazıyı ayrı bir dosya olarak sunmak: Altyazı videoyla eşzamanlı görünmüyor, yalnızca ayrı bir metin olarak indiriliyorsa bu kriter karşılanmaz.
  • Altyazıyı varsayılan olarak erişilemez bırakmak: Altyazı düğmesi klavyeyle odaklanamıyor veya ekran okuyucuya adı bildirilmiyorsa kullanıcı altyazıyı açamaz.
  • Düşük kontrastlı veya kapanan altyazı: Altyazı metni arka planda okunmuyor ya da oynatıcı denetimlerinin altında kalıyorsa işlevini yitirir.
  • Gömülü videoda altyazı olduğunu varsaymak: Videoyu YouTube veya benzeri bir hizmetten gömmek altyazının otomatik olarak doğru ve eksiksiz olduğu anlamına gelmez.
  • Altyazı yerine transkript sunmak: Ses ve görüntü içeren medyada ayrı bir transkript, senkronize altyazının yerini tutmaz.

Kaynaklar

Kontrol listesi sürümü: V2.2.30.01 (2026). Bu sayfa bilgilendirme amaçlıdır; bağlayıcı metin için Aile ve Sosyal Hizmetler Bakanlığı'nın resmî kontrol listesini esas alın.

Sitenizde bu kriter nasıl görünüyor?

Ücretsiz tarama, bu kriterdeki sorunları ve diğerlerini Bakanlığın A Seviyesi Kontrol Listesi esas alınarak listeler.

Sitemi ücretsiz tara