Closed abuisine closed 8 years ago
It's pretty poor form not to warn people that this is adult content.
That said, I don't see the errors you describe.
A simple reload of the page usually solves the problem. This occurs randomly. A video that finally play correctly after a reload will never fail again.
Even if you clear the cache?
There was a change around self-initialising streams in 2.3 but this should only affect manifests which do not signal indexRange. The behaviour around reloading probably implies this isn't causing the problem anyway.
Sorry for the adult stuff, I have a test video produced through the same encoding farm here
Might be linked to a cache problem as the problem disappears until I wait a day and launch a new run of tests.
The first time is faulty, and
if I reload the problem disappears.
Just had it on this one
I am attaching a picture of the result, looking at the bottom of the 3D scene (which is a semi sphere), the video is a cubemap projection so you can infer the cube faces
Launching PlayerBase PlayerDesktop
Launching VideoElement DashVideoElement
[8] Playback Initialized
[17] [dash.js 2.3.0] MediaPlayer has been initialized
THREE.WebGLRenderer 75
[169] Parsing complete: ( xml2json: 2.30ms, objectiron: 1.86ms, total: 0.00416s)
[170] Manifest has been refreshed at Mon Sep 05 2016 11:54:21 GMT+0200 (CEST)[1473069261.7]
[176] MediaSource attached to element. Waiting on open...
[177] MediaSource is open!
[177] Duration successfully set to: 30.013
[178] Added 0 inline events
[179] video codec: video/mp4;codecs="avc1.64001F"
[185] Schedule controller stopping for video
[187] Start searching for initialization.
[187] Perform init search: https://dbbqdof8c1gf3.cloudfront.net/videos/93/77/dash_cubemap/media-video-1.mp4
[187] Perform SIDX load: https://dbbqdof8c1gf3.cloudfront.net/videos/93/77/dash_cubemap/media-video-1.mp4
[187] Start searching for initialization.
[187] Perform init search: https://dbbqdof8c1gf3.cloudfront.net/videos/93/77/dash_cubemap/media-video-2.mp4
[188] Perform SIDX load: https://dbbqdof8c1gf3.cloudfront.net/videos/93/77/dash_cubemap/media-video-2.mp4
[188] Start searching for initialization.
[188] Perform init search: https://dbbqdof8c1gf3.cloudfront.net/videos/93/77/dash_cubemap/media-video-3.mp4
[188] Perform SIDX load: https://dbbqdof8c1gf3.cloudfront.net/videos/93/77/dash_cubemap/media-video-3.mp4
[188] Start searching for initialization.
[188] Perform init search: https://dbbqdof8c1gf3.cloudfront.net/videos/93/77/dash_cubemap/media-video-4.mp4
[188] Perform SIDX load: https://dbbqdof8c1gf3.cloudfront.net/videos/93/77/dash_cubemap/media-video-4.mp4
[188] Start searching for initialization.
[188] Perform init search: https://dbbqdof8c1gf3.cloudfront.net/videos/93/77/dash_cubemap/media-video-5.mp4
[189] Perform SIDX load: https://dbbqdof8c1gf3.cloudfront.net/videos/93/77/dash_cubemap/media-video-5.mp4
[189] audio codec: audio/mp4;codecs="mp4a.40.2"
[190] Schedule controller stopping for audio
[190] Start searching for initialization.
[190] Perform init search: https://dbbqdof8c1gf3.cloudfront.net/videos/93/77/dash_cubemap/media-audio-en-mp4a.mp4
[190] Perform SIDX load: https://dbbqdof8c1gf3.cloudfront.net/videos/93/77/dash_cubemap/media-audio-en-mp4a.mp4
[190] No text data.
[190] No fragmentedText data.
[191] No embeddedText data.
[191] No muxed data.
[277] Searching for initialization.
[277] Found the initialization. Range: 0-727
[281] Parsing segments from SIDX.
[310] Searching for initialization.
[310] Found the initialization. Range: 0-659
[314] Parsing segments from SIDX.
[317] Parsing segments from SIDX.
[318] Searching for initialization.
[319] Found the initialization. Range: 0-726
[319] Searching for initialization.
[319] Found the initialization. Range: 0-726
[329] Searching for initialization.
[329] Found the initialization. Range: 0-726
[355] Searching for initialization.
[355] Found the initialization. Range: 0-727
[357] Parsing segments from SIDX.
[374] Parsing segments from SIDX.
[379] Start Event Controller
[380] Schedule controller starting for video
[380] Schedule controller starting for audio
[384] Init fragment finished loading saving to video's init cache
[385] Init fragment finished loading saving to audio's init cache
[388] Native video element event: loadedmetadata
[390] Getting the request for audio time : 0
[391] SegmentBase: 0 / 30.013
[391] Init fragment finished loading saving to video's init cache
[394] Getting the request for video time : 0
[394] SegmentBase: 0 / 30.013
[395] Buffered Range for type: audio : 0.042666 - 2.005333
[395] Got enough buffer to start.
[395] Requesting seek to time: 0.042666
[398] Seeking to: 0.042666
[400] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end. 0.042666 was changed to 2.005333
[400] Getting the request for audio time : 2.005333
[400] SegmentBase: 0 / 30.013
[400] Getting the next request at index: 1
[400] SegmentBase: 2.005333333333333 / 30.013
[403] Buffered Range for type: audio : 0.042666 - 4.010666
[409] Buffered Range for type: video : 0 - 2.001999
[410] Got enough buffer to start.
[412] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end. 0.042666 was changed to 2.001999
[412] Getting the request for video time : 2.001999
[412] SegmentBase: 0 / 30.013
[412] Getting the next request at index: 1
[412] SegmentBase: 2.002 / 30.013
[418] Native video element event: seeked
[969] Buffered Range for type: video : 0 - 4.003999
[970] Getting the request for video time : 4.003999
[970] Index for video time 4.003999 is 1
[970] SegmentBase: 2.002 / 30.013
[971] Getting the next request at index: 2
[971] SegmentBase: 4.004 / 30.013
[1119] Buffered Range for type: video : 0 - 6.005999
[1121] Getting the request for video time : 6.005999
[1121] Index for video time 6.005999 is 2
[1121] SegmentBase: 4.004 / 30.013
[1121] Getting the next request at index: 3
[1121] SegmentBase: 6.006 / 30.013
[1223] Buffered Range for type: video : 0 - 8.007999
[1225] Getting the request for video time : 8.007999
[1225] Index for video time 8.007999 is 3
[1225] SegmentBase: 6.006 / 30.013
[1225] Getting the next request at index: 4
[1225] SegmentBase: 8.008 / 30.013
[1250] Buffered Range for type: video : 0 - 10.009999
[1251] Getting the request for video time : 10.009999
[1252] Index for video time 10.009999 is 4
[1252] SegmentBase: 8.008 / 30.013
[1252] Getting the next request at index: 5
[1252] SegmentBase: 10.01 / 30.013
[1348] Buffered Range for type: video : 0 - 12.011999
[1349] Getting the request for video time : 12.011999
[1349] Index for video time 12.011999 is 5
[1349] SegmentBase: 10.01 / 30.013
[1350] Getting the next request at index: 6
[1350] SegmentBase: 12.012 / 30.013
[1407] Getting the request for audio time : 4.010666666666666
[1407] Index for audio time 4.010666666666666 is 1
[1407] SegmentBase: 2.005333333333333 / 30.013
[1407] Getting the next request at index: 2
[1407] SegmentBase: 4.010666666666666 / 30.013
[1409] Buffered Range for type: audio : 0.042666 - 6.015999
[1426] Getting the request for audio time : 6.016
[1427] Index for audio time 6.016 is 2
[1427] SegmentBase: 4.010666666666666 / 30.013
[1427] Getting the next request at index: 3
[1427] SegmentBase: 6.016 / 30.013
[1430] Buffered Range for type: audio : 0.042666 - 7.999999
[1432] Getting the request for audio time : 8
[1432] Index for audio time 8 is 3
[1432] SegmentBase: 6.016 / 30.013
[1433] Getting the next request at index: 4
[1433] SegmentBase: 8 / 30.013
[1435] Buffered Range for type: audio : 0.042666 - 10.005333
[1436] Getting the request for audio time : 10.005333333333333
[1436] Index for audio time 10.005333333333333 is 4
[1436] SegmentBase: 8 / 30.013
[1437] Getting the next request at index: 5
[1437] SegmentBase: 10.005333333333333 / 30.013
[1439] Buffered Range for type: audio : 0.042666 - 12.010666
[1865] Buffered Range for type: video : 0 - 14.013999
[1867] Getting the request for video time : 14.013999
[1867] Index for video time 14.013999 is 6
[1867] SegmentBase: 12.012 / 30.013
[1867] Getting the next request at index: 7
[1867] SegmentBase: 14.014 / 30.013
[1941] Getting the request for audio time : 12.010666666666665
[1941] Index for audio time 12.010666666666665 is 5
[1941] SegmentBase: 10.005333333333333 / 30.013
[1941] Getting the next request at index: 6
[1941] SegmentBase: 12.010666666666667 / 30.013
[1944] Buffered Range for type: audio : 0.042666 - 14.015999
[2191] Native video element event: play
[2192] Native video element event: playing
[2345] Buffered Range for type: video : 0 - 16.015999
[2346] Getting the request for video time : 16.017583000000002
[2346] Index for video time 16.017583000000002 is 7
[2346] SegmentBase: 14.014 / 30.013
[2347] Getting the next request at index: 8
[2347] SegmentBase: 16.016 / 30.013
[2446] Getting the request for audio time : 14.016
[2446] Index for audio time 14.016 is 6
[2446] SegmentBase: 12.010666666666667 / 30.013
[2446] Getting the next request at index: 7
[2446] SegmentBase: 14.016 / 30.013
[2448] Buffered Range for type: audio : 0.042666 - 16.021333
[2878] Buffered Range for type: video : 0 - 18.017999
[2881] Getting the request for video time : 18.020569
[2881] Index for video time 18.020569 is 8
[2881] SegmentBase: 16.016 / 30.013
[2881] Getting the next request at index: 9
[2881] SegmentBase: 18.018 / 30.013
[2951] Getting the request for audio time : 16.021333333333335
[2951] Index for audio time 16.021333333333335 is 7
[2951] SegmentBase: 14.016 / 30.013
[2951] Getting the next request at index: 8
[2951] SegmentBase: 16.021333333333335 / 30.013
[2954] Buffered Range for type: audio : 0.042666 - 18.026666
[3451] Buffered Range for type: video : 0 - 20.019999
[3453] Getting the request for video time : 20.021863
[3453] Index for video time 20.021863 is 9
[3453] SegmentBase: 18.018 / 30.013
[3453] Getting the next request at index: 10
[3453] SegmentBase: 20.02 / 30.013
[3456] Getting the request for audio time : 18.026666666666667
[3456] Index for audio time 18.026666666666667 is 8
[3456] SegmentBase: 16.021333333333335 / 30.013
[3456] Getting the next request at index: 9
[3456] SegmentBase: 18.026666666666667 / 30.013
[3461] Buffered Range for type: audio : 0.042666 - 20.010666
[3469] Buffered Range for type: video : 0 - 22.021999
[3471] Getting the request for video time : 22.024343000000002
[3471] Index for video time 22.024343000000002 is 10
[3471] SegmentBase: 20.02 / 30.013
[3471] Getting the next request at index: 11
[3471] SegmentBase: 22.022 / 30.013
[3964] Getting the request for audio time : 20.010666666666665
[3964] Index for audio time 20.010666666666665 is 9
[3964] SegmentBase: 18.026666666666667 / 30.013
[3964] Getting the next request at index: 10
[3964] SegmentBase: 20.010666666666665 / 30.013
[3966] Buffered Range for type: audio : 0.042666 - 22.015999
[3986] Buffered Range for type: video : 0 - 24.023999
[3988] Getting the request for video time : 24.025971000000002
[3988] Index for video time 24.025971000000002 is 11
[3988] SegmentBase: 22.022 / 30.013
[3988] Getting the next request at index: 12
[3988] SegmentBase: 24.024 / 30.013
[4420] Buffered Range for type: video : 0 - 26.025999
[4422] Getting the request for video time : 26.027411
[4422] Index for video time 26.027411 is 12
[4422] SegmentBase: 24.024 / 30.013
[4422] Getting the next request at index: 13
[4422] SegmentBase: 26.026 / 30.013
[4469] Getting the request for audio time : 22.016
[4469] Index for audio time 22.016 is 10
[4469] SegmentBase: 20.010666666666665 / 30.013
[4469] Getting the next request at index: 11
[4469] SegmentBase: 22.016 / 30.013
[4472] Buffered Range for type: audio : 0.042666 - 24.021333
[4473] Getting the request for audio time : 24.02133333333333
[4473] Index for audio time 24.02133333333333 is 11
[4473] SegmentBase: 22.016 / 30.013
[4474] Getting the next request at index: 12
[4474] SegmentBase: 24.021333333333335 / 30.013
[4478] Buffered Range for type: audio : 0.042666 - 26.026666
[4964] Buffered Range for type: video : 0 - 28.027999
[4966] Getting the request for video time : 28.029512000000004
[4966] Index for video time 28.029512000000004 is 13
[4966] SegmentBase: 26.026 / 30.013
[4966] Getting the next request at index: 14
[4966] SegmentBase: 28.028 / 30.013
[4981] Getting the request for audio time : 26.026666666666667
[4981] Index for audio time 26.026666666666667 is 12
[4981] SegmentBase: 24.021333333333335 / 30.013
[4981] Getting the next request at index: 13
[4981] SegmentBase: 26.026666666666667 / 30.013
[4983] Buffered Range for type: audio : 0.042666 - 28.031999
[5074] Buffered Range for type: video : 0 - 30.013316
[5078] Getting the request for video time : 30.017227
[5078] Index for video time 30.017227 is 14
[5078] SegmentBase: 28.028 / 30.013
[5078] Getting the next request at index: 15
[5078] Signal complete.
[5079] Schedule controller stopping for video
[5079] Stream is complete
[5486] Getting the request for audio time : 28.032
[5486] Index for audio time 28.032 is 13
[5486] SegmentBase: 26.026666666666667 / 30.013
[5486] Getting the next request at index: 14
[5486] SegmentBase: 28.032 / 30.013
[5489] Buffered Range for type: audio : 0.042666 - 30.013316
[22349] Native video element event: pause
Ok, seems to be a wrong init on my part
I have the video element being created and initialized before attaching it to the dash player.
The video.src was set with the manifest, and almost immediately after (in a child class constructor) the dash initialize() was called with the video element and the same src. Of course this is not good for a couple of reasons:
In any case, when reloading, I suspect that there is much less delay between both initialization which makes the video and dashplayer init to collide differently, which makes the dash player to run correctly (no green screen).
So I corrected my code and now avoid to set src to the video element, which seems to solve everything.
I'll close the ticket in a couple of days, once I got sufficient logs and stats to confirm all this !
PS: I even tried to set video.src to null, which caused the same issues (green screen).
Bad news, I still have the problem.
If I bind the video element as a normal 2D canvas, I see a kind of green blinking screen which alternates between the following two kind of frames:
I can play pause seek etc ... no problem, but it stays green
Are you using Ref player to reproduce this issue? If so, can you open the Show Options Tab and uncheck Fast Switch to see if anything changes. just want to make sure that is not the case.
The disabling of the "Fast Switch" feature is a really good hint, as I experienced those "green screens" mostly when the init fragment has not been appended to source buffer correctly before switching video quality levels. So you have to ensure that BEFORE any video chunk is appended to source buffer, its corresponding init frame has to be appended before, otherwise the video decoder gets wrong metadata and therefore is not able to render the frames correctly.
Very good point indeed, I actually do change the quality level just after initialization based on user configuration (cookies), let me do a run of test today !
I am not able to reproduce the problem on the reference player.
But looking at my code, I set a quality as soon as streaminitialized is triggered
this.player.on('streaminitialized' ...
if user has quality set as auto
this.player.setAutoSwitchQualityFor('video', true);
if user has a specific quality value
this.player.setAutoSwitchQualityFor('video', false);
this.player.setQualityFor('video', quality);
During all my previous tests (from the posts on this page) I had my user setting at maximum quality value.
my player init is as follows:
this.player.initialize(this.v, video_s, false);
this.player.getDebug().setLogToBrowserConsole(true);
this.player.setStableBufferTime(20);
this.player.setTrackSwitchModeFor('video', 'alwaysReplace');
I did a few tests here and it seems to confirm that setQualityFor just after initialization makes the decoding fail (from time to time) as I never saw the problem when auto switch quality is on.
Fast Switch
I did another run of tests with setFastSwitchEnabled to either true or false, and quality always set to highest value, like this:
this.player.initialize(this.v, video_s, false);
this.player.getDebug().setLogToBrowserConsole(true);
this.player.setStableBufferTime(20);
this.player.setFastSwitchEnabled(false);
And I got decoding failures, from time tot time, in both cases.
@bwidtmann we insure init before media chunk fast switch will not affect that. But if a media chunk is inserted at a point that the playhead has elapsed, then you may get some odd artifacts. That is the tricky part. @abuisine are you fairly confident that fast switch is not your issue. Sounds like it is happening either way. I will take a deeper look at this today.
@AkamaiDASH I can only talk based on the tests I made, and unfortunately there is a lot of noise on my page (WebGL, js, etc ...) What I am sure about is that I saw the decoding problem with fast switch being set to false, at least a couple of times. As soon as I get a bit more time I will try to build the simplest page that reproduces the problem.
Great thanks for confirming you saw same issues with and without the feature enabled. You should be able to set right at stream init event the auto switch state and quality. I do something close with the ControlBar.js in contrib lib. That fact that you can not produce this in our player may point to something in your page that is causing the issue.
I have a feeling this is not an issue in Dash.js but want to make sure. Seems like related to specific setup/player. @abuisine please reopen with an update if you feel this should stay open.
I was able to reproduce the problem with 2.4.0 on my setup, will check with lighter webpage
@abuisine I just had this same issue -- have you tried setting quality inside 'BUFFER_LOADED' instead of 'STREAM_INITIALIZED'?
Nope I just tried the 2.4.0 and had the same problems, I am working on VP9 encoding to see if the problems persists.
It might be linked to high resolutions, I am @ level 5.2
On Thu, Jul 13, 2017 at 10:22 PM, Travis Nischuk notifications@github.com wrote:
@abuisine https://github.com/abuisine I just had this same issue -- have you tried setting quality inside 'BUFFER_LOADED' instead of 'STREAM_INITIALIZED'?
http://cdn.dashjs.org/latest/jsdoc/MediaPlayerEvents.html
— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/Dash-Industry-Forum/dash.js/issues/1569#issuecomment-315191285, or mute the thread https://github.com/notifications/unsubscribe-auth/ABB1mZGzhqh2LIXZtarP60UNfkmzLlRsks5sNnyMgaJpZM4J0Tih .
@abuisine Did you find a solution for this issue. I have the same problem with DashJS v2.9.2 where i get green artifacts when I seek to different timestamp while player attempts to switch quality (also happens when i switch quality manually and seek to different position immediately). I tried this with both enabling and disabling the "fast switching", resulting same issue.
After looking at the logs produced, it looks like the onPlaybackSeeking method in ScheduleController is aborting the Init Fragment
request made by the quality switch request when the two events happen very quickly in order to support faster seek response.
You can see on line 36857
it is loading video_5
and later on line 36862
the quality change is triggered to load video_4
fragment url. But if you look even further on line 37013
the init fragment request for video_4
is aborted to support faster seek.
Debug.js:98 [36745][AbrController] AbrController (video) switch from 4 to 3/7 (buffer: 7.147) .
Debug.js:98 [36857][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://example.com/dash_video_5.mp4 , Range: 47795811-47954319
Debug.js:98 [36859][BufferController][video] Buffered Range for type: video : 622.622 - 632.631999 currentTime = 623.483259
Debug.js:98 [36862][ScheduleController][video] Quality has changed, get init request for representationid = video_eng=450000
Debug.js:98 [36862][ScheduleController][video] isFragmentProcessingInProgress is already equal to true
Debug.js:98 [36913][AbrController] AbrController (audio) stay on 0/0 (buffer: 6.533)
Debug.js:98 [36913][NextFragmentRequestRule] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end for audio . 630 was changed to 630.015999
Debug.js:98 [36914][DashHandler] Getting the request for audio time : 630.015999
Debug.js:98 [36914][DashHandler] Index for audio time 630.015999 is 314
Debug.js:98 [36914][DashHandler] SegmentList: 628 / 1195.861334
Debug.js:98 [36915][DashHandler] Getting the next request at index: 315, type: audio
Debug.js:98 [36915][DashHandler] SegmentList: 630 / 1195.861334
Debug.js:98 [36916][ScheduleController][audio] Next fragment request url is https://example.com/dash_audio_3.mp4
Debug.js:98 [37011][PlaybackController] Seeking to: 998.254617
Debug.js:98 [37012][BufferController][video] getAllRangesWithSafetyFactor for video - No request found in current time position, removing full buffer 0 - 633.131999
Debug.js:98 [37012][BufferController][video] Removing video buffer from: 0 to 633.131999
Debug.js:98 [37013][ScheduleController][video] onPlaybackSeeking for video, call fragmentModel.abortRequests in order to seek quicker
Debug.js:98 [37014][ScheduleController][video] onFragmentLoadingAbandoned for video, request: https://example.com/dash_video_4.mp4 has been aborted
Debug.js:98 [37015][ScheduleController][video] onFragmentLoadingAbandoned for video, request: https://example.com/dash_video_4.mp4 has been aborted
Debug.js:98 [37015][ScheduleController][video] isFragmentProcessingInProgress is already equal to false
Debug.js:98 [37016][BufferController][audio] getAllRangesWithSafetyFactor for audio - No request found in current time position, removing full buffer 0 - 630.515999
Debug.js:98 [37017][BufferController][audio] Removing audio buffer from: 0 to 630.515999
Debug.js:98 [37017][ScheduleController][audio] onPlaybackSeeking for audio, call fragmentModel.abortRequests in order to seek quicker
Debug.js:98 [37018][ScheduleController][audio] onFragmentLoadingAbandoned for audio, request: https://example.com/dash_audio_3.mp4 has been aborted
Debug.js:98 [37019][ScheduleController][audio] onFragmentLoadingAbandoned for audio, request: https://example.com/dash_audio_3.mp4 has been aborted
Debug.js:98 [37019][ScheduleController][audio] isFragmentProcessingInProgress is already equal to false
Debug.js:98 [37022][BufferController][video] onRemoved buffer from: 0 to 633.131999
Debug.js:98 [37024][BufferController][video] onRemoved : call updateBufferLevel
Debug.js:98 [37025][BufferController][audio] onRemoved buffer from: 0 to 630.515999
Debug.js:98 [37026][BufferController][audio] onRemoved : call updateBufferLevel
Debug.js:98 [37032][AbrController] AbrController (audio) stay on 0/0 (buffer: 6.533)
Debug.js:98 [37033][DashHandler] Getting the request for audio time : 998.254617
Debug.js:98 [37034][DashHandler] Index for audio time 998.254617 is 499
Debug.js:98 [37035][DashHandler] SegmentList: 998 / 1195.861334
Debug.js:98 [37036][ScheduleController][audio] Next fragment request url is https://example.com/dash_audio_3.mp4
Debug.js:98 [37331][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://example.com/dash_audio_3.mp4 , Range: 15897380-15928973
Debug.js:98 [37333][BufferController][audio] Buffered Range for type: audio : 998.016 - 999.999999 currentTime = 998.254617
Debug.js:98 [37335][AbrController] AbrController (audio) stay on 0/0 (buffer: 1.745)
Debug.js:98 [37335][NextFragmentRequestRule] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end for audio . 1000 was changed to 999.999999
Debug.js:98 [37335][DashHandler] Getting the request for audio time : 999.999999
Debug.js:98 [37336][DashHandler] Index for audio time 999.999999 is 499
Debug.js:98 [37336][DashHandler] SegmentList: 998 / 1195.861334
Debug.js:98 [37337][DashHandler] Getting the next request at index: 500, type: audio
Debug.js:98 [37337][DashHandler] SegmentList: 1000 / 1195.861334
Debug.js:98 [37338][ScheduleController][audio] Next fragment request url is https://example.com/dash_audio_3.mp4
Debug.js:98 [37523][DashHandler] Getting the request for video time : 998.254617
Debug.js:98 [37524][DashHandler] Index for video time 998.254617 is 498
Debug.js:98 [37524][DashHandler] SegmentList: 996.996 / 1195.861334
Debug.js:98 [37525][ScheduleController][video] Next fragment request url is https://example.com/dash_video_4.mp4
Debug.js:98 [37628][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://example.com/dash_audio_3.mp4 , Range: 15928974-15960868
Debug.js:98 [37630][BufferController][audio] Buffered Range for type: audio : 998.016 - 1002.005333 currentTime = 998.254617
Debug.js:98 [38179][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://example.com/dash_video_4.mp4 , Range: 56774647-56881567
Debug.js:98 [38181][BufferController][video] Buffered Range for type: video : 996.996 - 998.997999 currentTime = 998.254617
Debug.js:98 [38184][NextFragmentRequestRule] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end for video . 998.9979999999999 was changed to 998.997999
Debug.js:98 [38184][DashHandler] Getting the request for video time : 998.997999
Debug.js:98 [38184][DashHandler] Index for video time 998.997999 is 498
Debug.js:98 [38185][DashHandler] SegmentList: 996.996 / 1195.861334
Debug.js:98 [38185][DashHandler] Getting the next request at index: 499, type: video
Debug.js:98 [38186][DashHandler] SegmentList: 998.998 / 1195.861334
Debug.js:98 [38186][ScheduleController][video] Next fragment request url is https://example.com/dash_video_4.mp4
Debug.js:98 [38231][PlaybackController] Native video element event: seeked
Debug.js:98 [38604][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://example.com/dash_video_4.mp4 , Range: 56881568-56987813
Debug.js:98 [38607][BufferController][video] Buffered Range for type: video : 996.996 - 1000.999999 currentTime = 998.254617
Debug.js:98 [38609][NextFragmentRequestRule] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end for video . 1001 was changed to 1000.999999
Debug.js:98 [38609][DashHandler] Getting the request for video time : 1000.999999
Debug.js:98 [38610][DashHandler] Index for video time 1000.999999 is 499
Debug.js:98 [38610][DashHandler] SegmentList: 998.998 / 1195.861334
Debug.js:98 [38611][DashHandler] Getting the next request at index: 500, type: video
Debug.js:98 [38611][DashHandler] SegmentList: 1001 / 1195.861334
Debug.js:98 [38612][ScheduleController][video] Next fragment request url is https://example.com/dash_video_4.mp4
Debug.js:98 [39032][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://example.com/dash_video_4.mp4 , Range: 56987814-57101481
Debug.js:98 [39033][BufferController][video] Buffered Range for type: video : 996.996 - 1003.001999 currentTime = 998.254617
Debug.js:98 [39035][NextFragmentRequestRule] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end for video . 1003.002 was changed to 1003.001999
Debug.js:98 [39036][DashHandler] Getting the request for video time : 1003.001999
Debug.js:98 [39036][DashHandler] Index for video time 1003.001999 is 500
Debug.js:98 [39036][DashHandler] SegmentList: 1001 / 1195.861334
Debug.js:98 [39037][DashHandler] Getting the next request at index: 501, type: video
Debug.js:98 [39038][DashHandler] SegmentList: 1003.002 / 1195.861334
Debug.js:98 [39039][ScheduleController][video] Next fragment request url is https://example.com/dash_video_4.mp4
Debug.js:98 [39134][AbrController] AbrController (audio) stay on 0/0 (buffer: 3.751)
Debug.js:98 [39135][NextFragmentRequestRule] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end for audio . 1002 was changed to 1002.005333
Debug.js:98 [39136][DashHandler] Getting the request for audio time : 1002.005333
Debug.js:98 [39137][DashHandler] Index for audio time 1002.005333 is 500
Debug.js:98 [39137][DashHandler] SegmentList: 1000 / 1195.861334
Debug.js:98 [39138][DashHandler] Getting the next request at index: 501, type: audio
Debug.js:98 [39139][DashHandler] SegmentList: 1002 / 1195.861334
Debug.js:98 [39140][ScheduleController][audio] Next fragment request url is https://example.com/dash_audio_3.mp4
Debug.js:98 [39455][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://example.com/dash_video_4.mp4 , Range: 57101482-57217549
Debug.js:98 [39457][BufferController][video] Buffered Range for type: video : 996.996 - 1005.003999 currentTime = 998.254617
Debug.js:98 [39459][NextFragmentRequestRule] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end for video . 1005.0039999999999 was changed to 1005.003999
Debug.js:98 [39460][DashHandler] Getting the request for video time : 1005.003999
Debug.js:98 [39460][DashHandler] Index for video time 1005.003999 is 501
Debug.js:98 [39461][DashHandler] SegmentList: 1003.002 / 1195.861334
Debug.js:98 [39462][DashHandler] Getting the next request at index: 502, type: video
Debug.js:98 [39464][DashHandler] SegmentList: 1005.004 / 1195.861334
Debug.js:98 [39466][ScheduleController][video] Next fragment request url is https://example.com/dash_video_4.mp4
Debug.js:98 [39584][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://example.com/dash_audio_3.mp4 , Range: 15960869-15992817
Debug.js:98 [39585][BufferController][audio] Buffered Range for type: audio : 998.016 - 1004.010666 currentTime = 998.254617
Debug.js:98 [39588][AbrController] AbrController (audio) stay on 0/0 (buffer: 5.756)
Debug.js:98 [39589][NextFragmentRequestRule] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end for audio . 1004 was changed to 1004.010666
Debug.js:98 [39589][DashHandler] Getting the request for audio time : 1004.010666
Debug.js:98 [39590][DashHandler] Index for audio time 1004.010666 is 501
Debug.js:98 [39590][DashHandler] SegmentList: 1002 / 1195.861334
Debug.js:98 [39591][DashHandler] Getting the next request at index: 502, type: audio
Debug.js:98 [39591][DashHandler] SegmentList: 1004 / 1195.861334
Debug.js:98 [39591][ScheduleController][audio] Next fragment request url is https://example.com/dash_audio_3.mp4
Debug.js:98 [39760][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://example.com/dash_video_4.mp4 , Range: 57217550-57335087
Debug.js:98 [39761][BufferController][video] Buffered Range for type: video : 996.996 - 1007.005999 currentTime = 998.254617
Debug.js:98 [39763][NextFragmentRequestRule] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end for video . 1007.006 was changed to 1007.005999
Debug.js:98 [39764][DashHandler] Getting the request for video time : 1007.005999
Debug.js:98 [39764][DashHandler] Index for video time 1007.005999 is 502
Debug.js:98 [39764][DashHandler] SegmentList: 1005.004 / 1195.861334
Debug.js:98 [39765][DashHandler] Getting the next request at index: 503, type: video
Debug.js:98 [39765][DashHandler] SegmentList: 1007.006 / 1195.861334
Debug.js:98 [39766][ScheduleController][video] Next fragment request url is https://example.com/dash_video_4.mp4
Debug.js:98 [39886][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://example.com/dash_audio_3.mp4 , Range: 15992818-16024697
Debug.js:98 [39887][BufferController][audio] Buffered Range for type: audio : 998.016 - 1006.015999 currentTime = 998.254617
Debug.js:98 [39890][AbrController] AbrController (audio) stay on 0/0 (buffer: 7.761)
Debug.js:98 [39890][NextFragmentRequestRule] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end for audio . 1006 was changed to 1006.015999
Debug.js:98 [39890][DashHandler] Getting the request for audio time : 1006.015999
Debug.js:98 [39891][DashHandler] Index for audio time 1006.015999 is 502
Debug.js:98 [39891][DashHandler] SegmentList: 1004 / 1195.861334
Debug.js:98 [39892][DashHandler] Getting the next request at index: 503, type: audio
Debug.js:98 [39892][DashHandler] SegmentList: 1006 / 1195.861334
Debug.js:98 [39892][ScheduleController][audio] Next fragment request url is https://example.com/dash_audio_3.mp4
Debug.js:98 [40060][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://example.com/dash_video_4.mp4 , Range: 57335088-57448002
Debug.js:98 [40062][BufferController][video] Buffered Range for type: video : 996.996 - 1009.007999 currentTime = 998.254617
Debug.js:98 [40064][NextFragmentRequestRule] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end for video . 1009.0079999999999 was changed to 1009.007999
Debug.js:98 [40064][DashHandler] Getting the request for video time : 1009.007999
Debug.js:98 [40064][DashHandler] Index for video time 1009.007999 is 503
Debug.js:98 [40065][DashHandler] SegmentList: 1007.006 / 1195.861334
Debug.js:98 [40065][DashHandler] Getting the next request at index: 504, type: video
Debug.js:98 [40065][DashHandler] SegmentList: 1009.008 / 1195.861334
Debug.js:98 [40066][ScheduleController][video] Next fragment request url is https://example.com/dash_video_4.mp4
Debug.js:98 [40185][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://example.com/dash_audio_3.mp4 , Range: 16024698-16056328
Debug.js:98 [40186][BufferController][audio] Buffered Range for type: audio : 998.016 - 1007.999999 currentTime = 998.254617
Debug.js:98 [40188][AbrController] AbrController (audio) stay on 0/0 (buffer: 9.745)
Debug.js:98 [40188][NextFragmentRequestRule] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end for audio . 1008 was changed to 1007.999999
Debug.js:98 [40189][DashHandler] Getting the request for audio time : 1007.999999
Debug.js:98 [40189][DashHandler] Index for audio time 1007.999999 is 503
Debug.js:98 [40189][DashHandler] SegmentList: 1006 / 1195.861334
Debug.js:98 [40190][DashHandler] Getting the next request at index: 504, type: audio
Debug.js:98 [40190][DashHandler] SegmentList: 1008 / 1195.861334
Debug.js:98 [40191][ScheduleController][audio] Next fragment request url is https://example.com/dash_audio_3.mp4
Debug.js:98 [40355][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://example.com/dash_video_4.mp4 , Range: 57448003-57561904
Debug.js:98 [40357][BufferController][video] Buffered Range for type: video : 996.996 - 1011.009999 currentTime = 998.254617
Debug.js:98 [40357][AbrController] AbrController (video) switching from throughput to buffer occupancy ABR rule (buffer: 12.755).
Debug.js:98 [40358][BufferController][video] Got enough buffer to start for video
Debug.js:98 [40484][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://example.com/dash_audio_3.mp4 , Range: 16056329-16088258
Debug.js:98 [40486][BufferController][audio] Buffered Range for type: audio : 998.016 - 1010.005333 currentTime = 998.254617
Debug.js:98 [40488][AbrController] AbrController (audio) stay on 0/0 (buffer: 11.751)
Debug.js:98 [40489][NextFragmentRequestRule] Prior to making a request for time, NextFragmentRequestRule is aligning index handler's currentTime with bufferedRange.end for audio . 1010 was changed to 1010.005333
Debug.js:98 [40489][DashHandler] Getting the request for audio time : 1010.005333
Debug.js:98 [40489][DashHandler] Index for audio time 1010.005333 is 504
Debug.js:98 [40490][DashHandler] SegmentList: 1008 / 1195.861334
Debug.js:98 [40490][DashHandler] Getting the next request at index: 505, type: audio
Debug.js:98 [40491][DashHandler] SegmentList: 1010 / 1195.861334
Debug.js:98 [40491][ScheduleController][audio] Next fragment request url is https://example.com/dash_audio_3.mp4
Debug.js:98 [40790][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://example.com/dash_audio_3.mp4 , Range: 16088259-16120146
Debug.js:98 [40791][BufferController][audio] Buffered Range for type: audio : 998.016 - 1012.010666 currentTime = 998.254617
Debug.js:98 [40792][AbrController] AbrController (audio) switching from throughput to buffer occupancy ABR rule (buffer: 13.756).
Debug.js:98 [40792][BufferController][audio] Got enough buffer to start for audio
500+ videos were working fine with 2.2.0. The video produces, right from the beginning, green screen during the full playback, even after a seek, with rare jerky artifacts of the video. A simple reload of the page usually solves the problem. This occurs randomly. A video that finally play correctly after a reload will never fail again.
The video is rendered as a webgl texture, which complexifies the debugging a lot, but again the problem disappear when rolling back to 2.2.0
Environment
All videos reports a problem through the validation tool (but again this was working perfectly in 2.2.0):
The streams have 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 I did not succeed in my tests to reproduce the problem with the latest reference client on http://dashif.org/reference/players/javascript/