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

Playback stucks for multi-period dash, DVR and buffer time not strictly increasing #3461

Closed
5 tasks done
chanyk-joseph opened this issue Nov 24, 2020 · 5 comments
Closed
5 tasks done
Assignees
Labels
Milestone

Comments

@chanyk-joseph
Copy link

chanyk-joseph commented Nov 24, 2020

Environment
Steps to reproduce
  • Start the playback on chrome
  • The playback starts looping the last few frames at ~45s, then stucks at around ~60s
  • Always reproducible (100%)
Observed behaviour
  • The DVR windows freeze for some time
    image
  • The DVR windows endtime is not strictly increasing
	Line 1550: 11:02:55.075 ​ [60119][PlaybackController] Checking DVR window for at 76908.681027 with DVR window range 76880.2292214 - 76910.2925881 
	Line 1584: 11:02:56.266 ​ [61310][PlaybackController] Checking DVR window for at 76909.873032 with DVR window range 76880.2292214 - 76910.2925881 
	Line 1585: 11:02:56.267 ​ [61311][PlaybackController] Checking DVR window for at 76909.873032 with DVR window range 76880.2292214 - 76910.2925881 
	Line 1630: 11:02:57.464 ​ [62508][PlaybackController] Checking DVR window for at 76911.069702 with DVR window range 76915.2308548 - 76924.0396548 
	Line 1634: 11:02:57.465 ​ [62509][PlaybackController] Checking DVR window for at 76915.230854 with DVR window range 76915.2308548 - 76924.0396548 
	Line 2167: 11:02:58.665 ​ [63709][PlaybackController] Checking DVR window for at 76915.231463 with DVR window range 76910.2925881 - 76915.2308548 
	Line 2171: 11:02:58.666 ​ [63710][PlaybackController] Checking DVR window for at 76910.334279 with DVR window range 76910.2925881 - 76915.2308548 
	Line 2187: 11:02:58.670 ​ [63714][PlaybackController] Checking DVR window for at 76910.334279 with DVR window range 76880.2292214 - 76910.2925881 
	Line 2191: 11:02:58.672 ​ [63716][PlaybackController] Checking DVR window for at 76910.334279 with DVR window range 76880.2292214 - 76910.2925881 
  • The buffered range's end & current time is not strictly increasing
	Line 1358: 11:02:52.400 ​ [57444][BufferController][video] Buffered range: 76877.993654 - 76915.230854, currentTime =  76906.008272 
	Line 1426: 11:02:53.067 ​ [58111][BufferController][audio] Buffered range: 76876.115613 - 76915.230858, currentTime =  76906.675225 
	Line 1479: 11:02:53.787 ​ [58831][BufferController][audio] Buffered range: 76876.115613 - 76918.056945, currentTime =  76907.395299 
	Line 1506: 11:02:53.958 ​ [59001][BufferController][video] Buffered range: 76877.993654 - 76918.033654, currentTime =  76907.565432 
	Line 1512: 11:02:54.371 ​ [59415][BufferController][video] Buffered range: 76877.993654 - 76920.035654, currentTime =  76907.978505 
	Line 1528: 11:02:55.028 ​ [60072][BufferController][audio] Buffered range: 76876.115613 - 76920.062279, currentTime =  76908.635496 
	Line 2075: 11:02:57.477 ​ [62521][BufferController][video] Buffered range: 76910.292588 - 76920.035654, currentTime =  76915.230854 
	Line 2078: 11:02:57.477 ​ [62521][BufferController][audio] Buffered range: 76910.334279 - 76920.062279, currentTime =  76915.230854 
	Line 2103: 11:02:57.479 ​ [62523][BufferController][video] Buffered range: 76910.292588 - 76915.714671, currentTime =  76915.230854 
	Line 2106: 11:02:57.480 ​ [62524][BufferController][audio] Buffered range: 76910.334279 - 76915.752945, currentTime =  76915.230854 
	Line 2111: 11:02:57.481 ​ [62525][BufferController][video] Buffered range: 76910.292588 - 76915.714671, currentTime =  76915.230854 
	Line 2115: 11:02:57.482 ​ [62526][BufferController][audio] Buffered range: 76910.334279 - 76915.752945, currentTime =  76915.230854 
	Line 2118: 11:02:57.482 ​ [62526][BufferController][audio] Buffered range: 76910.334279 - 76915.752945, currentTime =  76915.230982 
	Line 2120: 11:02:57.482 ​ [62526][BufferController][video] Buffered range: 76910.292588 - 76915.714671, currentTime =  76915.231216 
	Line 2660: 11:02:58.692 ​ [63736][BufferController][audio] Buffered range: 76908.030279 - 76910.292591, currentTime =  76910.292588 
	Line 2701: 11:02:59.105 ​ [64149][BufferController][video] Buffered range: 76908.023654 - 76910.292587, currentTime =  76910.292588 
Console output

reference.dashif.org-1606187004655.log

Notes
@dsilhavy
Copy link
Collaborator

Can you please check if playback works as expected when you set calcSegmentAvailabilityRangeFromTimeline to false. An example how to adjust settings can be found here: http://reference.dashif.org/dash.js/nightly/samples/advanced/settings.html

@chanyk-joseph
Copy link
Author

chanyk-joseph commented Nov 25, 2020

Hi @dsilhavy , I have tested the nightly build with calcSegmentAvailabilityRangeFromTimeline=false
The player still stucks after ~60s

$ JSON.stringify(player.getSettings(), null, 3)
"{
   "debug": {
      "logLevel": 5
   },
   "streaming": {
      "metricsMaxListDepth": 50,
      "abandonLoadTimeout": 10000,
      "liveDelayFragmentCount": null,
      "liveDelay": null,
      "scheduleWhilePaused": true,
      "fastSwitchEnabled": true,
      "flushBufferAtTrackSwitch": false,
      "calcSegmentAvailabilityRangeFromTimeline": false,
      "bufferPruningInterval": 10,
      "bufferToKeep": 20,
      "jumpGaps": true,
      "jumpLargeGaps": true,
      "smallGapLimit": 1.5,
      "stableBufferTime": -1,
      "bufferTimeAtTopQuality": 30,
      "bufferTimeAtTopQualityLongForm": 60,
      "longFormContentDurationThreshold": 600,
      "wallclockTimeUpdateInterval": 50,
      "lowLatencyEnabled": false,
      "keepProtectionMediaKeys": false,
      "useManifestDateHeaderTimeSource": true,
      "useSuggestedPresentationDelay": true,
      "useAppendWindow": true,
      "manifestUpdateRetryInterval": 100,
      "liveCatchUpMinDrift": 0.02,
      "liveCatchUpMaxDrift": 0,
      "liveCatchUpPlaybackRate": 0.5,
      "liveCatchupLatencyThreshold": null,
      "lastBitrateCachingInfo": {
         "enabled": true,
         "ttl": 360000
      },
      "lastMediaSettingsCachingInfo": {
         "enabled": true,
         "ttl": 360000
      },
      "cacheLoadThresholds": {
         "video": 50,
         "audio": 5
      },
      "trackSwitchMode": {
         "audio": "alwaysReplace",
         "video": "neverReplace"
      },
      "selectionModeForInitialTrack": "highestBitrate",
      "fragmentRequestTimeout": 0,
      "retryIntervals": {
         "MPD": 500,
         "XLinkExpansion": 500,
         "MediaSegment": 1000,
         "InitializationSegment": 1000,
         "BitstreamSwitchingSegment": 1000,
         "IndexSegment": 1000,
         "other": 1000,
         "lowLatencyReductionFactor": 10
      },
      "retryAttempts": {
         "MPD": 3,
         "XLinkExpansion": 1,
         "MediaSegment": 3,
         "InitializationSegment": 3,
         "BitstreamSwitchingSegment": 3,
         "IndexSegment": 3,
         "other": 3,
         "lowLatencyMultiplyFactor": 5
      },
      "abr": {
         "movingAverageMethod": "slidingWindow",
         "ABRStrategy": "abrDynamic",
         "bandwidthSafetyFactor": 0.9,
         "useDefaultABRRules": true,
         "useDeadTimeLatency": true,
         "limitBitrateByPortal": false,
         "usePixelRatioInLimitBitrateByPortal": false,
         "maxBitrate": {
            "audio": -1,
            "video": -1
         },
         "minBitrate": {
            "audio": -1,
            "video": -1
         },
         "maxRepresentationRatio": {
            "audio": 1,
            "video": 1
         },
         "initialBitrate": {
            "audio": -1,
            "video": -1
         },
         "initialRepresentationRatio": {
            "audio": -1,
            "video": -1
         },
         "autoSwitchBitrate": {
            "audio": true,
            "video": true
         }
      },
      "cmcd": {
         "enabled": false,
         "sid": null,
         "cid": null
      }
   }
}

From the log, the buffered range is not strictly increasing
image

Details console log:
reference.dashif.org-1606288856252.log

@dsilhavy dsilhavy added this to the 4.0.0 milestone Mar 26, 2021
@dsilhavy
Copy link
Collaborator

@chanyk-joseph Can you please check if your problem is fixed in 4.0 alpha: https://reference.dashif.org/dash.js/v4.0.0-alpha/samples/dash-if-reference-player/index.html

@chanyk-joseph
Copy link
Author

Hi @dsilhavy , the playback is smooth on the 4.0 alpha build

@dsilhavy dsilhavy self-assigned this Apr 6, 2021
@dsilhavy
Copy link
Collaborator

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

No branches or pull requests

2 participants