-
Notifications
You must be signed in to change notification settings - Fork 1.3k
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 play error - hang in transmuxing #1449
Comments
Hi @PrasannaLearnyst, thanks for reporting! Regarding the playback getting stuck after 2 seconds, it looks the third segment somehow gets stuck in transmuxing and thus hangs the playback. |
Hi @ismena, |
I don't think anything's wrong with the content. The notes I left are for other members of my team, so if someone other than me picks this up, they know what's already been done. I think the problem is either on mux.js side (the open source library we use for transmuxing) or in our integration with them. We will investigate further and reach out to mux.js developers if need be. |
@ismena , It will be helpful, thanks |
Filed upstream against mux.js: videojs/mux.js#194 |
We think the mux.js bug can be worked around in Shaka Player, effectively converted from a hang into an error, without us waiting for the bug to fixed upstream. We consider that an improvement, but mux.js will ultimately have to fix the bug. |
prevents them from letting us know they're finished transmuxing. Issue #1449 Change-Id: Icfd4e16a29064783b57ef605228bfda4ca9bb169
Hi, It looks like the 3rd segment does not contain any audio data, but the PMT says there is an audio track. Because of this code here https://github.com/videojs/mux.js/blob/master/lib/mp4/transmuxer.js#L1110 the transmuxer is waiting for audio data that is never coming. You should be able to fix this by setting the remux option to false for the transmuxer. this.muxTransmuxer_ = new muxjs.mp4.Transmuxer({
'keepOriginalTimestamps': true,
'remux': false
}); Note that this will result in separate data events for audio and video, which may require other code changes within Shaka. |
@PrasannaLearnyst from their explanation, it sounds like the segment states that it has both audio and video, but in fact has only video. Mux.js devs have given us a hint on how to work around the problem, but it does sound like the content's description of itself is incorrect (based on the info we get from mux.js, unfortunately I'm not an expert on ts). |
@ismena the content works fine with chrome native HLS player and also in other players I checked online. I will check with my encoder also, but I think it is also good to fix in shaka player |
Setting |
@joeyparrish , thank you. Looking forward for the fix |
So far, there doesn't seem to be an easy way to fix this in Shaka Player. I've tried a few things, but I've had no luck. I'm hoping for more feedback from mux.js, and possibly a fix from them. For now, this will stay marked as "external". For a workaround that you can control @PrasannaLearnyst, could you demultiplex your TS content library? This is something you might be able to try with one asset just for testing purposes, and if it works, you could consider what it would take to do that to your entire content catalog. |
@PrasannaLearnyst For some reason I have a feeling I've seen a comment from you saying that you checked and was audio in the segment in question after all. Am I imagining things? (Apologies if I'm confused, but that's a whole different direction of the conversation with mux.js if that's the case). |
prevents them from letting us know they're finished transmuxing. Issue #1449 Change-Id: Icfd4e16a29064783b57ef605228bfda4ca9bb169
The workaround introduced by @ismena has been cherry-picked for v2.3.9 and v2.4.1. |
prevents them from letting us know they're finished transmuxing. Issue #1449 Change-Id: Icfd4e16a29064783b57ef605228bfda4ca9bb169
@joeyparrish @ismena Any updates on this issue? can we use the master branch? I have seen that you have committed code for this issue |
The code I have submitted is to make sure we throw an error in this case instead of hanging. |
The workaround suggested by mux.js would take serious rearchitecture in Shaka Player, which we don't have the resources to work on right now. We are waiting for a fix from mux.js in videojs/mux.js#194 |
Closing this stale external (non-Shaka) issue. If you disagree, please reply with @shaka-bot reopen, and it will be automatically reopened. |
What version of Shaka Player are you using?
Tested in the latest code and also in https://shaka-player-demo.appspot.com
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?
Demo app
What browser and OS are you using?
Chrome desktop browser MAC
What are the manifest and license server URIs?
URL1: https://s3-ap-southeast-1.amazonaws.com/learnyst/testfolder/sample/expresshls/hls.m3u8
URL2: https://s3-ap-southeast-1.amazonaws.com/learnyst/testfolder/sample/expresshls/hls1.m3u8
What did you do?
If we play using URL2 then we get error
Shaka Error MANIFEST.HLS_MASTER_PLAYLIST_NOT_PROVIDED ()
so the EXT-X-ENDLIST fro the hls1.m3u8 file
Creating new file without EXT-X-ENDLIST which is URL1 (hls.m3u8)
If we play using URL1 then, the video is played only for two seconds and stopped.
The text was updated successfully, but these errors were encountered: