Skip to content
FrameworkStyle

Text tracks

Subtitles, captions, and chapter track state for the player store

Manages subtitles, captions, chapters, and thumbnail tracks.

A default kind="chapters" track can also divide the time slider into chapter ranges and label the chapter at the current interaction position.

When a thumbnail track is present, thumbnailTrackCrossOrigin reports the media element’s CORS mode, or null when the media is not CORS-enabled. Thumbnail reads it to fetch sprite sheets the same way the browser fetched the track.

Import

import { textTrackFeature } from '@videojs/html';

The liveVideoFeatures and videoFeatures feature bundles include this feature.

API Reference

State

PropertyTypeDetails
chaptersCuesMediaTextCue[]
thumbnailCuesMediaTextCue[]
thumbnailTrackSrcstring | null
thumbnailTrackCrossOrigin'anonymous' | 'use-credentials' | null
textTrackListMediaTextTrack[]
subtitlesShowingboolean

Actions

ActionTypeDetails
toggleSubtitles(forceShow: boolean) => boolean
selectSubtitlesTrack(value: string) => void

Selector

Pass selectTextTrack to PlayerController to subscribe to text track state. Returns undefined if the text tracks feature is not configured. Use TextTrackController to create or observe one track and its cues.

import { createPlayer, UIElement, selectTextTrack } from '@videojs/html';
import { videoFeatures } from '@videojs/html/video';

const { PlayerController } = createPlayer({ features: videoFeatures });

class CaptionsButton extends UIElement {
  readonly #textTracks = new PlayerController(this, selectTextTrack);
}