Dash.js v3.0 player freezes when trying to seek to the last available timecode positions
Created by: galileogalilei
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:
- Dash.js version: v3.0.0
- Browser name/version: Google Chrome 75.0.3770.100 (Official Build) (64-bit)
- OS name/version: Windows 10 Enterprise Edition
Steps to reproduce
- Please provide clear steps to reproduce your problem:
- load manifest file in the dash reference player: http://reference.dashif.org/dash.js/v3.0.0/samples/dash-if-reference-player/index.html
- use default configuration for the player
- the player starts playing the file
- seek to a position to the end of the file
- pause player
- seek to a position to the beginning of the file
- seek to position 59.55
Observed behaviour
- player is freezing in there(with readyState = 1, paused = false), the last event thrown is: waiting. after that, no error, no segment request/loading/, no javascript unhandled exception etc.
- clicking pause/play button has no effect on the player freezing state(a play promise abort error is thrown in the logs); the only way to unfreeze the player is to seek to a new position.
Console output
[6314][MediaPlayer] Streaming Initialized
dash.all.debug.js:15658 [6317][MediaPlayer] Playback Initialized
dash.all.debug.js:15658 [6341][DashParser] Parsing complete: ( xml2json: 3.91ms, objectiron: 0.245ms, total: 0.00415s)
dash.all.debug.js:15658 [6354][ManifestUpdater] Manifest has been refreshed at Mon Jul 08 2019 17:00:55 GMT+0200 (Central European Summer Time)[1562598055.697]
dash.all.debug.js:15658 [6377][Stream] No text data.
dash.all.debug.js:15658 [6377][Stream] No fragmentedText data.
dash.all.debug.js:15658 [6377][Stream] No embeddedText data.
dash.all.debug.js:15658 [6378][Stream] No muxed data.
dash.all.debug.js:15658 [6378][Stream] No image data.
dash.all.debug.js:15658 [6393][PlaybackController] Native video element event: play
dash.all.debug.js:15658 [6396][PlaybackController] Native video element event: waiting
dash.all.debug.js:15658 [6418][BufferController][video] Init fragment finished loading saving to video's init cache
dash.all.debug.js:15658 [6419][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-init-0.m4s , Range: undefined
dash.all.debug.js:15658 [6420][BufferController][audio] Init fragment finished loading saving to audio's init cache
dash.all.debug.js:15658 [6422][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-init-1.m4s , Range: undefined
dash.all.debug.js:15658 [6429][PlaybackController] Native video element event: loadedmetadata
dash.all.debug.js:15658 [6431][ScheduleController][video] Top quality video index has changed from undefined to 0
dash.all.debug.js:15658 [6436][ScheduleController][audio] Top quality audio index has changed from undefined to 0
dash.all.debug.js:15658 [6455][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00001.m4s , Range: undefined
dash.all.debug.js:15658 [6457][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00001.m4s , Range: undefined
dash.all.debug.js:15658 [6486][PlaybackController] Native video element event: playing
dash.all.debug.js:15658 [6504][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00002.m4s , Range: undefined
dash.all.debug.js:15658 [6520][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00003.m4s , Range: undefined
dash.all.debug.js:15658 [6549][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00004.m4s , Range: undefined
dash.all.debug.js:15658 [6571][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00005.m4s , Range: undefined
dash.all.debug.js:15658 [6573][AbrController] AbrController (video) switching from throughput to buffer occupancy ABR rule (buffer: 12.800).
dash.all.debug.js:15658 [6590][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00006.m4s , Range: undefined
dash.all.debug.js:15658 [6604][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00007.m4s , Range: undefined
dash.all.debug.js:15658 [6622][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00008.m4s , Range: undefined
dash.all.debug.js:15658 [6639][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00009.m4s , Range: undefined
dash.all.debug.js:15658 [6655][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00010.m4s , Range: undefined
dash.all.debug.js:15658 [6671][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00011.m4s , Range: undefined
dash.all.debug.js:15658 [6686][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00012.m4s , Range: undefined
dash.all.debug.js:15658 [6982][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00002.m4s , Range: undefined
dash.all.debug.js:15658 [7001][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00003.m4s , Range: undefined
dash.all.debug.js:15658 [7017][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00004.m4s , Range: undefined
dash.all.debug.js:15658 [7033][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00005.m4s , Range: undefined
dash.all.debug.js:15658 [7034][AbrController] AbrController (audio) switching from throughput to buffer occupancy ABR rule (buffer: 12.604).
dash.all.debug.js:15658 [7050][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00006.m4s , Range: undefined
dash.all.debug.js:15658 [7067][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00007.m4s , Range: undefined
dash.all.debug.js:15658 [7080][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00008.m4s , Range: undefined
dash.all.debug.js:15658 [7100][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00009.m4s , Range: undefined
dash.all.debug.js:15658 [7115][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00010.m4s , Range: undefined
dash.all.debug.js:15658 [7124][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00011.m4s , Range: undefined
dash.all.debug.js:15658 [7141][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00012.m4s , Range: undefined
dash.all.debug.js:15658 [7158][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00013.m4s , Range: undefined
dash.all.debug.js:15658 [7350][PlaybackController] Native video element event: pause
dash.all.debug.js:15658 [8579][PlaybackController] Requesting seek to time: 49
dash.all.debug.js:15658 [8581][PlaybackController] Seeking to: 49
dash.all.debug.js:15658 [8584][AbrController] AbrController (video) switching from buffer occupancy to throughput ABR rule (buffer: 0.000).
dash.all.debug.js:15658 [8586][AbrController] AbrController (audio) switching from buffer occupancy to throughput ABR rule (buffer: 0.000).
dash.all.debug.js:15658 [8593][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00019.m4s , Range: undefined
dash.all.debug.js:15658 [8599][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00019.m4s , Range: undefined
dash.all.debug.js:15658 [8618][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00020.m4s , Range: undefined
dash.all.debug.js:15658 [8620][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00020.m4s , Range: undefined
dash.all.debug.js:15658 [8639][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00021.m4s , Range: undefined
dash.all.debug.js:15658 [8643][PlaybackController] Native video element event: seeked
dash.all.debug.js:15658 [8649][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00021.m4s , Range: undefined
dash.all.debug.js:15658 [8667][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00022.m4s , Range: undefined
dash.all.debug.js:15658 [8692][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00023.m4s , Range: undefined
dash.all.debug.js:15658 [8709][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00024.m4s , Range: undefined
dash.all.debug.js:15658 [8721][Stream] onBufferingCompleted - One streamProcessor has finished but audio one is not buffering completed
doLog @ dash.all.debug.js:15658
warn @ dash.all.debug.js:15609
onBufferingCompleted @ dash.all.debug.js:29447
(anonymous) @ dash.all.debug.js:15793
trigger @ dash.all.debug.js:15792
checkIfBufferingCompleted @ dash.all.debug.js:32266
onStreamCompleted @ dash.all.debug.js:32495
(anonymous) @ dash.all.debug.js:15793
trigger @ dash.all.debug.js:15792
executeRequest @ dash.all.debug.js:40163
getNextFragment @ dash.all.debug.js:34959
schedule @ dash.all.debug.js:34974
setTimeout (async)
startScheduleTimer @ dash.all.debug.js:35014
onBytesAppended @ dash.all.debug.js:35224
(anonymous) @ dash.all.debug.js:15793
trigger @ dash.all.debug.js:15792
onAppended @ dash.all.debug.js:32045
afterSuccess @ dash.all.debug.js:28631
executeCallback @ dash.all.debug.js:28712
updateEndHandler @ dash.all.debug.js:28729
dash.all.debug.js:15658 [8722][ScheduleController][video] Stream is complete
dash.all.debug.js:15658 [9155][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00022.m4s , Range: undefined
dash.all.debug.js:15658 [9165][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00023.m4s , Range: undefined
dash.all.debug.js:15658 [9180][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00024.m4s , Range: undefined
dash.all.debug.js:15658 [9553][PlaybackController] Requesting seek to time: 2
dash.all.debug.js:15658 [9555][PlaybackController] Seeking to: 2
dash.all.debug.js:15658 [9565][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00001.m4s , Range: undefined
dash.all.debug.js:15658 [9568][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00001.m4s , Range: undefined
dash.all.debug.js:15658 [9579][PlaybackController] Native video element event: seeked
dash.all.debug.js:15658 [9584][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00002.m4s , Range: undefined
dash.all.debug.js:15658 [9587][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00002.m4s , Range: undefined
dash.all.debug.js:15658 [9621][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00003.m4s , Range: undefined
dash.all.debug.js:15658 [9640][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00004.m4s , Range: undefined
dash.all.debug.js:15658 [9655][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00005.m4s , Range: undefined
dash.all.debug.js:15658 [9674][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00006.m4s , Range: undefined
dash.all.debug.js:15658 [9676][AbrController] AbrController (video) switching from throughput to buffer occupancy ABR rule (buffer: 13.360).
dash.all.debug.js:15658 [9693][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00007.m4s , Range: undefined
dash.all.debug.js:15658 [9710][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00008.m4s , Range: undefined
dash.all.debug.js:15658 [9730][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00009.m4s , Range: undefined
dash.all.debug.js:15658 [9751][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00010.m4s , Range: undefined
dash.all.debug.js:15658 [9772][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00011.m4s , Range: undefined
dash.all.debug.js:15658 [9790][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00012.m4s , Range: undefined
dash.all.debug.js:15658 [9810][ScheduleController][video] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-0-00013.m4s , Range: undefined
dash.all.debug.js:15658 [10097][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00003.m4s , Range: undefined
dash.all.debug.js:15658 [10105][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00004.m4s , Range: undefined
dash.all.debug.js:15658 [10113][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00005.m4s , Range: undefined
dash.all.debug.js:15658 [10129][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00006.m4s , Range: undefined
dash.all.debug.js:15658 [10133][AbrController] AbrController (audio) switching from throughput to buffer occupancy ABR rule (buffer: 13.360).
dash.all.debug.js:15658 [10155][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00007.m4s , Range: undefined
dash.all.debug.js:15658 [10185][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00008.m4s , Range: undefined
dash.all.debug.js:15658 [10205][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00009.m4s , Range: undefined
dash.all.debug.js:15658 [10213][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00010.m4s , Range: undefined
dash.all.debug.js:15658 [10231][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00011.m4s , Range: undefined
dash.all.debug.js:15658 [10249][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00012.m4s , Range: undefined
dash.all.debug.js:15658 [10267][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00013.m4s , Range: undefined
window.player.seek(59.55);
dash.all.debug.js:15658 [13672][PlaybackController] Requesting seek to time: 59.55
undefined
dash.all.debug.js:15658 [13673][PlaybackController] Seeking to: 59.55
dash.all.debug.js:15658 [13680][Stream] onBufferingCompleted - One streamProcessor has finished but audio one is not buffering completed
doLog @ dash.all.debug.js:15658
warn @ dash.all.debug.js:15609
onBufferingCompleted @ dash.all.debug.js:29447
(anonymous) @ dash.all.debug.js:15793
trigger @ dash.all.debug.js:15792
checkIfSufficientBuffer @ dash.all.debug.js:32278
updateBufferLevel @ dash.all.debug.js:32251
onRemoved @ dash.all.debug.js:32467
(anonymous) @ dash.all.debug.js:15793
trigger @ dash.all.debug.js:15792
(anonymous) @ dash.all.debug.js:28592
executeCallback @ dash.all.debug.js:28712
updateEndHandler @ dash.all.debug.js:28729
dash.all.debug.js:15658 [13682][AbrController] AbrController (audio) switching from buffer occupancy to throughput ABR rule (buffer: 0.000).
dash.all.debug.js:15658 [13700][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00023.m4s , Range: undefined
dash.all.debug.js:15658 [13709][ScheduleController][audio] OnFragmentLoadingCompleted - Url: http://test-dash-domain/dash-file1-chunk-output-1-00024.m4s , Range: undefined
dash.all.debug.js:15658 [13710][AbrController] AbrController (video) switching from buffer occupancy to throughput ABR rule (buffer: 0.000).
dash.all.debug.js:15658 [13716][StreamController] [onStreamBufferingCompleted] calls signalEndOfStream of mediaSourceController.
dash.all.debug.js:15658 [13717][ScheduleController][audio] Stream is complete
dash.all.debug.js:15658 [14912][PlaybackController] Native video element event: play
dash.all.debug.js:15658 [14913][ScheduleController][audio] Start denied to Schedule Controller
doLog @ dash.all.debug.js:15658
warn @ dash.all.debug.js:15609
start @ dash.all.debug.js:34867
onPlaybackStarted @ dash.all.debug.js:35303
(anonymous) @ dash.all.debug.js:15793
trigger @ dash.all.debug.js:15792
onPlaybackStart @ dash.all.debug.js:34326
play (async)
play @ dash.all.debug.js:41470
play @ dash.all.debug.js:33991
play @ dash.all.debug.js:25940
onPlayPauseClick @ ControlBar.js:133
dash.all.debug.js:15658 [14914][PlaybackController] Native video element event: waiting
dash.all.debug.js:15658 [16873][PlaybackController] Native video element event: pause
dash.all.debug.js:15658 [16874][VideoModel] Caught pending play exception - continuing (AbortError: The play() request was interrupted by a call to pause(). https://goo.gl/LdLk22)
doLog @ dash.all.debug.js:15658
warn @ dash.all.debug.js:15609
(anonymous) @ dash.all.debug.js:41476
Promise.catch (async)
play @ dash.all.debug.js:41472
play @ dash.all.debug.js:33991
play @ dash.all.debug.js:25940
onPlayPauseClick @ ControlBar.js:133
dash.all.debug.js:15658 [18521][PlaybackController] Native video element event: play
dash.all.debug.js:15658 [18522][ScheduleController][audio] Start denied to Schedule Controller
doLog @ dash.all.debug.js:15658
warn @ dash.all.debug.js:15609
start @ dash.all.debug.js:34867
onPlaybackStarted @ dash.all.debug.js:35303
(anonymous) @ dash.all.debug.js:15793
trigger @ dash.all.debug.js:15792
onPlaybackStart @ dash.all.debug.js:34326
play (async)
play @ dash.all.debug.js:41470
play @ dash.all.debug.js:33991
play @ dash.all.debug.js:25940
onPlayPauseClick @ ControlBar.js:133
dash.all.debug.js:15658 [18522][PlaybackController] Native video element event: waiting