Skip to main content

Track Selection

Track types

Each playback can have four types of tracks - AUDIO , VIDEO, CLOSED CAPTION and SUBTITLE. These different track types are denoted using TrackVariantInfo.type.

export type TrackVariantTypeValue = 'AUDIO' | 'VIDEO' | 'TEXT' | 'CLOSED CAPTION' | 'UNKNOWN';

Available tracks

All the available tracks of each type of track can be obtained using the getAvailableTrackVariants API on the player. This API returns an Array of TrackVariantInfo objects.

const playerListener = {
async onTrackAvailabilityChanged(): Promise<void> {
console.log('track availability changed');
// get all video tracks
const availableVideoTracks = player.getAvailableTrackVariants('VIDEO')

//get all audio tracks
const availableAudioTracks = player.getAvailableTrackVariants('AUDIO')

//get all subtitle tracks
const availableTextTracks = player.getAvailableTrackVariants('TEXT')

// get all closed caption tracks
const availableClosedCaptionTracks = player.getAvailableTrackVariants('CLOSED CAPTION')
},
}

Get active track

The currently active track in each type can be obtained from the Player using the activeTrackVariant API. This API returns the active track of any given Type as a TrackVariantInfo object and TrackVariantInfo.UNKNOWN if active variant is not known.

const playerListener = {
async onTrackVariantChanged(): Promise<void> {
console.log('track variant changed');
const selectedTextTrack = await player.getSelectedTrack('TEXT');
const selectedAudioTrack = await player.getSelectedTrack('AUDIO');
const selectedClosedCaptionTrack = await player.getSelectedTrack('CLOSED CAPTION');
const selectedVideoTrack = await player.getSelectedTrack('VIDEO');
}
}

Set a track

Set player's preferred track variant given variant type.

// From the list of available tracks for AUDIO, VIDEO, CLOSED CAPTION and SUBTITLE,
// choose any track and select it using the setPreferredTrackVariant API.

let subtitleTracks = await player.getAvailableTrackVariants('TEXT');
// Send the selected subtitle track to the player
let selectedSubtitleTrack = subtitleTracks[selectedIndex];
await player.setPreferredTrackVariant('TEXT', selectedSubtitleTrack);

let audioTracks = await player.getAvailableTrackVariants('AUDIO');
// Send the selected audio track to the player
let selectedAudioTrack = audioTracks[selectedIndex];
await player.setPreferredTrackVariant('AUDIO', selectedAudioTrack);

// NOTE: similar selection for ClosedCaption.

// To unselect a track, pass undefined to the setPreferredTrackVariant API
await player.setPreferredTrackVariant('TEXT', undefined);
// For audio
await player.setPreferredTrackVariant('AUDIO', undefined);

Note: Ensure all listeners are attached to the player before initiating playback.