-
Notifications
You must be signed in to change notification settings - Fork 2.6k
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
No Error Event Attempting to Play Unsupported Video #5011
Comments
To clarify, there are 2 issues I see. The first is a bug that only occurs when enableWorker is true. The second is a request to add an error event for unsupported video formats. From the 3 warning logs I see, I would like if one of those could throw an error that I can respond to and gracefully tell the user that the video format is not supported. Perhaps the last one is the best place to do it? Suggest changing that from warning to error and throwing an appropriately typed event. |
See comments in #5015, and please direct worker related failures to that issue.
Please provide a sample stream that reproduces the issue. The player supports empty segments since v1.2.0 with #4800. I agree that in this case we should produce a fatal error if there are no alternate renditions available - but only if:
|
Sample stream: https://raw.githubusercontent.com/mattzucker/hls-test-data/main/bigbuckbunny.m3u8 Thank you for the link to the other issue. I didn't see it when I looked through open bug tickets.
I don't expect any segments to have no media. I suppose HLS.js thinks it has no media because the format is not supported. In that case, I don't understand the reasoning behind #4800 because it seems like no media should be an error, but perhaps you could throw a non-fatal error instead? That would support gracefully handling segments with no media but also give an option for a convenient hook where I might want to put up a warning to tell the user something may be wrong with their video stream. |
A user had a library of legacy streams with MPEG2-TS segments where occasionally a segment would not contain any media samples. Other popular HLS players made it across this content without failing so #4800 was implemented to do the same.
In that case we would just emit a non-fatal FRAG_PARSING_ERROR when logging The difference here is that the segment type could not be identified, AND we could not find any media in it. Either case should be allowed exclusively, but when both occur a fatal error must be raised. |
* Emit and handle FRAG_PARSING_ERROR from transmuxers Related to #5011 * Switch levels on Key and Fragment parsing errors or escalate to fatal error
* Emit and handle FRAG_PARSING_ERROR from transmuxers Related to #5011 * Switch levels on Key and Fragment parsing errors or escalate to fatal error
* Add support for com.apple.fps keySystem * Improve support for DRM key-systems and key handling Resolves #2833 #2737 #4318 #4538 * Update README `licenseXhrSetup` example * Update api-extractor markdown * Attach CDM on start when even when initial fragments do not have a key associated with them * Handle expired key status correctly * Map key-sessions by key ID and log key ID more often than URI * Support "clear-lead" key-session creation without new config * Emit and handle FRAG_PARSING_ERROR from transmuxers (#5018) * Emit and handle FRAG_PARSING_ERROR from transmuxers Related to #5011 * Switch levels on Key and Fragment parsing errors or escalate to fatal error * Route all key-system errors to `onFragmentOrKeyLoadError` * Populate EMEKeyError.err for better demo error logging * Remove `useEmeEncryptedEvent` and mark `widevineLicenseUrl` as deprecated in API.md * Add support for EXT-X-SESSION-KEY tags (for key-system access on manifest loaded) #4927 * Throw before licenseXhrSetup if key was removed * Make key session promise chain more consice * Stop on fatal key system errors * Only request access to key-systems for keys matching those found in the config one at time (to avoid gaining access to WV and PR on Edge) * Modify key-system helpers so that it's easier to support additional key-system strings * Add undocumented `generateRequest` ("Content ID") filter Co-authored-by: Vincent Valot <vincent.valot@bedrockstreaming.com>
I'm not sure about the cause of this problem, but I had a similar phenomenon and it resolved. For others to refer to
Try itIf there is, please remove it and it will be resolved! Or consider replacing with better-mock! mock.js is wasting too much of my time! |
…t.errorRetry.maxNumRetry (6) times Fixes #5011
…t.errorRetry.maxNumRetry (6) times 2/2 Fixes #5011
…t.errorRetry.maxNumRetry (6) times 2/2 Fixes #5011
…t.errorRetry.maxNumRetry (6) times Fixes #5011
…t.errorRetry.maxNumRetry (6) times 2/2 Fixes #5011
…t.errorRetry.maxNumRetry (6) times Fixes #5011
…t.errorRetry.maxNumRetry (6) times 2/2 Fixes #5011
You can preview the fix here https://deploy-preview-5241--hls-js-dev.netlify.app/demo/ The player will produce several FRAG_PARSING_ERRORs (up to fragLoadPolicy maxNumRetry) with the last one being fatal and stopping loading (this allows level switching and on the lowest level skipping of bad fragments before failing after several unsuccessful attempts). |
* Implement ErrorController … Add Error Handling Integration Tests Handle missed probe transmux probe with with FRAG_PARSING_ERROR Handle encrypted init segment and subtitle decryption failure with FRAG_DECRYPT_ERROR Remove delay when retrying after timeout Trigger FRAG_LOADING after request is made ERROR event data type must include an error property Add stats to network loader error callbacks to allow error handling to use request timing Remove use of console.warn from mp4-tools Add missing TypeScript type exports * Remove console.assert statements Resolves #5218 Closes #5221 * Remove unused frag buffered monitor * Add Load Policies and deprecate frag/level/manifest timeout and retry config options * Switch on FRAG_PARSING_ERROR or continue trying fragLoadPolicy.default.errorRetry.maxNumRetry (6) times Fixes #5011 * Switch on FRAG_PARSING_ERROR or continue trying fragLoadPolicy.default.errorRetry.maxNumRetry (6) times 2/2 Fixes #5011 * Do not reload level after calling stopLoad() and startLoad() Warn on currentFrag context reference change and use currentFrag to maintain correct stats ref Fixes #5230 * Implement ErrorActions and Pathway Switching * Fix part timeout handling Cleanup frag stats handoff * Update retry rules to require http status or timeout error (deprioritizes retry on parse errors) * Retry audio and subtitle playlist loading after failure on level switch when no alternate is available
the issue is persist and happend with encryption and decryption |
What version of Hls.js are you using?
v1.2.4
What browser (including version) are you using?
Chrome Version 106.0.5249.91 (Official Build) (64-bit)
What OS (including version) are you using?
Linux CentOS 7
Test stream
https://raw.githubusercontent.com/mattzucker/hls-test-data/main/bigbuckbunny.m3u8
Configuration
Additional player setup steps
No response
Checklist
Steps to reproduce
Expected behaviour
An error event is triggered that explains the video format is not supported.
What actually happened?
With
enableWorker:true
, I see the same error as reported here #4958. As suggested in that ticket, I updated to the latest version from master. Now I am seeing this error:To get more information, I set
enableWorker:false
. Now I do not see any error, and the video fails to play.Console output
Chrome media internals output
No response
The text was updated successfully, but these errors were encountered: