mirror of
https://github.com/jellyfin/jellyfin-web
synced 2025-03-30 19:56:21 +00:00
Merge pull request #507 from redSpoutnik/fix-subtitle-sync
Fix subtitle sync
(cherry picked from commit ee1149644d
)
Signed-off-by: Joshua Boniface <joshua@boniface.me>
This commit is contained in:
parent
1be5e20363
commit
78a2ba73e7
2 changed files with 21 additions and 23 deletions
|
@ -575,36 +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);
|
||||||
|
|
||||||
|
// if .ass currently rendering
|
||||||
|
if (currentAssRenderer){
|
||||||
|
updateCurrentTrackOffset(offsetValue);
|
||||||
|
} else {
|
||||||
var videoElement = self._mediaElement;
|
var videoElement = self._mediaElement;
|
||||||
var mediaStreamTextTracks = getMediaStreamTextTracks(self._currentPlayOptions.mediaSource);
|
var mediaStreamTextTracks = getMediaStreamTextTracks(self._currentPlayOptions.mediaSource);
|
||||||
|
|
||||||
Array.from(videoElement.textTracks)
|
Array.from(videoElement.textTracks)
|
||||||
.filter(function(trackElement) {
|
.filter(function(trackElement) {
|
||||||
if (customTrackIndex === -1 ) {
|
|
||||||
// get showing .vtt textTacks
|
// get showing .vtt textTacks
|
||||||
return trackElement.mode === 'showing';
|
return trackElement.mode === 'showing';
|
||||||
} else {
|
|
||||||
// get current .ass textTrack
|
|
||||||
return ("textTrack" + customTrackIndex) === trackElement.id;
|
|
||||||
}
|
|
||||||
})
|
})
|
||||||
.forEach(function(trackElement) {
|
.forEach(function(trackElement) {
|
||||||
|
|
||||||
var track = mediaStreamTextTracks.filter(function(stream) {
|
var track = customTrackIndex === -1 ? null : mediaStreamTextTracks.filter(function (t) {
|
||||||
return ("textTrack" + stream.Index) === trackElement.id;
|
return t.Index === customTrackIndex;
|
||||||
})[0];
|
})[0];
|
||||||
|
|
||||||
if(track) {
|
if (track) {
|
||||||
offsetValue = updateCurrentTrackOffset(offsetValue);
|
offsetValue = updateCurrentTrackOffset(offsetValue);
|
||||||
var format = (track.Codec || '').toLowerCase();
|
|
||||||
if (format !== 'ass' && format !== 'ssa') {
|
|
||||||
setVttSubtitleOffset(trackElement, offsetValue);
|
setVttSubtitleOffset(trackElement, offsetValue);
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
console.log("No available track, cannot apply offset : " + offsetValue);
|
console.log("No available track, cannot apply offset : " + offsetValue);
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
function updateCurrentTrackOffset(offsetValue) {
|
function updateCurrentTrackOffset(offsetValue) {
|
||||||
|
|
|
@ -1667,7 +1667,7 @@ define(['events', 'datetime', 'appSettings', 'itemHelper', 'pluginManager', 'pla
|
||||||
|
|
||||||
self.getPlayerSubtitleOffset = function(player) {
|
self.getPlayerSubtitleOffset = function(player) {
|
||||||
player = player || self._currentPlayer;
|
player = player || self._currentPlayer;
|
||||||
if (player.getPlayerSubtitleOffset) {
|
if (player.getSubtitleOffset) {
|
||||||
return player.getSubtitleOffset();
|
return player.getSubtitleOffset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue