dash.js
Open Source Media Player
Seamless and reliable DASH streaming on any browser-based device
View onGitHub
5512
1729
529.6k
Sponsors
Trusted by the industry leaders
Latest updates from GitHub
Buffering issues on low-end devices with 50fps + multiple audio/text tracks in live streamWe are experiencing consistent buffering issues on low-end devices such as LG webOS 4 when playing a live streams.
The issue occurs only when both of the following conditions are met:
* The stream is **50 fps**
* The stream contains **multiple audio and/or text tracks**
We would like to better understand the root cause of this behavior on the dash.js side.
Could this issue be related to:
* Buffer management?
* Track selection or parsing?
* Adaptive bitrate (ABR) logic?
Or could it primarily be due to device performance limitations?
Additionally, are there any known limitations or constraints on low-end devices regarding:
* 50 fps streams
* Handling of multiple audio and subtitle tracks?
For reference, Shaka Player suggests the following configuration for similar buffering issues:
* `bufferingGoal: 3`
* `rebufferingGoal: 3`
With:
* `rebufferingGoal`: the minimum amount of buffered content (in seconds) required before playback can start or resume after rebuffering
* `bufferingGoal`: the target buffer length (in seconds) that the player tries to maintain ahead of the playhead
In dash.js, would the equivalent configuration be `bufferTimeDefault`?
Thank youOpened by testeur-990—3 days ago
Incorrect operation of the QUALITY_CHANGE_RENDERED event (possible buffer problem)**Problem:**
Currently, in dash.js, the event `QUALITY_CHANGE_RENDERED` fires when a new representation is selected, but this does not guarantee that the new video quality is actually visible on-screen to the user. The buffer often continues playing segments from the previous quality, causing a noticeable delay between the event and the visible change. This makes it difficult to reliably update UI elements (e.g., quality indicators) in real time.
**Solution:**
Introduce a new event, e.g., `QUALITY_CHANGE_SWITCHED`, which would trigger when the new video quality is actually displayed to the user. This event should fire after the first frame of the new representation is rendered and visible in the playback, providing developers with an accurate signal to update UI or analytics.
This is similar to HLS.js's `level_switched` event, which reliably indicates when the new level is visible to the user. Adding such an event in dash.js would improve ABR handling and UX for applications that display the current quality.Opened by zoltroa—4 days ago
new AI Dash ref player not allowing CORS the same way legacy does##### Environment
<!-- Replace [] with [x] to check off the list -->
- [x] The MPD passes the DASH-IF Conformance Tool on https://conformance.dashif.org/
- [] The stream has correct Access-Control-Allow-Origin headers (CORS)
- [] There are no network errors such as 404s in the browser console when trying to play the stream
- [] The issue observed is not mentioned on https://github.com/Dash-Industry-Forum/dash.js/wiki/FAQ
- [] The issue occurs in the latest reference client on http://reference.dashif.org/dash.js/ and not just on my page
* Link to playable MPD file:
* Dash.js version:
Reference Client
v5.2.0 development - commit [1668e977836640e83cf453e8b33dddd0a0152c55](https://github.com/Dash-Industry-Forum/dash.js/commit/1668e977836640e83cf453e8b33dddd0a0152c55)
* Browser name/version:
firefox 148.0.2 (64-bit)
* OS name/version:
Distributor ID: Linuxmint
Description: Linux Mint 21.3
Release: 21.3
Codename: virginia
##### Steps to reproduce
1. Please provide clear steps to reproduce your problem
open dash ref player
http://reference.dashif.org/dash.js/nightly/samples/dash-if-reference-player/index.html
force http
enable cors everywhere
https://addons.mozilla.org/en-US/firefox/addon/cors-everywhere/
request a manifest playback:
http://.../vxfmt=smooth/Manifest
2. If the bug is intermittent, give a rough frequency if possible
##### Observed behavior
getting NS_BINDING_ABORT for the segments
##### Console output
```
Paste the contents of the browser console here.
[18085][StreamProcessor][video] onFragmentLoadingAbandoned request: http://hout-pl4b1-c86.docroot.chn6us1.eng.velocix.com/live4_clear2drm_kpt1/vxfmt=smooth/h_6c5f161a93b118698507b0af80bf5755/QualityLevels(5520000)/Fragments(video=17736616690000666) has been aborted Debug.js:169:25
[18085][PlaybackController] Native video element event: waiting Debug.js:169:25
[18085][ScheduleController][video] Quality has changed, get init request for representationid = video_0 Debug.js:169:25
[18085][BufferController][video] Appending init fragment for type video, representationId video_0 and bandwidth 5520000 Debug.js:169:25
[18085][StreamProcessor][video] Appended bytes for video and stream id defaultId_0 Debug.js:169:25
[18085][StreamProcessor][video] [video] lastInitializedRepresentationId changed to video_0 Debug.js:169:25
[18086][ScheduleController][video] Media segment needed for video and stream id defaultId_0 Debug.js:169:25
[18086][DashHandler][video] Index for time 1773661669.0000665 is 26 Debug.js:169:25
[18086][StreamProcessor][video] Next fragment request url for stream id defaultId_0 and media type video is http://hout-pl4b1-c86.docroot.chn6us1.eng.velocix.com/live4_clear2drm_kpt1/vxfmt=smooth/h_6c5f161a93b118698507b0af80bf5755/QualityLevels(5520000)/Fragments(video=17736616690000666) with request range undefined Debug.js:169:25
[18095][CatchupController] [CatchupController]: Low Latency catchup mechanism. Latency too high, doing a seek to live point Debug.js:169:25
[18095][PlaybackController] Requesting seek to time: 1773661669.0000665 Debug.js:169:25
[18095][TextTracks] Cue enter id:cue_TTML_0 Debug.js:169:25
[18095][PlaybackController] Native video element event: seeked Debug.js:169:25
[18095][PlaybackController] Native video element event: playing Debug.js:169:25
[18095][PlaybackController] Seeking to: 1773661669.0000665 Debug.js:169:25
[18095][MssFragmentInfoController][video] Start Debug.js:169:25
[18095][MssFragmentInfoController][video] End of timeline Debug.js:169:25
[18095][MssFragmentInfoController][video] Stop Debug.js:169:25
[18095][MssFragmentInfoController][audio] Start Debug.js:169:25
[18095][MssFragmentInfoController][audio] End of timeline Debug.js:169:25
[18095][MssFragmentInfoController][audio] Stop Debug.js:169:25
[18095][MssFragmentInfoController][text] Start Debug.js:169:25
[18095][MssFragmentInfoController][text] End of timeline Debug.js:169:25
[18095][MssFragmentInfoController][text] Stop Debug.js:169:25
[18095][FragmentModel][video] abort requests Debug.js:169:25
[18095][StreamProcessor][video] onFragmentLoadingAbandoned request: http://hout-pl4b1-c86.docroot.chn6us1.eng.velocix.com/live4_clear2drm_kpt1/vxfmt=smooth/h_6c5f161a93b118698507b0af80bf5755/QualityLevels(5520000)/Fragments(video=17736616690000666) has been aborted Debug.js:169:25
[18095][PlaybackController] Native video element event: waiting Debug.js:169:25
[18096][ScheduleController][video] Quality has changed, get init request for representationid = video_0 Debug.js:169:25
[18096][BufferController][video] Appending init fragment for type video, representationId video_0 and bandwidth 5520000 Debug.js:169:25
[18099][StreamProcessor][video] Appended bytes for video and stream id defaultId_0 Debug.js:169:25
[18099][StreamProcessor][video] [video] lastInitializedRepresentationId changed to video_0 Debug.js:169:25
[18100][ScheduleController][video] Media segment needed for video and stream id defaultId_0 Debug.js:169:25
[18100][DashHandler][video] Index for time 1773661669.0000665 is 26 Debug.js:169:25
[18100][StreamProcessor][video] Next fragment request url for stream id defaultId_0 and media type video is http://hout-pl4b1-c86.docroot.chn6us1.eng.velocix.com/live4_clear2drm_kpt1/vxfmt=smooth/h_6c5f161a93b118698507b0af80bf5755/QualityLevels(5520000)/Fragments(video=17736616690000666) with request range undefined Debug.js:169:25
[18109][CatchupController] [CatchupController]: Low Latency catchup mechanism. Latency too high, doing a seek to live point Debug.js:169:25
[18109][PlaybackController] Requesting seek to time: 1773661669.0000665 Debug.js:169:25
##### Expected behavior
playback occurs, which happens in same conditions for the legacy player:
New Reference UI: This new reference UI was implemented from scratch (mainly using AI tools). While we manually extended its functionality and validated and tested its correct behavior you still might encounter bugs. Please report bugs or issues on the [GitHub issue tracker](https://github.com/Dash-Industry-Forum/dash.js/issues). We also keep the old reference UI available [here](http://reference.dashif.org/dash.js/nightly/samples/dash-if-reference-player-legacy/index.html) for a while, but it will eventually be removed, so please switch to the new UI and report any issues you find.
Opened by ervcabrita—13 days ago






