v2.5.0: VOD does not play through until end
Created by: blacktrash
Environment
-
The MPD passes the DASH-IF Conformance Tool on http://dashif.org/conformance.html -
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://dashif.org/reference/players/javascript/ and not just on my page
- Link to playable MPD file: http://edge.flowplayer.org/night4.mpd
- Dash.js version: v2.5.0
- Browser name/version: all browsers I have tested so far
- OS name/version:
Steps to reproduce
Go to http://dashif.org/reference/players/javascript/v2.5.0/samples/dash-if-reference-player/ and play http://edge.flowplayer.org/night4.mpd May sometimes not happen if stream is cached, so cache-refresh before testing.
Observed behaviour
Stops before end instead of looping. Does not happen e.g. at http://dashif.org/reference/players/javascript/v2.4.1/samples/dash-if-reference-player/ or below.
Console output
[17] No supported version of EME detected on this user agent! - Attempts to play encrypted content will fail!
Debug.js:108 [22] [dash.js 2.5.0] MediaPlayer has been initialized
jquery-3.1.1.min.js:2 [Violation] 'setTimeout' handler took 236ms
angular.min.js:102 [Violation] 'load' handler took 177ms
Debug.js:108 [6069] Playback Initialized
Debug.js:108 [6123] Parsing complete: ( xml2json: 6.76ms, objectiron: 1.61ms, total: 0.00836s)
Debug.js:108 [6135] MediaSource attached to element. Waiting on open...
Debug.js:108 [6135] Manifest has been refreshed at Sun Jun 04 2017 17:23:05 GMT+0100 (BST)[1496593385.902]
Debug.js:108 [6137] MediaSource is open!
Debug.js:108 [6137] Duration successfully set to: 10
Debug.js:108 [6138] Added 0 inline events
Debug.js:108 [6139] video codec: video/mp4;codecs="avc1.64000D"
Debug.js:108 [6151] Last saved bitrate for video was 649
Debug.js:108 [6154] Perform SIDX load: http://edge.flowplayer.org/night4/9/dash/night4-216p-lo_track1_dashinit.mp4
Debug.js:108 [6155] Perform SIDX load: http://edge.flowplayer.org/night4/9/dash/night4-216p_track1_dashinit.mp4
Debug.js:108 [6156] Perform SIDX load: http://edge.flowplayer.org/night4/9/dash/night4-270p_track1_dashinit.mp4
Debug.js:108 [6158] Perform SIDX load: http://edge.flowplayer.org/night4/9/dash/night4-360p_track1_dashinit.mp4
Debug.js:108 [6159] Perform SIDX load: http://edge.flowplayer.org/night4/9/dash/night4-540p_track1_dashinit.mp4
Debug.js:108 [6160] Perform SIDX load: http://edge.flowplayer.org/night4/9/dash/night4-576p_track1_dashinit.mp4
Debug.js:108 [6161] Perform SIDX load: http://edge.flowplayer.org/night4/9/dash/night4-720p_track1_dashinit.mp4
Debug.js:108 [6162] Perform SIDX load: http://edge.flowplayer.org/night4/9/dash/night4-1080p_track1_dashinit.mp4
Debug.js:108 [6163] audio codec: audio/mp4;codecs="mp4a.40.2"
Debug.js:108 [6164] Perform SIDX load: http://edge.flowplayer.org/night4/9/dash/night4-216p-lo_track2_dashinit.mp4
Debug.js:108 [6165] No text data.
Debug.js:108 [6165] No fragmentedText data.
Debug.js:108 [6165] No embeddedText data.
Debug.js:108 [6166] No muxed data.
Debug.js:108 [6168] Start Event Controller
Debug.js:108 [6168] Native video element event: play
Debug.js:108 [6416] Parsing segments from SIDX.
Debug.js:108 [6426] Parsing segments from SIDX.
Debug.js:108 [6472] Parsing segments from SIDX.
Debug.js:108 [6481] Parsing segments from SIDX.
Debug.js:108 [6484] Parsing segments from SIDX.
Debug.js:108 [6486] Parsing segments from SIDX.
Debug.js:108 [6513] Parsing segments from SIDX.
Debug.js:108 [6565] Parsing segments from SIDX.
Debug.js:108 [6566] AbrController (video) switch from 0 to 5/7 (buffer: 0)
undefined
Debug.js:108 [6587] Parsing segments from SIDX.
Debug.js:108 [6591] Schedule controller starting for video
Debug.js:108 [6592] Schedule controller starting for audio
Debug.js:108 [6594] Top qualityvideo index has changed from undefined to 7
Debug.js:108 [6596] AbrController (video) stay on 5/7 (buffer: 0)
Debug.js:108 [6599] Top qualityaudio index has changed from undefined to 0
Debug.js:108 [6599] AbrController (audio) stay on 0/0 (buffer: 0)
Debug.js:108 [6783] Init fragment finished loading saving to audio's init cache
Debug.js:108 [6785] Init fragment finished loading saving to video's init cache
Debug.js:108 [6791] Native video element event: loadedmetadata
Debug.js:108 [6804] AbrController (video) stay on 5/7 (buffer: 0)
Debug.js:108 [6805] Getting the request for video time : 0
Debug.js:108 [6806] SegmentBase: 0 / 10
Debug.js:108 [7045] Buffered Range for type: video : 0 - 1
Debug.js:108 [7046] Got enough buffer to start.
Debug.js:108 [7049] ThroughputRule requesting switch to index: 7 type: video Average throughput 19352 kbps
Debug.js:108 [7049] AbrController (video) switch from 5 to 7/7 (buffer: 1)
{"throughput":19351.714,"latency":209}
Debug.js:108 [7240] Init fragment finished loading saving to video's init cache
Debug.js:108 [7241] Buffered Range for type: video : 0 - 1
Debug.js:108 [7243] AbrController (video) stay on 7/7 (buffer: 1)
Debug.js:108 [7243] Getting the request for video time : 1
Debug.js:108 [7244] SegmentBase: 0 / 10
Debug.js:108 [7244] Getting the next request at index: 1
Debug.js:108 [7244] SegmentBase: 1 / 10
Debug.js:108 [7304] AbrController (audio) stay on 0/0 (buffer: 0)
Debug.js:108 [7305] Getting the request for audio time : 0
Debug.js:108 [7305] SegmentBase: 0 / 10
Debug.js:108 [7487] Buffered Range for type: video : 0 - 2
Debug.js:108 [7487] Buffered Range for type: audio : 0.046439 - 0.998457
Debug.js:108 [7488] Got enough buffer to start.
Debug.js:108 [7488] Requesting seek to time: 0.046439
Debug.js:108 [7495] Seeking to: 0.046439
Debug.js:108 [7499] ThroughputRule requesting switch to index: 7 type: video Average throughput 15475 kbps
Debug.js:108 [7499] AbrController (video) stay on 7/7 (buffer: 1.954)
Debug.js:108 [7499] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end. 0.046439 was changed to 2
Debug.js:108 [7500] Getting the request for video time : 2
Debug.js:108 [7500] Index for video time 2 is 1
Debug.js:108 [7500] SegmentBase: 1 / 10
Debug.js:108 [7501] Getting the next request at index: 2
Debug.js:108 [7501] SegmentBase: 2 / 10
Debug.js:108 [7513] ThroughputRule requesting switch to index: 0 type: audio Average throughput 101512 kbps
Debug.js:108 [7513] AbrController (audio) stay on 0/0 (buffer: 0.952)
Debug.js:108 [7514] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end. 0.046439 was changed to 0.998457
Debug.js:108 [7514] Getting the request for audio time : 0.998457
Debug.js:108 [7514] SegmentBase: 0 / 10
Debug.js:108 [7515] Getting the next request at index: 1
Debug.js:108 [7515] SegmentBase: 0.9520181405895691 / 10
Debug.js:108 [7530] Native video element event: seeked
Debug.js:108 [7530] Native video element event: playing
Debug.js:108 [7704] Buffered Range for type: audio : 0.046439 - 1.996915
Debug.js:108 [7721] Buffered Range for type: video : 0 - 3
Debug.js:108 [7724] ThroughputRule requesting switch to index: 7 type: video Average throughput 15475 kbps
Debug.js:108 [7725] AbrController (video) stay on 7/7 (buffer: 2.818)
Debug.js:108 [7725] Getting the request for video time : 3
Debug.js:108 [7725] Index for video time 3 is 2
Debug.js:108 [7726] SegmentBase: 2 / 10
Debug.js:108 [7726] Getting the next request at index: 3
Debug.js:108 [7726] SegmentBase: 3 / 10
Debug.js:108 [7928] Buffered Range for type: video : 0 - 4
Debug.js:108 [7931] ThroughputRule requesting switch to index: 7 type: video Average throughput 15475 kbps
Debug.js:108 [7931] Switch history rule index: 6 samples: 6 drops: 3
Debug.js:108 [7932] AbrController (video) switch from 7 to 6/7 (buffer: 3.612)
{"index":6,"drops":3,"noDrops":3,"dropSize":20}
Debug.js:108 [8107] Init fragment finished loading saving to video's init cache
Debug.js:108 [8108] Buffered Range for type: video : 0 - 4
Debug.js:108 [8109] Switch history rule index: 6 samples: 7 drops: 4
Debug.js:108 [8110] AbrController (video) stay on 6/7 (buffer: 3.432)
Debug.js:108 [8110] Getting the request for video time : 4.001241
Debug.js:108 [8110] Index for video time 4.001241 is 3
Debug.js:108 [8111] SegmentBase: 3 / 10
Debug.js:108 [8111] Getting the next request at index: 4
Debug.js:108 [8111] SegmentBase: 4 / 10
Debug.js:108 [8210] ThroughputRule requesting switch to index: 0 type: audio Average throughput 48696 kbps
Debug.js:108 [8211] AbrController (audio) stay on 0/0 (buffer: 1.649)
Debug.js:108 [8211] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end. 1.9504761904761905 was changed to 1.996915
Debug.js:108 [8212] Getting the request for audio time : 1.996915
Debug.js:108 [8212] Index for audio time 1.996915 is 1
Debug.js:108 [8212] SegmentBase: 0.9520181405895691 / 10
Debug.js:108 [8213] Getting the next request at index: 2
Debug.js:108 [8213] SegmentBase: 1.9504761904761905 / 10
Debug.js:108 [8394] Buffered Range for type: audio : 0.046439 - 2.995373
Debug.js:108 [8399] ThroughputRule requesting switch to index: 0 type: audio Average throughput 32907 kbps
Debug.js:108 [8399] AbrController (audio) stay on 0/0 (buffer: 2.141)
Debug.js:108 [8400] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end. 2.948934240362812 was changed to 2.995373
Debug.js:108 [8400] Getting the request for audio time : 2.995373
Debug.js:108 [8400] Index for audio time 2.995373 is 2
Debug.js:108 [8400] SegmentBase: 1.9504761904761905 / 10
Debug.js:108 [8401] Getting the next request at index: 3
Debug.js:108 [8401] SegmentBase: 2.948934240362812 / 10
Debug.js:108 [8461] Buffered Range for type: video : 0 - 5
Debug.js:108 [8464] ThroughputRule requesting switch to index: 7 type: video Average throughput 15475 kbps
Debug.js:108 [8464] Switch history rule index: 6 samples: 8 drops: 4
Debug.js:108 [8465] AbrController (video) stay on 6/7 (buffer: 4.079)
Debug.js:108 [8465] Getting the request for video time : 5.0014259999999995
Debug.js:108 [8466] Index for video time 5.0014259999999995 is 4
Debug.js:108 [8466] SegmentBase: 4 / 10
Debug.js:108 [8467] Getting the next request at index: 5
Debug.js:108 [8467] SegmentBase: 5 / 10
Debug.js:108 [8580] Buffered Range for type: audio : 0.046439 - 3.993831
Debug.js:108 [8582] ThroughputRule requesting switch to index: 0 type: audio Average throughput 49496 kbps
Debug.js:108 [8582] AbrController (audio) stay on 0/0 (buffer: 2.954)
Debug.js:108 [8583] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end. 3.947392290249433 was changed to 3.993831
Debug.js:108 [8583] Getting the request for audio time : 3.993831
Debug.js:108 [8583] Index for audio time 3.993831 is 3
Debug.js:108 [8583] SegmentBase: 2.948934240362812 / 10
Debug.js:108 [8584] Getting the next request at index: 4
Debug.js:108 [8584] SegmentBase: 3.947392290249433 / 10
Debug.js:108 [8660] Buffered Range for type: video : 0 - 6
Debug.js:108 [8663] ThroughputRule requesting switch to index: 7 type: video Average throughput 15475 kbps
Debug.js:108 [8663] Switch history rule index: 6 samples: 8 drops: 3
Debug.js:108 [8663] AbrController (video) stay on 6/7 (buffer: 4.879)
Debug.js:108 [8663] Getting the request for video time : 6.001295
Debug.js:108 [8664] Index for video time 6.001295 is 5
Debug.js:108 [8664] SegmentBase: 5 / 10
Debug.js:108 [8664] Getting the next request at index: 6
Debug.js:108 [8665] SegmentBase: 6 / 10
Debug.js:108 [8766] Buffered Range for type: audio : 0.046439 - 4.992289
Debug.js:108 [8769] ThroughputRule requesting switch to index: 0 type: audio Average throughput 49172 kbps
Debug.js:108 [8769] Switch history rule index: 0 samples: 6 drops: 2
Debug.js:108 [8770] AbrController (audio) stay on 0/0 (buffer: 3.766)
Debug.js:108 [8770] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end. 4.9458503401360545 was changed to 4.992289
Debug.js:108 [8770] Getting the request for audio time : 4.992289
Debug.js:108 [8771] Index for audio time 4.992289 is 4
Debug.js:108 [8771] SegmentBase: 3.947392290249433 / 10
Debug.js:108 [8771] Getting the next request at index: 5
Debug.js:108 [8771] SegmentBase: 4.9458503401360545 / 10
Debug.js:108 [9868] Buffered Range for type: video : 0 - 7
Debug.js:108 [9870] ThroughputRule requesting switch to index: 7 type: video Average throughput 15475 kbps
Debug.js:108 [9870] Switch history rule index: 6 samples: 8 drops: 2
Debug.js:108 [9871] AbrController (video) stay on 6/7 (buffer: 4.672)
Debug.js:108 [9871] Getting the request for video time : 7.00137
Debug.js:108 [9871] Index for video time 7.00137 is 6
Debug.js:108 [9871] SegmentBase: 6 / 10
Debug.js:108 [9872] Getting the next request at index: 7
Debug.js:108 [9872] SegmentBase: 7 / 10
Debug.js:108 [10600] Buffered Range for type: video : 0 - 8
Debug.js:108 [10602] ThroughputRule requesting switch to index: 7 type: video Average throughput 9927 kbps
Debug.js:108 [10602] Switch history rule index: 6 samples: 8 drops: 2
Debug.js:108 [10603] AbrController (video) stay on 6/7 (buffer: 4.94)
Debug.js:108 [10603] Getting the request for video time : 8
Debug.js:108 [10603] Index for video time 8 is 7
Debug.js:108 [10603] SegmentBase: 7 / 10
Debug.js:108 [10604] Getting the next request at index: 8
Debug.js:108 [10604] SegmentBase: 8 / 10
Debug.js:108 [10832] Buffered Range for type: audio : 0.046439 - 5.990747
Debug.js:108 [10834] ThroughputRule requesting switch to index: 0 type: audio Average throughput 3391 kbps
Debug.js:108 [10834] Switch history rule index: 0 samples: 7 drops: 2
Debug.js:108 [10834] AbrController (audio) stay on 0/0 (buffer: 2.699)
Debug.js:108 [10835] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end. 5.944308390022676 was changed to 5.990747
Debug.js:108 [10835] Getting the request for audio time : 5.990747
Debug.js:108 [10835] Index for audio time 5.990747 is 5
Debug.js:108 [10835] SegmentBase: 4.9458503401360545 / 10
Debug.js:108 [10836] Getting the next request at index: 6
Debug.js:108 [10836] SegmentBase: 5.944308390022676 / 10
Debug.js:108 [11087] Buffered Range for type: video : 0 - 9
Debug.js:108 [11090] ThroughputRule requesting switch to index: 7 type: video Average throughput 8319 kbps
Debug.js:108 [11091] Switch history rule index: 6 samples: 8 drops: 1
Debug.js:108 [11091] AbrController (video) stay on 6/7 (buffer: 5.453)
Debug.js:108 [11091] Getting the request for video time : 9
Debug.js:108 [11091] Index for video time 9 is 8
Debug.js:108 [11091] SegmentBase: 8 / 10
Debug.js:108 [11092] Getting the next request at index: 9
Debug.js:108 [11092] SegmentBase: 9 / 10
Debug.js:108 [11123] Buffered Range for type: audio : 0.046439 - 6.989205
Debug.js:108 [11125] ThroughputRule requesting switch to index: 0 type: audio Average throughput 5364 kbps
Debug.js:108 [11125] Switch history rule index: 0 samples: 8 drops: 2
Debug.js:108 [11126] AbrController (audio) stay on 0/0 (buffer: 3.406)
Debug.js:108 [11126] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end. 6.942766439909297 was changed to 6.989205
Debug.js:108 [11126] Getting the request for audio time : 6.989205
Debug.js:108 [11126] Index for audio time 6.989205 is 6
Debug.js:108 [11126] SegmentBase: 5.944308390022676 / 10
Debug.js:108 [11127] Getting the next request at index: 7
Debug.js:108 [11127] SegmentBase: 6.942766439909297 / 10
Debug.js:108 [11358] Buffered Range for type: video : 0 - 10
Debug.js:108 [11360] ThroughputRule requesting switch to index: 7 type: video Average throughput 7957 kbps
Debug.js:108 [11361] Switch history rule index: 6 samples: 8 drops: 1
Debug.js:108 [11361] AbrController (video) stay on 6/7 (buffer: 6.181)
Debug.js:108 [11361] Getting the request for video time : 10
Debug.js:108 [11362] Index for video time 10 is 9
Debug.js:108 [11362] SegmentBase: 9 / 10
Debug.js:108 [11363] Getting the next request at index: 10
Debug.js:108 [11363] Signal complete.
Debug.js:108 [11363] Schedule controller stopping for video
Debug.js:108 [11364] Stream is complete
Debug.js:108 [11380] Buffered Range for type: audio : 0.046439 - 7.987663
Debug.js:108 [11382] ThroughputRule requesting switch to index: 0 type: audio Average throughput 6262 kbps
Debug.js:108 [11383] Switch history rule index: 0 samples: 8 drops: 1
Debug.js:108 [11383] AbrController (audio) stay on 0/0 (buffer: 4.147)
Debug.js:108 [11383] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end. 7.9412244897959186 was changed to 7.987663
Debug.js:108 [11384] Getting the request for audio time : 7.987663
Debug.js:108 [11384] Index for audio time 7.987663 is 7
Debug.js:108 [11384] SegmentBase: 6.942766439909297 / 10
Debug.js:108 [11384] Getting the next request at index: 8
Debug.js:108 [11384] SegmentBase: 7.9412244897959186 / 10
Debug.js:108 [11575] Buffered Range for type: audio : 0.046439 - 8.986121
Debug.js:108 [11578] ThroughputRule requesting switch to index: 0 type: audio Average throughput 6709 kbps
Debug.js:108 [11578] AbrController (audio) stay on 0/0 (buffer: 4.95)
Debug.js:108 [11578] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end. 8.93968253968254 was changed to 8.986121
Debug.js:108 [11578] Getting the request for audio time : 8.986121
Debug.js:108 [11579] Index for audio time 8.986121 is 8
Debug.js:108 [11579] SegmentBase: 7.9412244897959186 / 10
Debug.js:108 [11579] Getting the next request at index: 9
Debug.js:108 [11579] SegmentBase: 8.93968253968254 / 10
Debug.js:108 [11775] Buffered Range for type: audio : 0.046439 - 9.984579
Debug.js:108 [17269] Buffer is empty! Stalling!
Debug.js:108 [17269] Waiting for more buffer before starting playback.
Debug.js:108 [17273] Native video element event: ratechange: 0