1
0
Fork 0
mirror of https://github.com/jellyfin/jellyfin-web synced 2025-03-30 19:56:21 +00:00

Fix subtitle sync for .ass

This commit is contained in:
redSpoutnik 2019-10-13 14:10:51 +02:00
parent 029e015068
commit bccb1e6147

View file

@ -575,35 +575,34 @@ define(['browser', 'require', 'events', 'apphost', 'loading', 'dom', 'playbackMa
self.setSubtitleOffset = function(offset) { self.setSubtitleOffset = function(offset) {
var offsetValue = parseFloat(offset); var offsetValue = parseFloat(offset);
var videoElement = self._mediaElement;
var mediaStreamTextTracks = getMediaStreamTextTracks(self._currentPlayOptions.mediaSource);
Array.from(videoElement.textTracks) // if .ass currently rendering
.filter(function(trackElement) { if(currentAssRenderer){
// get showing .vtt textTacks updateCurrentTrackOffset(offsetValue);
var isVttTrackShowing = trackElement.mode === 'showing'; } else {
// get current .ass textTrack var videoElement = self._mediaElement;
var isAssTrackShowing = ("textTrack" + customTrackIndex) === trackElement.id; var mediaStreamTextTracks = getMediaStreamTextTracks(self._currentPlayOptions.mediaSource);
return isVttTrackShowing || isAssTrackShowing;
})
.forEach(function(trackElement) {
var track = customTrackIndex === -1 ? null : mediaStreamTextTracks.filter(function (t) { Array.from(videoElement.textTracks)
return t.Index === customTrackIndex; .filter(function(trackElement) {
})[0]; // get showing .vtt textTacks
return trackElement.mode === 'showing';
})
.forEach(function(trackElement) {
if(track) { var track = customTrackIndex === -1 ? null : mediaStreamTextTracks.filter(function (t) {
offsetValue = updateCurrentTrackOffset(offsetValue); return t.Index === customTrackIndex;
var format = (track.Codec || '').toLowerCase(); })[0];
if (format !== 'ass' && format !== 'ssa') {
if(track) {
offsetValue = updateCurrentTrackOffset(offsetValue);
setVttSubtitleOffset(trackElement, offsetValue); setVttSubtitleOffset(trackElement, offsetValue);
} else {
console.log("No available track, cannot apply offset : " + offsetValue);
} }
} else {
console.log("No available track, cannot apply offset : " + offsetValue);
}
}); });
}
}; };
function updateCurrentTrackOffset(offsetValue) { function updateCurrentTrackOffset(offsetValue) {