Track Selection
You can select and manage different track types for your playback. This guide shows you how to list available tracks, get active tracks, and set tracks for your player.
Track types
Each playback can have four types of tracks: AUDIO, VIDEO, CLOSED CAPTION, and SUBTITLE. These different track types are denoted using MediaTrack.trackType.
public enum MediaTrackType {
/// Audio
case audio
/// Closed Caption
case closedCaption
/// Subtitle
case subtitle
/// Video
case video
}
List available tracks
You can obtain all the available tracks of each type using the tracks(for:) API on the player. This API returns an Array of MediaTrack objects.
// get all video tracks
var availableVideoTracks = player.tracks(for: .video)
//get all audio tracks
var availableAudioTracks = player.tracks(for: .audio)
//get all closedCaption tracks
var availableClosedCaptionTracks = player.tracks(for: .closedCaption)
//get all subtitle tracks
var availableSubtitleTracks = player.tracks(for: .subtitle)
Get active track
You can obtain the currently active track in each type from the Player using the selectedTrack(for:) API. This API returns the active track of any given MediaTrack.
///get active subtitles of tracks
var activeSubtitleTrack = player.selectedTrack(for: .subtitle)
///get active audio
var activeAudioTrack = player.selectedTrack(for: .audio)
///get active video
var activeVideoTrack = player.selectedTrack(for: .video)
///get active closedCaption
var activeCCTrack = player.selectedTrack(for: .closedCaption)
Set a track
From the list of available tracks for AUDIO, VIDEO, CLOSED CAPTION, and SUBTITLE, you can choose any track and select it using the selectTrack(for:) API.
To unselect a track, pass nil to the selectTrack(for:) API.
player?.selectTrack(selectedTrack, for: .audio)
player?.selectTrack(selectedTrack, for: .video)
player?.selectTrack(selectedTrack, for: .closedCaption)
player?.selectTrack(selectedTrack, for: .subtitle)
// To unselect a track
player?.selectTrack(nil, for: .audio)
player?.selectTrack(nil, for: .video)
player?.selectTrack(nil, for: .closedCaption)
player?.selectTrack(nil, for: .subtitle)