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

Shaka player not picking up lower quality / other variants when url of one variant does not respond #4764

Closed
kiran-dcunha opened this issue Nov 28, 2022 · 3 comments · Fixed by #4769
Labels
status: archived Archived and locked; will not be updated type: bug Something isn't working correctly
Milestone

Comments

@kiran-dcunha
Copy link

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

What version of Shaka Player are you using?
v4.2.1

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

Can you reproduce the issue with the latest code from main?
Did not check

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

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

What browser and OS are you using?
Mac M1 Pro 2021, Chrome 107.0.5304.110

For embedded devices (smart TVs, etc.), what model and firmware version are you using?
Originally happening on Smart TVs, but reproducible on Macs as well.

What are the manifest and license server URIs?

NA

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

{ "drm": { "retryParameters": { "maxAttempts": 2, "baseDelay": 1000, "backoffFactor": 2, "fuzzFactor": 0.5, "timeout": 30000, "stallTimeout": 5000, "connectionTimeout": 10000 }, "parseInbandPsshEnabled": false }, "manifest": { "retryParameters": { "maxAttempts": 2, "baseDelay": 1000, "backoffFactor": 2, "fuzzFactor": 0.5, "timeout": 30000, "stallTimeout": 5000, "connectionTimeout": 10000 }, "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 }, }, "streaming": { "retryParameters": { "maxAttempts": 2, "baseDelay": 1000, "backoffFactor": 2, "fuzzFactor": 0.5, "timeout": 30000, "stallTimeout": 5000, "connectionTimeout": 10000 }, "rebufferingGoal": 2, "bufferingGoal": 10, "bufferBehind": 30, "ignoreTextStreamFailures": false, "alwaysStreamText": false, "startAtSegmentBoundary": false, "gapDetectionThreshold": 0.5, "durationBackoff": 1, "forceTransmux": false, "safeSeekOffset": 5, "stallEnabled": true, "stallThreshold": 1, "stallSkip": 0, "useNativeHlsOnSafari": true, "inaccurateManifestTolerance": 2, "lowLatencyMode": false, "autoLowLatencyMode": false, "forceHTTPS": false, "preferNativeHls": false, "updateIntervalSeconds": 1, "dispatchAllEmsgBoxes": false, "observeQualityChanges": false, "maxDisabledTime": 30, "parsePrftBox": false }, "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, "restrictions": { "minWidth": 0, "maxWidth": null, "minHeight": 0, "maxHeight": null, "minPixels": 0, "maxPixels": null, "minFrameRate": 0, "maxFrameRate": null, "minBandwidth": 0, "maxBandwidth": null }, }

What did you do?

Stop one mp4 chunk of one variant from responding. It is not blocked, but the server does not respond.
NOTE: Player works fine if the server is very slow and some part of variant gets downloaded. It switches to lower bitrate and tries to play it. 1003 error is seen in our production environment, and above is a simulation which may be what is occurring in production.

What did you expect to happen?
Shaka player should try playing a different variant (preferable lower?)

What actually happened?

Shaka player throws 1003 error without trying for another variant.

image

image

@kiran-dcunha kiran-dcunha added the type: bug Something isn't working correctly label Nov 28, 2022
@github-actions github-actions bot added this to the v4.4 milestone Nov 28, 2022
@friday
Copy link
Contributor

friday commented Nov 29, 2022

There's more information about it here #4728

The case that's causing issues for me is segments that are in the manifest but files are missing, returning 404. This results in a BAD_HTTP_STATUS (1001) as demonstrated by that issue ^, but I also mentioned that I thought TIMEOUT (1003) should be covered by this.

Then I started making a PR, and the tests intentionally used TIMEOUT as the invalid event, which made me hesitate as I'm not sure there might be reasons for this I'm unaware of?

@WINOFFRG
Copy link
Contributor

I feel this is not an issue, Since the demo version is general and minimalistic, It doesn't handle such cases and allows us to manually handle that. You can add a listener for this event and add your custom logic, for example switching down to a lower resolution playback set!

@friday
Copy link
Contributor

friday commented Nov 29, 2022

I feel this is not an issue, Since the demo version is general and minimalistic, It doesn't handle such cases and allows us to manually handle that. You can add a listener for this event and add your custom logic, for example switching down to a lower resolution playback set!

The functionality being requested here already exists in Shaka. It's just the condition (one line of code) that's keeping it from being used here.

@avelad avelad closed this as completed in b46012d Dec 1, 2022
@github-actions github-actions bot added the status: archived Archived and locked; will not be updated label Jan 30, 2023
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jan 30, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
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.

3 participants