diff --git a/package-lock.json b/package-lock.json index 3df13ca62b..388ed25895 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "dashjs", - "version": "4.5.4", + "version": "4.5.5", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/package.json b/package.json index ef6b79adba..59aae65236 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "dashjs", - "version": "4.5.4", + "version": "4.5.5", "description": "A reference client implementation for the playback of MPEG DASH via Javascript and compliant browsers.", "author": "Dash Industry Forum", "license": "BSD-3-Clause", diff --git a/src/dash/models/DashManifestModel.js b/src/dash/models/DashManifestModel.js index 283eed5208..528cfc5f6c 100644 --- a/src/dash/models/DashManifestModel.js +++ b/src/dash/models/DashManifestModel.js @@ -594,11 +594,14 @@ function DashManifestModel() { // initialization source url will be determined from // BaseURL when resolved at load time. } - } else if (getIsText(processedRealAdaptation) && - getIsFragmented(processedRealAdaptation) && - processedRealAdaptation.mimeType && - processedRealAdaptation.mimeType.indexOf('application/mp4') === -1) { - voRepresentation.range = 0; + } else { + const mimeType = processedRealAdaptation.mimeType || getMimeType(processedRealAdaptation); + if (getIsText(processedRealAdaptation) && + getIsFragmented(processedRealAdaptation) && + mimeType && + mimeType.indexOf('application/mp4') === -1) { + voRepresentation.range = 0; + } } if (segmentInfo.hasOwnProperty(DashConstants.TIMESCALE)) { diff --git a/src/streaming/SourceBufferSink.js b/src/streaming/SourceBufferSink.js index 4d53569fcb..8ce5c4d795 100644 --- a/src/streaming/SourceBufferSink.js +++ b/src/streaming/SourceBufferSink.js @@ -136,7 +136,7 @@ function SourceBufferSink(config) { } catch (e) { // Note that in the following, the quotes are open to allow for extra text after stpp and wvtt - if ((mediaInfo.type == constants.TEXT && !mediaInfo.isFragmented) || (codec.indexOf('codecs="stpp') !== -1) || (codec.indexOf('codecs="vtt') !== -1)) { + if ((mediaInfo.type == constants.TEXT && !mediaInfo.isFragmented) || (codec.indexOf('codecs="stpp') !== -1) || (codec.indexOf('codecs="vtt') !== -1) || (codec.indexOf('text/vtt') !== -1)) { return _initializeForText(streamInfo); } return Promise.reject(e); diff --git a/src/streaming/text/TextTracks.js b/src/streaming/text/TextTracks.js index d22c36fb0e..64a54f7056 100644 --- a/src/streaming/text/TextTracks.js +++ b/src/streaming/text/TextTracks.js @@ -569,8 +569,9 @@ function TextTracks(config) { function cueInTrack(track, cue) { if (!track.cues) return false; for (let i = 0; i < track.cues.length; i++) { - if ((track.cues[i].startTime === cue.startTime) && - (track.cues[i].endTime === cue.endTime)) { + if (track.cues[i].startTime === cue.startTime && + track.cues[i].endTime === cue.endTime && + track.cues[i].text === cue.text) { return true; } }