A reference client implementation for the playback of MPEG DASH via Javascript and compliant browsers.
#4338 Add support for DVB Font downloads as specified in ETSI TS 103 285 V1.4.1 - Section 7.2 Downloadable Fonts by @mattjuggins
#4360 Add an event that enables manual rendering of subtitles by @bitboxer
#4330 Add API endpoint to trigger a manifest refresh by @eirikbjornr
#4336 Add IMSC settings for rollUp and displayForcedOnly by @nigelmegitt
#4382 Add a liveUpdateTimeThreshold to control time syncing during playback of live streams by @matvp91
#4359 Fix flickering and blinking of IMSC subtitles by @mattjuggins #4350 Include HTTP request range in data that is passed to the modifyRequest function by @dsilhavy #4356 Remove unused depdendency foodoc and move JSDoc related dependencies to devDependencies section in the package.json by @dsilhavy #4362 Refactor DVB extensions properties to consistently use camel case. by @mattjuggins
#4348 #4349 Remove duplicate events in index.d.ts by @kris-youview #4355 Fix invalid warning in StreamProcessor.js by @dsilhavy #4335 Remove specific Chrome version from CircleCI config by @dsilhavy #4363 Fix PlaybackErrorEvent Typescript typing by @kris-youview #4365 Add a try/catch around matchSettingsLang in case bcp47Normalize fails with an error by @dsilhavy #4368 Check for undefined values in addHttpRequest method by @dsilhavy #4389 Fix a bug when dispatching subtitle events that causes an error in the event bus when the video is seeked by @dsilhavy
#4319 Add support for playback using the Managed Media Source @dsilhavy
#4280 Change template for JSDocs to avoid styling issues like the menu blocking the parameter description @abdulaziz-bd #4298 Adds settings parameters to configure the AbandonRequestsRule.js @dsilhavy #4267 Update all URLs to Livesim. Use Livesim2 instead of Livesim1 @dsilhavy #4305 Remove outdated cues from track when adding a new cue to avoid memory leaks. @dsilhavy #4310 Add new BBC R&D Test Streams to Reference Player @mattjuggins #4320 Enable pass-through of UTF-8 chars when provided via lang-attribute @stschr #4322 For low latency DASH use min/max playbackRate when the buffer is safe in mode: liveCatchupModeLoLP @bwallberg #4324 Update to imscJS v1.1.4 @nigelmegitt
#4296 Fix two scheduling errors related to quality switches @dsilhavy #4297 Fix the handling of abandoning segment requests @dsilhavy #4314 Fix issues with the controlbar when muting video playback and transitioning from dynamic to static content @ShikiSeiren #4323 Fix a bug in the OfflineStreamProcessor.js @dsilhavy
#4281 Adds a functional testsuite based on the Karma framework @dsilhavy #4270 Reset MSE when switching codec if changeType() is unstable or unavailable. @matvp91
#4225 Define target web and es5 for webpack to make build files ES5 compliant @dsilhavy #4221 Fix init value for storeLastSettings @minhui-foxtel #4278 Add support for replacing a text node via MPD patching. @dsilhavy #4242 Prevent redundant CC parser restarts during Low Latency streams @m-buczek #4274 Add setting to change mediasource duration from infinity to math.pow(2, 32) @bwallberg #4249 Compare indices of mediaInfo objects when checking if a track change was rendered. This accounts for content that has no ID attribute for the AdaptationSets @dsilhavy #4272 Remove babel-preset-env @ShiningTrapez
#4224 Fix a bug for VTT.js based rendering that causes cues not to be removed after switching to a new source. @dsilhavy #4279 Do not execute multiple setCurrentTime via waitForReadyState to avoid race condition @dsilhavy #4239 Remove unusable key sessions when ProtectionController is stopped without waiting for session.close promise to be resolved @dsilhavy #4246 Fixes for edge case errors that have been captured by Sentry IO around referencing null objects after reset has been called. @littlespex #4211 Fix types of TestRequest URL property @ondreian #4268 Added getTargetLiveDelay method to type definitions @matvp91 #4252 Fix wrong attribute in L2A rule @dsilhavy #4253 Fix error in ProtectionModel_21Jan2015.js when closing key session @dsilhavy #4223 Fix wrong Typescript definition of updateSource @dsilhavy #4265 Check for "text/vtt" in catch block of SourceBufferSink.js @dsilhavy #4273 Use fixed version of Chrome driver as latest one is unavailable @dsilhavy #Link Upgrade browser-tools CircleCI orb to 1.4.2 to solve Chromedriver issue @dsilhavy
Link Change content steering sample stream URL @dsilhavy Link Use license that doesnt expire in the Widevine sample @dsilhavy Link Change MSS sample streams @dsilhavy
#4201 #4203 Improve throughput on abort: Enables throughput rule to consider measured throughput (or value returned by CMSD response header) on the aborted requests @bbert #4195 L2A Improvements based on BBC MMSys Paper @piersoh #4193 Add autoLoad flag to start playback in reference client once page is loaded @dsilhavy #4196 Add option to mute playback in reference UI via query parameters @dsilhavy
#4189 Fix reporting of CMCD for SegmentBase range requests @dsilhavy #4213 Content Steering: Add protocol string to host url if not present @dsilhavy #4192 Do not close key session if key is usable in getLicense.html demo @dsilhavy #4191 Typescript: Fixed FragmentRequest 'type' typing @ShikiSeiren #4185 Fix handling of MPDs containing SegmentList with SegmentTimeline @tea #4208 Fix a regression for subtitle playback. We need the segment duration of the subtitle tracks to get a valid buffer target @dsilhavy #4214 Fix JSDoc in Settings.js @dsilhavy Link Add postbuild command to copy index.d.ts to dash.d.ts @dsilhavy Link Add Axinom teststreams with new license server URL @dsilhavy Link Fix wrong unregister event listener for PLAYBACK_SEEKED in CatchupController @dsilhavy
#4173 Add support for DASH content steering version 0.9.7 including support for pathway cloning and steering <Location> elements @dsilhavy #4127 Add support for inband prft boxes parsing @bbert #4169 Allow preloading content with a specific start time @dsilhavy
#4155 Fix blinking cues when segmented over multiple segments or chunks (cont'd) @bbert #4158 Add DescriptorType model class to MediaInfo for elements of type viewpoint, role, accessibility, audioChannelConfiguration @stschr #4174 Allow the playback whenever the t attribute is missing in the SegmentTimeline elements @dario-fiore #4126 Add timeout for fragment request progress @bbert #4128 Update BBC sample streams in reference client and sample pages @dsilhavy #4138 Upgrade IMSC.js version to 1.1.3 @vodlogic Link Remove Github issues stale bot @dsilhavy Link Use dash.all.min.js as main entry point for npm installations @dsilhavy Link Add teststream for SegmentTimeline with $number @dsilhavy Link Link new sample stream in content steering sample @dsilhavy
#3913 Fix Typescript settings and add missing objects @ShikiSeiren
#4136 Update getMatroskaUint to handle larger integer values @kv-bh
#4156 Fix styling of embedded WebVTT cues by adding support for sttg box @dsilhavy
#4149 Fix: changeType() is Not Fully Implemented on Sony PS5 @agajassi
#4172 Process EssentialProperty_asArray in addition to EssentialProperty @stschr
#4163 Fix bug which causes multiperiod stream to stall after internal seek in previous period. Preloading was not triggered again. @dsilhavy
#4167 Fix: VTT line styling failing, invalid snapToLines value @bwallberg
#4130 Fixes in calculateThroughputByChunkData() @piersoh
#4140 Fix DRM checking for single representation in adaptation @minhui-foxtel
#4144 Fix/rerequest quality switch @dsilhavy
#4147 Initialize box processors when MSS content is actually being played @dsilhavy
#4165 fix: wrong MediaInfo.labels type definition @bwallberg
Link Add missing event to ProtectionEvents.js @dsilhavy
#4177 Fix linting errors for "no-multi-space" rule @dsilhavy
#4178 Fix nullpointer if video element is set to null @dsilhavy
#4176 Fix error in playFromTime.js test that causes CircleCI report upload to crash @dsilhavy
attachSource
@dsilhavy#4089 Add parsing and rendering of WebVTT subtitles in dash.js using vtt.js, not relying on native texttracks events anymore. This is required for platforms like HbbTV that do not provide native WebVTT support. An example can be found here: https://reference.dashif.org/dash.js/nightly/samples/captioning/vttjs.html @dsilhavy
#4088 Fix redundant segment download when seeking back into already buffered area @dsilhavy #4093 In case of gaps: Check for a valid segment request using the period duration @dsilhavy
#4087 Do not trigger live delay calculation multiple times at playback start @dsilhavy #4091 If seek is called with a negative value rewrite to 0 @dsilhavy #4092 Account for invalid starttimes provided to attachSource() @dsilhavy #4096 Fix linting errors @dsilhavy
#4031 Adds support for content steering as defined in the IOP specification - @dsilhavy
#4003 New playback catchup seeking/pausing logic: Adjust the liveDelay when the user seeks/pauses. Then catchup mode is applied with the new live delay as target value.By calling player.seekToLive() the app can jump back to this original live delay. - @dsilhavy
#4024 Allow requests to be modified in an async manner. - @littlespex
#4036 #4015 Implements a "matcher" for the XML parser; it checks @lang
attributes read from MPDs and normalizes them into a BCP-47 compliant format. In addition, normalize language tags provided through dash.js' setInitialMediaSettingsFor()-API as Strings, while using RegExp through this API is maintained. - @stschr
#4020 Lower minPlaybackRateChange for non Safari browsers depending on the maximum catchup rate. Otherwise the target live delay is not reached for low catchup rates. - @dsilhavy #3996 Pass url to RequestModifier.modifyRequestHeader for example to add additional headers - @lkinasiewicz #4004 Fix stalling issue when using buffer.fastSwitchEnabled is enabled. - @lkinasiewicz #4001 Add ua-parser-js to enable reliable browser name and version parsing - @dsilhavy #4002 Add hashtag mechanism to sample menu selection. Allows to send direct links to specific sample sections - @dsilhavy #4039 WPE fix: Avoid pruning buffered ranges already enqueued for playback - @eocanha #4028 Add an example how to define robustness levels for DRM playback - @dsilhavy Link Add popup to low latency testplayer and fix catchup mechanism "enabled" checkbox - @dsilhavy
#4023 Fixes the selection of a key system with parameters specified by the application. As an example, the robustnessLevel can be specified individually for audio and video tracks. Before this PR, only one of the provided values was used, either audio or video. - @dsilhavy #4025 Remove check in getValidTimeAheadOfTargetTime that caused stall in stream with gaps in the previous period and the upcoming period - @dsilhavy #4048 Add missing streamId to DroppedFramesHistory.js - @dsilhavy #4026 Fix B64 generation of KID to be compliant with EME spec - @dsilhavy #4019 Fix wrong call to _abortBeforeAppend - @dsilhavy Link Fix wrong link to controlbar in Low Latency testplayer - @dsilhavy #4051 Only consider buffer replacements in the GapController.js for audio and video to avoid stalling on gaps due to texttracks. - @dsilhavy
#4041 Adds a Github action to automatically deploy to nightly and latest on the Akamai CDN - @dsilhavy
Features #3988 Add support for specifying the start time of the stream as part of the initialize or the attachSource call. A demo can be found here
Improvements #3968 JSDoc cleanup #3969 Dispatch volumechange from the native video element via dedicated MediaPlayerEvent #3963 Extends the License Request Complete event to include the original server response when DRM errors are reported link Add example for multi audio tracks with initial track selection #3986 Fix d trace httpList metric reporting #3971 Overwrite manifest mediaPresentationDuration if duration mismatch #3997 Functional Tests: Add missing vectors with "//" in url to functional tests #3998 Run functional tests by groupname
Bugfixes #3980 Do not trigger inline and inband events multiple times after a manifest refresh #3984 Account for events defined in different periods in the EventController.js #3985 Fix for a rounding error not allowing BUFFERING_COMPLETED to get fired #3970 Fix _checkPortalSize and initialRatio caluculation for unsorted Representations in an AS #3966 Fix text track enabling for MSS live streams #3944 Fix bug in abandon request workflow. Also enable rule by default #3953 Use lastBitrateCachingInfo.enabled and lastMediaSettingsCachingInfo.enabled #3939 Check for keyPairs in clearkeys object before updating the key session #3942 Fix/clearkey from ref UI: Check for initData in protData before overwriting #3928 Fix SegmentTimeline's segment getter from requested time #3978 Fix wrong description of PLAYBACK_LOADED_DATA event #3979 Fix a bug that lead to undefined customParametersModel after calling Mediaplayer.reset() Link Fix multitrack captions sample: lang values in manifest have changed Link Fix multi audio DRM sample