Audio description - iOS
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 composition = AVMutableComposition()
guard let videoUrl = Bundle.main.url(
forResource: "Appt",
withExtension: "mp4"
) else {
return
}
let videoAsset = AVURLAsset.init(url: videoUrl)
// Add video track to composition
if let videoTrack = try await videoAsset.loadTracks(withMediaType: .video).first,
let videoCompositionTrack = composition.addMutableTrack(
withMediaType: .video,
preferredTrackID: kCMPersistentTrackID_Invalid
) {
do {
try await videoCompositionTrack.insertTimeRange(
CMTimeRange(start: .zero, duration: videoAsset.load(.duration)),
of: videoTrack,
at: .zero
)
} catch { }
}
// Find and add the audio description track
for track in try await videoAsset.load(.tracks) {
if try await track.load(.mediaCharacteristics).contains(.describesVideoForAccessibility) {
if let audioCompositionTrack = composition.addMutableTrack(
withMediaType: track.mediaType,
preferredTrackID: kCMPersistentTrackID_Invalid
) {
do {
try await audioCompositionTrack.insertTimeRange(
CMTimeRange(start: .zero, duration: videoAsset.load(.duration)),
of: track,
at: .zero
)
} catch { }
break
}
}
}