Succescriterium 1.2.5 – Beschrijving van video

Als er belangrijke informatie te zien is die je niet kunt horen moet je de informatie beschrijven. Dit doe je door een geluidssppoor aan te bieden waar de visuele informatie in beschreven wordt. Op deze manier kunnen mensen die blind zijn alle informatie horen.

Oplossing

Vanaf Android 4.1 heeft de MediaPlayer ondersteuning voor meerdere audiosporen. Gebruik de selectTrack methode om het juist audiospoor te selecteren. De basis implementatie met MediaPlayer:

val player = MediaPlayer.create(this, R.raw.video)
try {
    player.trackInfo.forEachIndexed { index, trackInfo ->
        if (trackInfo.trackType == TrackInfo.MEDIA_TRACK_TYPE_AUDIO) {
            player.selectTrack(index)
            return@forEachIndexed
        }
    }
    player.start()
} catch (e: Exception) {
    e.printStackTrace()
}

Op iOS heeft AVPlayer ondersteuning om audiodescriptie toe te voegen. Gebruikers kunnen via de systeemvoorkeuren audiodescriptie automatisch laten inschakelen. Dit werkt als je de public.accessibility.describes-video karakteristiek toevoegt aan het audiospoor met audiodescriptie. Zo voeg je audiodescriptie toevoegen aan een video:

let videoComposition = AVMutableComposition()

// Add video track
guard let videoTrack = videoComposition.addMutableTrack(withMediaType: .video, preferredTrackID: kCMPersistentTrackID_Invalid) else { return }
guard let videoUrl = Bundle.main.url(forResource: "Video", withExtension: "mp4") else { return }
let videoAsset = AVURLAsset.init(url: videoUrl)
try? videoTrack.insertTimeRange(CMTimeRangeMake(start: .zero, duration: videoAsset.duration),
                                 of: videoAsset.tracks(withMediaType: .video)[0],
                                 at: .zero)

// Find & add audio description track
for track in videoAsset.tracks {
    if track.hasMediaCharacteristic(.describesVideoForAccessibility) {
        guard let audioTrack = videoComposition.addMutableTrack(withMediaType: track.mediaType, preferredTrackID: kCMPersistentTrackID_Invalid) else { return }
        try? audioTrack.insertTimeRange(CMTimeRange(start: .zero, duration: videoAsset.duration),
                                        of: track,
                                        at: .zero)
        break
    }
}

Voorbeeld

Luister naar een fragment van Gordon & Paddy waarbij visuele informatie beschreven is.

Meer succescriteria