Dash.js fails multiperiod switching when seamless period switch is not allowed
Created by: aYutaSekiguchi
Environment
-
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: https://livesim.dashif.org/livesim/periods_60/continuous_1/testpic_2s/Manifest.mpd
- Dash.js version: 3.2.1
- Browser name/version: Chrome 89.0.4389.90
- OS name/version: Mac OS Catalina 10.15.5
Steps to reproduce
- Please provide clear steps to reproduce your problem
- set
reuseExistingSourceBuffer
andjumpGaps
to false
- set
- If the bug is intermittent, give a rough frequency if possible
Observed behavior
- Video playback stopped at period boundary.
- The player stops loading media fragments.
- I did some research and found that a value of
playbackController.getTimeToStreamEnd()
at https://github.com/Dash-Industry-Forum/dash.js/blob/v3.2.1/src/streaming/controllers/StreamController.js#L243 is always greater than 0 andPLAYBACK_ENDED
event is not fired.
Console output
[418430][ScheduleController][audio] Next fragment request url is https://livesim.dashif.org/livesim/sts_1617066228/sid_587ca331/periods_60/continuous_1/testpic_2s/A48/808533311.m4s
Debug.js:169 [418665][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://livesim.dashif.org/livesim/sts_1617066228/sid_587ca331/periods_60/continuous_1/testpic_2s/A48/808533311.m4s
Debug.js:169 [418666][BufferController][audio] Buffered range: 1617066290.005333 - 1617066300, currentTime = 1617066299.527049
Debug.js:169 [418668][ThroughputRule] [audio] requesting switch to index: 0 Average throughput 470 kbps
Debug.js:169 [418668][InsufficientBufferRule] [audio] Switch to index 0; buffer is empty.
Debug.js:169 [418668][AbrController] [audio] stay on 0/0 (buffer: 0.473)
Debug.js:169 [418668][DashHandler][audio] Getting the next request at index: 192
Debug.js:169 [418668][ScheduleController][audio] Next fragment request url is https://livesim.dashif.org/livesim/sts_1617066228/sid_587ca331/periods_60/continuous_1/testpic_2s/A48/808533312.m4s
Debug.js:169 [419033][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://livesim.dashif.org/livesim/sts_1617066228/sid_587ca331/periods_60/continuous_1/testpic_2s/A48/808533312.m4s
Debug.js:169 [419033][BufferController][audio] Buffered range: 1617066290.005333 - 1617066300, currentTime = 1617066299.527049
Debug.js:169 [419035][ThroughputRule] [audio] requesting switch to index: 0 Average throughput 419 kbps
Debug.js:169 [419035][InsufficientBufferRule] [audio] Switch to index 0; buffer is empty.
Debug.js:169 [419036][AbrController] [audio] stay on 0/0 (buffer: 0.473)
Debug.js:169 [419036][DashHandler][audio] Getting the next request at index: 193
Debug.js:169 [419036][ScheduleController][audio] Next fragment request url is https://livesim.dashif.org/livesim/sts_1617066228/sid_587ca331/periods_60/continuous_1/testpic_2s/A48/808533313.m4s
Debug.js:169 [419227][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://livesim.dashif.org/livesim/sts_1617066228/sid_587ca331/periods_60/continuous_1/testpic_2s/A48/808533313.m4s
Debug.js:169 [419228][BufferController][audio] Buffered range: 1617066290.005333 - 1617066300, currentTime = 1617066299.527049
Debug.js:169 [419230][ThroughputRule] [audio] requesting switch to index: 0 Average throughput 435 kbps
Debug.js:169 [419230][InsufficientBufferRule] [audio] Switch to index 0; buffer is empty.
Debug.js:169 [419230][AbrController] [audio] stay on 0/0 (buffer: 0.473)
Debug.js:169 [419230][DashHandler][audio] Getting the next request at index: 194
Debug.js:169 [419231][ScheduleController][audio] Next fragment request url is https://livesim.dashif.org/livesim/sts_1617066228/sid_587ca331/periods_60/continuous_1/testpic_2s/A48/808533314.m4s
Debug.js:169 [419423][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://livesim.dashif.org/livesim/sts_1617066228/sid_587ca331/periods_60/continuous_1/testpic_2s/A48/808533314.m4s
Debug.js:169 [419423][BufferController][audio] Buffered range: 1617066290.005333 - 1617066300, currentTime = 1617066299.527049
Debug.js:169 [419425][ThroughputRule] [audio] requesting switch to index: 0 Average throughput 434 kbps
Debug.js:169 [419425][InsufficientBufferRule] [audio] Switch to index 0; buffer is empty.
Debug.js:169 [419425][AbrController] [audio] stay on 0/0 (buffer: 0.473)
Debug.js:169 [419426][DashHandler][audio] Getting the next request at index: 195
Debug.js:169 [419426][DashHandler][audio] Signal complete
Debug.js:169 [419426][ScheduleController][audio] Next fragment request url is null
Debug.js:169 [419426][FragmentModel][audio] STREAM_COMPLETED
Debug.js:169 [419426][BufferController][audio] checkIfBufferingCompleted trigger BUFFERING_COMPLETED for audio
Debug.js:169 [419427][Stream] onBufferingCompleted - trigger STREAM_BUFFERING_COMPLETED
Debug.js:169 [419427][ScheduleController][audio] Schedule Controller stops
Debug.js:169 [419427][ScheduleController][audio] audio Schedule Controller stops
Debug.js:169 [419427][ScheduleController][audio] Stream p26951104 is complete
Debug.js:169 [419718][PlaybackController] Native video element event: playing
Debug.js:169 [419719][BufferController][audio] Got enough buffer to start
Debug.js:169 [419719][PlaybackController] Native video element event: ratechange: 1
Debug.js:169 [420143][PlaybackController] Native video element event: waiting
Debug.js:169 [430533][DashParser] Parsing complete: ( xml2json: 7.08ms, objectiron: 0.110ms, total: 0.00719s)
Debug.js:169 [430533][StreamController] Matching default timing source protocol to manifest protocol: https://time.akamai.com/?iso&ms
Debug.js:169 [430534][Stream] Manifest updated... updating data system wide.
Debug.js:169 [430534][EventController] Added 0 inline events
Debug.js:169 [430534][Stream] Manifest updated... updating data system wide.
Debug.js:169 [430534][EventController] Added 0 inline events
Debug.js:169 [430535][Stream] Manifest updated... updating data system wide.
Debug.js:169 [430535][EventController] Added 0 inline events
Debug.js:169 [430535][Stream] Manifest updated... updating data system wide.
Debug.js:169 [430536][EventController] Added 0 inline events
Debug.js:169 [430536][Stream] Manifest updated... updating data system wide.
Debug.js:169 [430536][EventController] Added 0 inline events
Debug.js:169 [430537][Stream] Manifest updated... updating data system wide.
Debug.js:169 [430537][EventController] Added 0 inline events
Debug.js:169 [430537][ManifestUpdater] Manifest has been refreshed at Tue Mar 30 2021 10:10:42 GMT+0900 (日本標準時)[1617066642.036]
Debug.js:169 [430537][ManifestUpdater] Refresh manifest in 25000 milliseconds.
Debug.js:169 [456911][DashParser] Parsing complete: ( xml2json: 3.75ms, objectiron: 0.105ms, total: 0.00386s)
Debug.js:169 [456911][StreamController] Matching default timing source protocol to manifest protocol: https://time.akamai.com/?iso&ms
Debug.js:169 [456912][StreamController] Removing stream p26951105
Debug.js:169 [456912][Stream] Manifest updated... updating data system wide.
Debug.js:169 [456912][EventController] Added 0 inline events
Debug.js:169 [456913][Stream] Manifest updated... updating data system wide.
Debug.js:169 [456913][EventController] Added 0 inline events
Debug.js:169 [456913][Stream] Manifest updated... updating data system wide.
Debug.js:169 [456913][EventController] Added 0 inline events
Debug.js:169 [456914][Stream] Manifest updated... updating data system wide.
Debug.js:169 [456914][EventController] Added 0 inline events
Debug.js:169 [456914][Stream] Manifest updated... updating data system wide.
Debug.js:169 [456914][EventController] Added 0 inline events
Debug.js:169 [456915][Stream] Manifest updated... updating data system wide.
Debug.js:169 [456915][EventController] Added 0 inline events
Debug.js:169 [456915][ManifestUpdater] Manifest has been refreshed at Tue Mar 30 2021 10:11:08 GMT+0900 (日本標準時)[1617066668.414]
Debug.js:169 [456915][ManifestUpdater] Refresh manifest in 25000 milliseconds.
Debug.js:169 [482908][DashParser] Parsing complete: ( xml2json: 4.57ms, objectiron: 0.110ms, total: 0.00468s)
Debug.js:169 [482909][StreamController] Matching default timing source protocol to manifest protocol: https://time.akamai.com/?iso&ms
Debug.js:169 [482909][Stream] Manifest updated... updating data system wide.
Debug.js:169 [482909][EventController] Added 0 inline events
Debug.js:169 [482910][Stream] Manifest updated... updating data system wide.
Debug.js:169 [482910][EventController] Added 0 inline events
Debug.js:169 [482910][Stream] Manifest updated... updating data system wide.
Debug.js:169 [482910][EventController] Added 0 inline events
Debug.js:169 [482911][Stream] Manifest updated... updating data system wide.
Debug.js:169 [482911][EventController] Added 0 inline events
Debug.js:169 [482911][Stream] Manifest updated... updating data system wide.
Debug.js:169 [482911][EventController] Added 0 inline events
Debug.js:169 [482912][Stream] Manifest updated... updating data system wide.
Debug.js:169 [482912][EventController] Added 0 inline events
Debug.js:169 [482912][ManifestUpdater] Manifest has been refreshed at Tue Mar 30 2021 10:11:34 GMT+0900 (日本標準時)[1617066694.412]
Debug.js:169 [482913][ManifestUpdater] Refresh manifest in 25000 milliseconds.
Debug.js:169 [508964][DashParser] Parsing complete: ( xml2json: 5.02ms, objectiron: 0.115ms, total: 0.00514s)
Debug.js:169 [508965][StreamController] Matching default timing source protocol to manifest protocol: https://time.akamai.com/?iso&ms
Debug.js:169 [508965][Stream] Manifest updated... updating data system wide.
Debug.js:169 [508965][EventController] Added 0 inline events
Debug.js:169 [508966][Stream] Manifest updated... updating data system wide.
Debug.js:169 [508966][EventController] Added 0 inline events
Debug.js:169 [508966][Stream] Manifest updated... updating data system wide.
Debug.js:169 [508966][EventController] Added 0 inline events
Debug.js:169 [508967][Stream] Manifest updated... updating data system wide.
Debug.js:169 [508967][EventController] Added 0 inline events
Debug.js:169 [508967][Stream] Manifest updated... updating data system wide.
Debug.js:169 [508967][EventController] Added 0 inline events
Debug.js:169 [508968][Stream] Manifest updated... updating data system wide.
Debug.js:169 [508968][EventController] Added 0 inline events
Debug.js:169 [508968][Stream] Manifest updated... updating data system wide.
Debug.js:169 [508968][EventController] Added 0 inline events
Debug.js:169 [508969][ManifestUpdater] Manifest has been refreshed at Tue Mar 30 2021 10:12:00 GMT+0900 (日本標準時)[1617066720.468]
Debug.js:169 [508969][ManifestUpdater] Refresh manifest in 24999 milliseconds.