mirror of
https://github.com/jellyfin/jellyfin-web.git
synced 2024-11-18 03:18:19 -07:00
Fixed #518
This commit is contained in:
parent
adf7b1ae0c
commit
63f804df32
@ -1192,44 +1192,43 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
|
|||||||
}
|
}
|
||||||
|
|
||||||
var trackElement = null;
|
var trackElement = null;
|
||||||
var expectedId = 'manualTrack' + track.Index;
|
if (videoElement.textTracks && videoElement.textTracks.length > 0) {
|
||||||
|
trackElement = videoElement.textTracks[0];
|
||||||
|
|
||||||
// get list of tracks
|
// This throws an error in IE, but is fine in chrome
|
||||||
var allTracks = videoElement.textTracks;
|
// In IE it's not necessary anyway because changing the src seems to be enough
|
||||||
for (var i = 0; i < allTracks.length; i++) {
|
try {
|
||||||
|
|
||||||
var currentTrack = allTracks[i];
|
|
||||||
|
|
||||||
if (currentTrack.label === expectedId) {
|
|
||||||
trackElement = currentTrack;
|
|
||||||
break;
|
|
||||||
} else {
|
|
||||||
currentTrack.mode = 'disabled';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!trackElement) {
|
|
||||||
trackElement = videoElement.addTextTrack('subtitles', 'manualTrack' + track.Index, track.Language || 'und');
|
|
||||||
|
|
||||||
// download the track json
|
|
||||||
fetchSubtitles(track, item).then(function (data) {
|
|
||||||
|
|
||||||
// show in ui
|
|
||||||
console.log('downloaded ' + data.TrackEvents.length + ' track events');
|
|
||||||
// add some cues to show the text
|
|
||||||
// in safari, the cues need to be added before setting the track mode to showing
|
|
||||||
data.TrackEvents.forEach(function (trackEvent) {
|
|
||||||
|
|
||||||
var trackCueObject = window.VTTCue || window.TextTrackCue;
|
|
||||||
var cue = new trackCueObject(trackEvent.StartPositionTicks / 10000000, trackEvent.EndPositionTicks / 10000000, normalizeTrackEventText(trackEvent.Text));
|
|
||||||
|
|
||||||
trackElement.addCue(cue);
|
|
||||||
});
|
|
||||||
trackElement.mode = 'showing';
|
trackElement.mode = 'showing';
|
||||||
});
|
while (trackElement.cues.length) {
|
||||||
|
trackElement.removeCue(trackElement.cues[0]);
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
console.log('Error removing cue from textTrack');
|
||||||
|
}
|
||||||
|
|
||||||
|
trackElement.mode = 'disabled';
|
||||||
} else {
|
} else {
|
||||||
trackElement.mode = 'showing';
|
// There is a function addTextTrack but no function for removeTextTrack
|
||||||
|
// Therefore we add ONE element and replace its cue data
|
||||||
|
trackElement = videoElement.addTextTrack('subtitles', 'manualTrack', 'und');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// download the track json
|
||||||
|
fetchSubtitles(track, item).then(function (data) {
|
||||||
|
|
||||||
|
// show in ui
|
||||||
|
console.log('downloaded ' + data.TrackEvents.length + ' track events');
|
||||||
|
// add some cues to show the text
|
||||||
|
// in safari, the cues need to be added before setting the track mode to showing
|
||||||
|
data.TrackEvents.forEach(function (trackEvent) {
|
||||||
|
|
||||||
|
var trackCueObject = window.VTTCue || window.TextTrackCue;
|
||||||
|
var cue = new trackCueObject(trackEvent.StartPositionTicks / 10000000, trackEvent.EndPositionTicks / 10000000, normalizeTrackEventText(trackEvent.Text));
|
||||||
|
|
||||||
|
trackElement.addCue(cue);
|
||||||
|
});
|
||||||
|
trackElement.mode = 'showing';
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
function updateSubtitleText(timeMs) {
|
function updateSubtitleText(timeMs) {
|
||||||
|
Loading…
Reference in New Issue
Block a user