javascriptvideo.jswebvttcue-points

Getting the cues from a VTT chapters track with Video.js


I would like to get the cues from the chapters file loaded in my Video.js object. I've already find how to get the track but I need its id in order to access it.

player.textTracks().getTrackById(<trackID>);

I found out where the id is defined in the Video.js 5.14.0 library:

// video.js/dist/video.js (line 19195)
var trackProps = {
  id: options.id || 'vjs_track_' + Guid.newGUID(),
  kind: options.kind || '',
  label: options.label || '',
  language: options.language || ''
};

It seems that you can define your own id by passing an object to the function:

// video.js/dist/video.js (line 19178)
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

I load the chapter track as follow:

<track kind="chapters" src="chapters.vtt" srclang="en" default>

I've read that you can dynamically add track files but you will have to reload the Video.js object.


Solution

  • You could get all the tracks and then get one that is of type chapters:

    player.on('loadedmetadata', function () {
        var tracks = player.textTracks(),
                chapterTrack;
    
        for (var i=0; tracks.length > i; i++) {
            if ('chapters' === tracks[i].kind) {
                chapterTrack = tracks[i];
            }
        }
    
        console.log(chapterTrack.cues);
    });
    

    https://github.com/videojs/video.js/blob/master/docs/guides/text-tracks.md#working-with-text-tracks