Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

v2.5.0: VOD does not play through until end #1901

Closed
5 tasks done
phloxic opened this issue Apr 28, 2017 · 23 comments
Closed
5 tasks done

v2.5.0: VOD does not play through until end #1901

phloxic opened this issue Apr 28, 2017 · 23 comments

Comments

@phloxic
Copy link

phloxic commented Apr 28, 2017

Environment
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 
@phloxic
Copy link
Author

phloxic commented Jun 4, 2017

EDIT: updated with completely conformant stream.
Conformance: similar streams - presumably the problem is related to stream ending on segment border - either now pass conformance (edge.flowplayer.org/night[1-6].mpd) - or in one case (edge.flowplayer.org/night7.mpd) fail on the first 2 representations with:

Warning: Unknown atom found "pasp": video sample descriptions would not normally contain this
WARNING: unknown mvex atom 'trep'
WARNING: unknown/unexpected atom 'meta'
### error: 
### Buffer underrun conformance error: first (and only one reported here) for sample 1 of run 1 of track fragment 1 of fragment 9 of track id 1 (sample absolute file offset 127648, fragment absolute file offset 127316, bandwidth: 121008)

Which seems weird as all 7 are encoded the same way.
But issue is there regardless of conformance, and 2.4.1 works fine with all of them, even with their previous versions which had more conformance errors like the above.

@phloxic
Copy link
Author

phloxic commented Jun 6, 2017

Bisected several times to 29c0eff as first bad commit.
Disclaimer: take result with a certain amount of caution because browser cache persistence can interfere, but I tried as best as I could

@phloxic
Copy link
Author

phloxic commented Jun 6, 2017

Reverting 29c0eff fixes the problem for me[tm].

@phloxic
Copy link
Author

phloxic commented Jul 11, 2017

Ping ;-)

@dsparacio
Copy link
Contributor

Working in nightly - looping each time. Can you try here
http://reference.dashif.org/dash.js/nightly/samples/dash-if-reference-player/index.html

@phloxic
Copy link
Author

phloxic commented Jul 11, 2017

@AkamaiDASH - thanks, but, no, for me it's still the same problem, sorry.

@phloxic
Copy link
Author

phloxic commented Jul 13, 2017

@AkamaiDASH - did you really try with e.g. https://edge.flowplayer.org/night4.mpd ?

@phloxic
Copy link
Author

phloxic commented Jul 13, 2017

It works rather well in Chrome, but not 100% reliably, but almost never in Firefox or Safari.

@phloxic
Copy link
Author

phloxic commented Jul 14, 2017

@AkamaiDASH - if I do the equivalent to reverting 29c0eff on the latest development:

diff --git a/src/streaming/controllers/StreamController.js b/src/streaming/controllers/StreamController.js
index 1db74493..6187a61e 100644
--- a/src/streaming/controllers/StreamController.js
+++ b/src/streaming/controllers/StreamController.js
@@ -305,6 +305,7 @@ function StreamController() {
         if (oldStream) oldStream.deactivate();
         activeStream = newStream;
         playbackController.initialize(activeStream.getStreamInfo());
+        videoTrackDetected = checkTrackPresence(Constants.VIDEO);

         //TODO detect if we should close and repose or jump to activateStream.
         openMediaSource(seekTime);
@@ -349,8 +350,6 @@ function StreamController() {
                 });
                 playbackController.seek(startTime); //seek to period start time
             }
-        } else {
-            videoTrackDetected = checkTrackPresence(Constants.VIDEO);
         }

         activeStream.startEventController();

the problem again goes away.

phloxic added a commit to phloxic/dash.js that referenced this issue Jul 14, 2017
…SwitchStream, done in composeStreams. The problem is, at this specific time, no StreamProcessor has been built. The return value of this function is always false."

This reverts commit 29c0eff.

To ensure VOD is always played until end (Dash-Industry-Forum#22).
See: Dash-Industry-Forum#1901
@phloxic
Copy link
Author

phloxic commented Aug 8, 2017

ping ;-) this problem is still present in Firefox 55, and arguably it's somewhat basic.

@spiterikevin
Copy link
Contributor

It turns out 29c0eff was exposing the problem not causing it. The problem was caused by an incorrect audio buffer target when a video track is present. Before 29c0eff the video track present check was (incorrectly) always returning false, circumventing the real issue. Fixed in #2122.

@phloxic
Copy link
Author

phloxic commented Aug 10, 2017

@spiterikevin - indeed your change seems to solve the problem.
Thanks a bunch!

@phloxic
Copy link
Author

phloxic commented Aug 11, 2017

@spiterikevin - hm, there's still trouble with some streams, for instance http://edge.flowplayer.org/moon.mpd - again, no problem with the revert hack.
Addendum: let's hope it was a caching issue, it seems to work now. I'll keep an eye on it.

@phloxic
Copy link
Author

phloxic commented Aug 11, 2017

No. It's better, but not as reliable as the "broken" approach, which always works in this regard. Especially in Firefox with empty cache, starting, and jump seeking towards the end.
I want it to work, but ... and otherwise I see lots of improvements, e.g. with multiperiod etc. Pity.
I'll try some more in the next couple of days.

@phloxic
Copy link
Author

phloxic commented Aug 11, 2017

And when it hangs, the following is repeated over and over in the console:

[Log] [28148] getNextFragment - Playing at the bleeding live edge and frag is not available yet  (dash.all.min.js, line 18)
[Log] [28161] Switch to index 0; buffer is empty.  (dash.all.min.js, line 18)
[Log] [28161] AbrController (video) stay on 0/7 (buffer: 0)  (dash.all.min.js, line 18)
[Log] [28161] ScheduleController - getNextFragment  (dash.all.min.js, line 18)

HTH.

@spiterikevin
Copy link
Contributor

Interesting. I am reproducing this error, but it is not as consistently reproducible. And I'm also occasionally getting it even with the revert fix. I don't yet understand what's going on and will look into it more.

@phloxic
Copy link
Author

phloxic commented Aug 11, 2017

@spiterikevin - much appreciated.

@spiterikevin
Copy link
Contributor

@blacktrash I have submitted two related PRs, #2128 and #2130. They are related to this issue. Do they help?

@phloxic
Copy link
Author

phloxic commented Aug 15, 2017

@spiterikevin - not 100% sure whether you meant me to test with all 4 patches applied:

but that's what I did, and it seems to solve the issue.

@spiterikevin
Copy link
Contributor

@blacktrash Yes, that's what I meant. Thank you for flagging the issue and testing it.

@phloxic
Copy link
Author

phloxic commented Aug 15, 2017

@spiterikevin - thank you.

@phloxic
Copy link
Author

phloxic commented Sep 4, 2017

@spiterikevin - I did not follow the fate of your patches closely, but from my perspective all seems fine with v2.6.0.

@epiclabsDASH
Copy link
Contributor

@blacktrash, closing this issue as it seems to be fixed. Please, feel free to reopen it in case you can reproduce the issue again.

Many thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants