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

HLS Live stream repeateatable rebuffering/seeking regression #5666

Closed
arturparkhisenko opened this issue Sep 18, 2023 · 1 comment · Fixed by #5846
Closed

HLS Live stream repeateatable rebuffering/seeking regression #5666

arturparkhisenko opened this issue Sep 18, 2023 · 1 comment · Fixed by #5846
Labels
component: HLS The issue involves Apple's HLS manifest format priority: P1 Big impact or workaround impractical; resolve before feature release status: archived Archived and locked; will not be updated type: bug Something isn't working correctly
Milestone

Comments

@arturparkhisenko
Copy link
Contributor

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

If the problem is related to FairPlay, have you read the tutorial?
Yes we did read, it is not related, no DRM.

What version of Shaka Player are you using?
4.4.2, main from sep 14

Can you reproduce the issue with our latest release version?
Yes

Can you reproduce the issue with the latest code from main?
Yes

Are you using the demo app or your own custom app?
Custom, and demo

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

What browser and OS are you using?
Desktop: Chrome v117.0.5938.62, macOS Ventura v13.5.2
Tizen TV: Chrome v76, OS 6.0, 2021

For embedded devices (smart TVs, etc.), what model and firmware version are you using?
Tizen TV, UN43AU8000FXZA, 21TV_BASIC1, Firmware: T-KSU2EAKUC-2141.2, BT-S

What are the manifest and license server URIs?

We can share it for a day (8h) when you’re available (VideoDev Slack dm @arturparkhisenko). But should be reproducible on other streams.
Setup: HLS, TS, Muxed, 4s segment. Rarely reproducible on 7s.

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

Config
{
  "drm": {
    "retryParameters": {
      "maxAttempts": 14,
      "baseDelay": 400,
      "backoffFactor": 1.25,
      "fuzzFactor": 0.1,
      "timeout": 10000,
      "stallTimeout": 5000,
      "connectionTimeout": 10000
    },
    "servers": {},
    "clearKeys": {},
    "advanced": {},
    "delayLicenseRequestUntilPlayed": false,
    "logLicenseExchange": false,
    "updateExpirationTime": 1,
    "preferredKeySystems": [],
    "keySystemsMapping": {},
    "parseInbandPsshEnabled": false
  },
  "manifest": {
    "retryParameters": {
      "maxAttempts": 14,
      "baseDelay": 400,
      "backoffFactor": 1.25,
      "fuzzFactor": 0.1,
      "timeout": 10000,
      "stallTimeout": 5000,
      "connectionTimeout": 10000
    },
    "availabilityWindowOverride": null,
    "disableAudio": false,
    "disableVideo": false,
    "disableText": false,
    "disableThumbnails": false,
    "defaultPresentationDelay": 0,
    "segmentRelativeVttTiming": false,
    "dash": {
      "clockSyncUri": "",
      "ignoreDrmInfo": false,
      "disableXlinkProcessing": false,
      "xlinkFailGracefully": false,
      "ignoreMinBufferTime": false,
      "autoCorrectDrift": true,
      "initialSegmentLimit": 1000,
      "ignoreSuggestedPresentationDelay": false,
      "ignoreEmptyAdaptationSet": false,
      "ignoreMaxSegmentDuration": false,
      "keySystemsByURI": {
        "urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b": "org.w3.clearkey",
        "urn:uuid:e2719d58-a985-b3c9-781a-b030af78d30e": "org.w3.clearkey",
        "urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed": "com.widevine.alpha",
        "urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95": "com.microsoft.playready",
        "urn:uuid:79f0049a-4098-8642-ab92-e65be0885f95": "com.microsoft.playready",
        "urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb": "com.adobe.primetime"
      },
      "sequenceMode": false
    },
    "hls": {
      "ignoreTextStreamFailures": false,
      "ignoreImageStreamFailures": false,
      "defaultAudioCodec": "mp4a.40.2",
      "defaultVideoCodec": "avc1.42E01E",
      "ignoreManifestProgramDateTime": false,
      "mediaPlaylistFullMimeType": "video/mp2t; codecs=\"avc1.42E01E, mp4a.40.2\"",
      "useSafariBehaviorForLive": true,
      "liveSegmentsDelay": 3
    }
  },
  "streaming": {
    "retryParameters": {
      "maxAttempts": 14,
      "baseDelay": 400,
      "backoffFactor": 1.25,
      "fuzzFactor": 0.1,
      "timeout": 10000,
      "stallTimeout": 5000,
      "connectionTimeout": 10000
    },
    "rebufferingGoal": 2,
    "bufferingGoal": 10,
    "bufferBehind": 30,
    "ignoreTextStreamFailures": true,
    "alwaysStreamText": true,
    "startAtSegmentBoundary": false,
    "gapDetectionThreshold": 0.5,
    "durationBackoff": 1,
    "forceTransmux": false,
    "safeSeekOffset": 5,
    "stallEnabled": true,
    "stallThreshold": 1,
    "stallSkip": 0.1,
    "useNativeHlsOnSafari": true,
    "inaccurateManifestTolerance": 2,
    "lowLatencyMode": false,
    "autoLowLatencyMode": false,
    "forceHTTPS": false,
    "preferNativeHls": false,
    "updateIntervalSeconds": 1,
    "dispatchAllEmsgBoxes": false,
    "observeQualityChanges": false,
    "maxDisabledTime": 30,
    "parsePrftBox": false
  },
  "mediaSource": {
    "sourceBufferExtraFeatures": ""
  },
  "offline": {
    "usePersistentLicense": true,
    "numberOfParallelDownloads": 5
  },
  "abr": {
    "enabled": true,
    "useNetworkInformation": true,
    "defaultBandwidthEstimate": 1000000,
    "switchInterval": 8,
    "bandwidthUpgradeTarget": 0.85,
    "bandwidthDowngradeTarget": 0.95,
    "restrictions": {
      "minWidth": 0,
      "maxWidth": null,
      "minHeight": 0,
      "maxHeight": null,
      "minPixels": 0,
      "maxPixels": null,
      "minFrameRate": 0,
      "maxFrameRate": null,
      "minBandwidth": 0,
      "maxBandwidth": null
    },
    "advanced": {
      "minTotalBytes": 128000,
      "minBytes": 16000,
      "fastHalfLife": 2,
      "slowHalfLife": 5
    },
    "restrictToElementSize": false,
    "restrictToScreenSize": false,
    "ignoreDevicePixelRatio": false
  },
  "autoShowText": 3,
  "preferredAudioLanguage": "",
  "preferredTextLanguage": "",
  "preferredVariantRole": "",
  "preferredTextRole": "",
  "preferredAudioChannelCount": 2,
  "preferredVideoCodecs": [],
  "preferredAudioCodecs": [],
  "preferForcedSubs": false,
  "preferredDecodingAttributes": [],
  "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,
  "cmcd": {
    "enabled": false,
    "sessionId": "",
    "contentId": "",
    "useHeaders": false
  },
  "lcevc": {
    "enabled": false,
    "dynamicPerformanceScaling": true,
    "logLevel": 0,
    "drawLogo": false
  }
}

What did you do?
Play a live video.

What did you expect to happen?
It plays without any hiccups and analytics shows that it’s smooth.

What actually happened?
It started to happen after upgrading to latest version of Shaka Player (latest stable v4.3.4).
It shows rebuffering often for a short period of time or jumps back a segment. Also spams our analytics with seeking start/end or rebuffering start/end events.
It jumps and it interrupts audio. Here’s an example of logs from the console:

Jumping forward 0.33437299999999937 seconds because of gap starting at 180.342999 and ending at 180.376
log.js:141 (video:13) cannot find segment endTime: 192

Slack thread https://video-dev.slack.com/archives/C01QRAFHLQK/p1694616125393469

@arturparkhisenko arturparkhisenko added the type: bug Something isn't working correctly label Sep 18, 2023
@shaka-bot shaka-bot added this to the v4.5 milestone Sep 18, 2023
@avelad avelad added the component: HLS The issue involves Apple's HLS manifest format label Sep 25, 2023
@avelad avelad modified the milestones: v4.5, v4.6 Oct 5, 2023
@Vasanthavanan-Devarajan
Copy link
Contributor

Stream details: HLS, TS, Muxed, 4s segment
Device Name & Model: Tizen & UA32T4450AKLXL
Issue: We are also facing repeatable rebuffering/seeking issues on the Tizen platform with HLS TS segments using Shaka Player 4.3.11. After checking this #5666, we tried with Shaka version 4.5.0 as well, but the HLS TS stream kept on buffering and did not play at all. Please refer to the log below.

test.js:51 Calling switch_(), bandwidth=2517 kbps test.js:51 switch_ test.js:51 Jumping forward 3.9719999790191647 seconds to catch up with the seek range. test.js:51 (video:9) clear: currently updating test.js:51 (video:9) Aborting operation due to seek test.js:51 (video:9) skipping update and clearing the buffer test.js:51 (video:9) clearing buffer test.js:51 (video:9) cleared buffer test.js:51 Updating manifest... test.js:51 Jumping forward 3.6249999275207507 seconds to catch up with the seek range. test.js:51 (video:9) clear: currently updating test.js:51 (video:9) Aborting operation due to seek test.js:51 (video:9) skipping update and clearing the buffer test.js:51 (video:9) clearing buffer test.js:51 (video:9) cleared buffer test.js:51 Jumping forward 3.628999940872191 seconds to catch up with the seek range. test.js:51 (video:9) clear: currently updating test.js:51 (video:9) Aborting operation due to seek test.js:51 (video:9) skipping update and clearing the buffer test.js:51 (video:9) clearing buffer test.js:51 (video:9) cleared buffer test.js:51 Calling switch_(), bandwidth=5214 kbps test.js:51 switch_ test.js:51 Updating manifest... test.js:51 Jumping forward 3.979000019073485 seconds to catch up with the seek range. test.js:51 (video:9) clear: currently updating test.js:51 (video:9) Aborting operation due to seek test.js:51 (video:9) skipping update and clearing the buffer test.js:51 (video:9) clearing buffer test.js:51 (video:9) cleared buffer test.js:51 Jumping forward 3.2009999027252185 seconds to catch up with the seek range. test.js:51 (video:9) clear: currently updating test.js:51 (video:9) Aborting operation due to seek test.js:51 (video:9) skipping update and clearing the buffer test.js:51 (video:9) clearing buffer test.js:51 (video:9) cleared buffer test.js:51 Jumping forward 3.1610000057220446 seconds to catch up with the seek range. test.js:51 (video:9) clear: currently updating test.js:51 (video:9) Aborting operation due to seek test.js:51 (video:9) skipping update and clearing the buffer test.js:51 (video:9) clearing buffer test.js:51 (video:9) cleared buffer test.js:51 Calling switch_(), bandwidth=5733 kbps test.js:51 switch_ test.js:51 Updating manifest... test.js:51 Jumping forward 3.1249999275207543 seconds to catch up with the seek range. test.js:51 (video:9) clear: currently updating test.js:51 (video:9) Aborting operation due to seek test.js:51 (video:9) skipping update and clearing the buffer test.js:51 (video:9) clearing buffer test.js:51 (video:9) cleared buffer test.js:51 Jumping forward 3.1070001049041736 seconds to catch up with the seek range. test.js:51 (all): seeked: buffered seek: presentationTime=39.545000076293945 test.js:51 Updating manifest... test.js:51 Jumping forward 3.338999979019164 seconds to catch up with the seek range. test.js:51 (all): seeked: buffered seek: presentationTime=42.41300010681152 test.js:51 Calling switch_(), bandwidth=5837 kbps test.js:51 switch_ test.js:51 Jumping forward 3.2820000572204577 seconds to catch up with the seek range. test.js:51 (all): seeked: buffered seek: presentationTime=45.36500000953674 test.js:51 Jumping forward 3.111999982833865 seconds to catch up with the seek range. test.js:51 Updating manifest... test.js:51 (all): seeked: buffered seek: presentationTime=48.41599988937378 test.js:51 Calling switch_(), bandwidth=6181 kbps test.js:51 switch_ test.js:51 Jumping forward 0.19899999999999807 seconds because of gap starting at 51.968 and ending at 52 test.js:51 (all): seeked: buffered seek: presentationTime=52.24000000953674 test.js:51 Jumping forward 0.2909999999999968 seconds because of gap starting at 51.968 and ending at 52 test.js:51 (all): seeked: buffered seek: presentationTime=53.30399990081787 test.js:51 Jumping forward 0.49499999999999744 seconds because of gap starting at 51.968 and ending at 52 test.js:51 (all): seeked: buffered seek: presentationTime=54.134000062942505 test.js:51 Jumping forward 3.073999938964846 seconds to catch up with the seek range. test.js:51 (all): seeked: buffered seek: presentationTime=54.3199999332428 test.js:51 Updating manifest... test.js:51 Calling switch_(), bandwidth=6013 kbps test.js:51 switch_ test.js:51 Jumping forward 0.14300000000000068 seconds because of gap starting at 59.968 and ending at 60 test.js:51 (all): seeked: buffered seek: presentationTime=60.66300010681152 test.js:51 Jumping forward 0.49199999999999733 seconds because of gap starting at 59.968 and ending at 60 test.js:51 (all): seeked: buffered seek: presentationTime=61.22699999809265 test.js:51 Updating manifest... test.js:51 Jumping forward 0.46000000000000085 seconds because of gap starting at 59.968 and ending at 60 test.js:51 (all): seeked: buffered seek: presentationTime=61.86800003051758 test.js:51 Jumping forward 3.0210000591278074 seconds to catch up with the seek range. test.js:51 (all): seeked: buffered seek: presentationTime=62.13199996948242 test.js:51 Updating manifest... test.js:51 Calling switch_(), bandwidth=5528 kbps test.js:51 switch_ test.js:51 Updating manifest... test.js:51 Calling switch_(), bandwidth=5249 kbps test.js:51 switch_ test.js:51 Updating manifest... test.js:51 Jumping forward 0.25900000000000034 seconds because of gap starting at 83.969 and ending at 84.003 test.js:51 (all): seeked: buffered seek: presentationTime=84.2739999294281 test.js:51 Jumping forward 0.3960000000000008 seconds because of gap starting at 83.969 and ending at 84.003 test.js:51 (all): seeked: buffered seek: presentationTime=85.12700009346008 test.js:51 Jumping forward 0.4399999999999977 seconds because of gap starting at 83.969 and ending at 84.003 test.js:51 (all): seeked: buffered seek: presentationTime=85.67300009727478 test.js:51 Calling switch_(), bandwidth=5559 kbps test.js:51 switch_ test.js:51 Jumping forward 0.24800000000000466 seconds because of gap starting at 83.969 and ending at 84.003 test.js:51 (all): seeked: buffered seek: presentationTime=86.61199998855591 test.js:51 Jumping forward 3.740000043869017 seconds to catch up with the seek range. test.js:51 (all): seeked: buffered seek: presentationTime=87.21600008010864 test.js:51 Updating manifest...

Please let us know if you have any questions or need any additional information.
CC: @avelad

@avelad avelad added the priority: P1 Big impact or workaround impractical; resolve before feature release label Nov 2, 2023
Robloche pushed a commit to Robloche/shaka-player that referenced this issue Nov 30, 2023
@shaka-bot shaka-bot added the status: archived Archived and locked; will not be updated label Jan 1, 2024
@shaka-project shaka-project locked as resolved and limited conversation to collaborators Jan 1, 2024
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
component: HLS The issue involves Apple's HLS manifest format priority: P1 Big impact or workaround impractical; resolve before feature release status: archived Archived and locked; will not be updated type: bug Something isn't working correctly
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants