Audio description on iOS
Videos should include audio description when important visual details are shown which you cannot hear. Audio description is an additional sound track which describes these important visual details. This allows people who are blind or have difficulty processing visual information to understand the content.
On iOS, AVPlayer
has support to add audio description. Users can enable audio description automatically through System Preferences. Turning on audio description works automatically if you add the public.accessibility.describes-video
property to the audio description track.
The code example below shows a basic implementation of enabling audio description embedded inside a 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: "Appt",
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
}
}