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

"Infinite spinner" for live content (currentTime ouside of buffered start) #3482

Closed
martinstark opened this issue Jun 23, 2021 · 4 comments
Closed
Labels
priority: P2 Smaller impact or easy workaround status: archived Archived and locked; will not be updated type: bug Something isn't working correctly
Milestone

Comments

@martinstark
Copy link
Contributor

Have you read the FAQ and checked for duplicate open issues?
Yes

What version of Shaka Player are you using?
3.1.1

Can you reproduce the issue with our latest release version?
N/A

Can you reproduce the issue with the latest code from master?
Not tested (yet) due to time constraints

Are you using the demo app or your own custom app?
Both.

If custom app, can you reproduce the issue using our demo app?
Yes

What browser and OS are you using?
Linux, Mac, Windows, Firefox, Chrome

What are the manifest and license server URIs?
Sent via email.

What configuration are you using? What is the output of player.getConfiguration()?

Full config (minus keySystems, since test stream is drm free)
{
  "drm": {
    "retryParameters": {
      "maxAttempts": 4,
      "baseDelay": 1000,
      "backoffFactor": 2,
      "fuzzFactor": 0.5,
      "timeout": 30000,
      "stallTimeout": 12000,
      "connectionTimeout": 5000
    },
    "servers": {},
    "clearKeys": {},
    "advanced": {},
    "delayLicenseRequestUntilPlayed": false,
    "logLicenseExchange": false,
    "updateExpirationTime": 1
  },
  "manifest": {
    "retryParameters": {
      "maxAttempts": 4,
      "baseDelay": 1000,
      "backoffFactor": 2,
      "fuzzFactor": 0.5,
      "timeout": 30000,
      "stallTimeout": 12000,
      "connectionTimeout": 12000
    },
    "availabilityWindowOverride": null,
    "disableAudio": false,
    "disableVideo": false,
    "disableText": false,
    "disableThumbnails": false,
    "defaultPresentationDelay": 0,
    "dash": {
      "clockSyncUri": "https://time.akamai.com/?iso",
      "ignoreDrmInfo": false,
      "disableXlinkProcessing": false,
      "xlinkFailGracefully": false,
      "ignoreMinBufferTime": true,
      "autoCorrectDrift": true,
      "initialSegmentLimit": 1000,
      "ignoreSuggestedPresentationDelay": false,
      "ignoreEmptyAdaptationSet": false,
      "ignoreMaxSegmentDuration": false,
    },
    "hls": {
      "ignoreTextStreamFailures": false,
      "useFullSegmentsForStartTime": false
    }
  },
  "streaming": {
    "retryParameters": {
      "maxAttempts": 4,
      "baseDelay": 1000,
      "backoffFactor": 2,
      "fuzzFactor": 0.5,
      "timeout": 30000,
      "stallTimeout": 12000,
      "connectionTimeout": 12000
    },
    "rebufferingGoal": 4,
    "bufferingGoal": 60,
    "bufferBehind": 30,
    "ignoreTextStreamFailures": true,
    "alwaysStreamText": true,
    "startAtSegmentBoundary": false,
    "gapDetectionThreshold": 0.1,
    "smallGapLimit": 0.5,
    "jumpLargeGaps": true,
    "durationBackoff": 1,
    "forceTransmuxTS": false,
    "safeSeekOffset": 5,
    "stallEnabled": true,
    "stallThreshold": 1,
    "stallSkip": 0.1,
    "useNativeHlsOnSafari": true,
    "inaccurateManifestTolerance": 2,
    "lowLatencyMode": false,
    "autoLowLatencyMode": false,
    "forceHTTPS": false,
    "preferNativeHls": false
  },
  "offline": {
    "usePersistentLicense": true
  },
  "abr": {
    "enabled": true,
    "useNetworkInformation": true,
    "defaultBandwidthEstimate": 1000000,
    "switchInterval": 2,
    "bandwidthUpgradeTarget": 0.75,
    "bandwidthDowngradeTarget": 0.85,
    "restrictions": {
      "minWidth": 0,
      "maxWidth": null,
      "minHeight": 0,
      "maxHeight": null,
      "minPixels": 0,
      "maxPixels": null,
      "minFrameRate": 0,
      "maxFrameRate": null,
      "minBandwidth": 0,
      "maxBandwidth": null
    }
  },
  "preferredAudioLanguage": "sv",
  "preferredTextLanguage": "",
  "preferredVariantRole": "",
  "preferredTextRole": "",
  "preferredAudioChannelCount": 2,
  "preferForcedSubs": false,
  "restrictions": {
    "minWidth": 0,
    "maxWidth": null,
    "minHeight": 0,
    "maxHeight": null,
    "minPixels": 0,
    "maxPixels": null,
    "minFrameRate": 0,
    "maxFrameRate": null,
    "minBandwidth": 0,
    "maxBandwidth": null
  },
  "playRangeStart": 0,
  "playRangeEnd": null,
  "useMediaCapabilities": false
}

What did you do?

  1. Configure shaka with retries for manifests
  2. Use autoplay
  3. Play a live HLS stream where the first few manifest requests will fail
retryParameters: {
  timeout: 30000,
  stallTimeout: 12000,
  connectionTimeout: 12000,
  maxAttempts: 4,
  baseDelay: 1000,
  backoffFactor: 2,
  fuzzFactor: 0.5,
}

We discovered this when testing HLS streams that do not support range headers, causing CORS failures on the first few requests. With retry parameters set for manifest requests, this results in shaka getting stuck in a state where the stream never starts playing.

Without retry parameters set, the failed range attemps happen fast enough for the stream to work as intended.

We can fix this particular case by setting useFullSegmentsForStartTime: true which prevents the range requests from occurring, but I believe the root issue still persists in case the manifest fetch would fail for some other reason (e.g. a temporary network error), combined with retries.

What did you expect to happen?
The live stream starts playing.

What actually happened?
The live stream does not start playing.

Player is stuck with an infinite spinner, with currentTime always just outside of buffered start:

image

Modifying video.currentTime will make the stream start playing.

Pressing pause/play triggers a jump large enough to make the stream start playing.

@theodab theodab added type: bug Something isn't working correctly priority: P2 Smaller impact or easy workaround and removed needs triage labels Jun 24, 2021
@theodab
Copy link
Contributor

theodab commented Jun 24, 2021

Reproduced. Thanks for the report, we'll look into it.

@TheModMaker
Copy link
Contributor

This looks like a duplicate of #3089, can you try again with the latest release?

@avelad avelad modified the milestones: v3.3, v4.1 May 4, 2022
@avelad avelad modified the milestones: v4.1, v4.2 Jun 3, 2022
@avelad avelad modified the milestones: v4.2, v4.3 Aug 17, 2022
@avelad avelad modified the milestones: v4.3, v4.4 Nov 11, 2022
@avelad
Copy link
Member

avelad commented Jan 30, 2023

Can you test with v4.3.3? Thanks!

@avelad avelad added the status: waiting on response Waiting on a response from the reporter(s) of the issue label Jan 30, 2023
@github-actions
Copy link
Contributor

github-actions bot commented Feb 6, 2023

Closing due to inactivity. If this is still an issue for you or if you have further questions, the OP can ask shaka-bot to reopen it by including @shaka-bot reopen in a comment.

@github-actions github-actions bot closed this as completed Feb 6, 2023
@github-actions github-actions bot removed the status: waiting on response Waiting on a response from the reporter(s) of the issue label Feb 6, 2023
@github-actions github-actions bot added the status: archived Archived and locked; will not be updated label Apr 7, 2023
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Apr 7, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
priority: P2 Smaller impact or easy workaround status: archived Archived and locked; will not be updated type: bug Something isn't working correctly
Projects
None yet
Development

No branches or pull requests

6 participants