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.