Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

MediaElment.js : How to change the source files of subtitles (track element) on the fly?

How to change the source files of subtitles on the fly (originally defined in the HTML via <track> element) when changing a video source (via the setSrc() method) ?

In other words, when playing a video I use setSrc() method to change video source and I would also redefine the subtitle files (SRT) linked.

like image 886
srcmax Avatar asked Oct 19 '25 13:10

srcmax


2 Answers

A trick I devised was to set an ID on the subtitle track

<track id="subtitles" kind="subtitles" src="subtitles.srt" srclang="en" />

Then inside of whatever event you need you can use:

$('#subtitles').attr('src', 'different_subtitles.srt');
player.findTracks();
player.loadTrack(0);
player.setSrc('different_video.mp4');

There may be a more elegant way to go about this and MediaElementJS really should provide an API for this. But in the meantime this trick should get you by.

like image 61
tuxracer Avatar answered Oct 26 '25 19:10

tuxracer


This doesn't quite work for every event (like 'ended'). While this code does reliably load & change the TRACK source, if you have a language already displaying, it will not display the newly 'sourced' TRACK with a new video unless the CC is set to None and then a language.

like image 33
Craig B Avatar answered Oct 26 '25 19:10

Craig B