Skip to content
FrameworkStyle

Text tracks

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

Manages subtitles, captions, chapters, and thumbnail tracks.

API Reference

State

PropertyTypeDetails
chaptersCuesMediaTextCue[]
thumbnailCuesMediaTextCue[]
thumbnailTrackSrcnull | string
textTrackListMediaTextTrack<TextTrackKind>[]
subtitlesShowingboolean

Actions

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

Selecting text track state

Pass selectTextTrack to usePlayer to subscribe to text track state. Returns undefined if the text tracks feature is not configured.

import { selectTextTrack, usePlayer } from '@videojs/react';

function CaptionsButton() {
  const tracks = usePlayer(selectTextTrack);
  if (!tracks) return null;

  return (
    <button onClick={() => tracks.toggleSubtitles()}>
      {tracks.subtitlesShowing ? 'Hide captions' : 'Show captions'}
    </button>
  );
}

Selecting one text track

Use a track kind and, when needed, a label to select one track with normalized cues and src details.

import { useTextTrack } from '@videojs/react';

function useChapters() {
  const chapters = useTextTrack('chapters');

  return chapters?.cues.map((cue) => ({
    startTime: cue.startTime,
    endTime: cue.endTime,
    title: cue.text,
  })) ?? [];
}