-
Notifications
You must be signed in to change notification settings - Fork 1.4k
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
XUMO HLS stream fails to play in Chrome #1817
Comments
Trying this out, it looks like when using the fetch plugin it errors whenever the URL is the "beacon" URL, as you mentioned. Interestingly, when the fetch plugin is disabled and we use XHR plugin, it gives a CORS error no matter what the URL is. More investigation will be required. |
@theodab If you try again with Fetch, it should work with no CORS errors after a couple of attempts. The manifests contain the "beacon" url less often than not. I can probably debug the CORS erros on my own but the thing where I really feel helpless after a couple of days of investigating is the media error we get when there are no CORS errors. |
The fact that the fetch plugin is succeeding in situations where the XHR plugin gets a CORS error suggests that one or both of them has some kind of bug in it. They should ideally have the same behavior. Said bug may or may not be related to this issue, however. |
Confirmed the bug. In Chrome, it shows two kinds of error messages, either 'Initialization segment misses expected aac track', or 'MANIFEST.HLS_COULD_NOT_PARSE_SEGMENT_START_TIME'. In Firefox, it shows 'Initialization segment misses expected aac track'. |
Hello @MilosRasic , |
There are two problems here. One, with Shaka in Chrome failing to start playback, and another one where Fetch API will fail CORS when a manifest includes hls-beacons.xumo.com urls. You need to look at dev tools as well to figure out which of the two if happening, since the stream will not always return hls-beacons.xumo.com before it's stopped by another error. Without hls-beacons.xumo.com Firefox: plays fine With hls-beacons.xumo.com Firefox: Shaka Error MANIFEST.HLS_COULD_NOT_PARSE_SEGMENT_START_TIME () hls.js plays fine for me in both browsers: Chrome v73 and Firefox v65 |
The problem is that your master playlist has a The preferred thing is to just list the codecs that are in the streams, like just |
Have you read the FAQ and checked for duplicate open issues?
Yes, I've been looking through issues for days.
What version of Shaka Player are you using?
2.5.0-beta3
Can you reproduce the issue with our latest release version?
Yes.
Can you reproduce the issue with the latest code from
master
?Yes.
Are you using the demo app or your own custom app?
Tried both, but mostly used Demo App.
If custom app, can you reproduce the issue using our demo app?
Yes.
What browser and OS are you using?
Linux, Chrome Version 72.0.3626.109 (Official Build) (64-bit)
Also tried Chrome on Mac.
For embedded devices (smart TVs, etc.), what model and firmware version are you using?
Haven't tested on a TV.
What are the manifest and license server URIs?
https://dai1.xumo.com/a7ze70ah55wn6lu4/9999243/master.m3u8
No DRM.
What did you do?
Tried to play the stream, many times. Looked through the code but couldn't figure out much except that the error is thrown by the browser.
Tested in Firefox and confirmed it's playing the stream fine.
Checked with hls.js and confirmed it plays fine in both Chrome and FF.
Built from master. Built mux.js from master with videojs/mux.js#224 merged. Copied the built mux.js to Shaka demo directory. Confirmed it doesn't behave differently.
What did you expect to happen?
Playback should work in Chrome as well.
What actually happened?
When playing stream in Demo App, it reports the following error:
Shaka Error MEDIA.VIDEO_ERROR (4,,CHUNK_DEMUXER_ERROR_APPEND_FAILED: Initialization segment misses expected aac track.)
Console in dev tools contains error with codes 3016 and 3014.
The player keeps loading segments and console.logging "Updating manifest..."
The main manifest looks like this:
A manifest for a bandwidth looks like
After downloading and parsing those, Shaka proceeds to download the ts files with content-type video/M2PT. I have no idea how to check those. The only human-readable string they contain is "FFmpeg Service".
I also noticed hls.js only downloads ts file for a single bandwidth before starting playback.
chrome://media-internals data below
Shaka Player Properties
Shaka Log
hls.js Player Properties
hls.js Log
The most glaring difference I can see is hls.js not logging Duration until after playback has started and logging values that look more meaningful.
On a related note, the manifests seem to be dynamic and will sometimes return absolute cross-origin URLs which contain the word "beacon". These will fail CORS with Shaka. hls.js doesn't have a problem with those. It uses XHR, not Fetch API, and doesn't even make OPTIONS requests.
I'd be happy to help debug or even fix this, but my knowledge of video and audio codecs is severely limited. Identifying this as a known issue or some pointers about where to look for bugs would be much appreciated.
The text was updated successfully, but these errors were encountered: