shaka-project / shaka-player

JavaScript player library / DASH & HLS client / MSE-EME player
Apache License 2.0
7.19k stars 1.34k forks source link

HLS SUBTITLES listed in CODECS not supported #3184

Closed TheModMaker closed 3 years ago

TheModMaker commented 3 years ago

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

What version of Shaka Player are you using? v3.0.8

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

If custom app, can you reproduce the issue using our demo app? N/A

What browser and OS are you using? N/A

For embedded devices (smart TVs, etc.), what model and firmware version are you using? N/A

What are the manifest and license server URIs? https://storage.googleapis.com/shaka-demo-assets/_bugs/ttml_mp4_hls/foo.m3u8

What did you do? Try to play asset that has the subtitle codecs listed in the CODECS string for the stream. For example CODECS="avc1.4d401e,stpp.ttml.im1t".

What did you expect to happen? Asset plays.

What actually happened? CONTENT_NOT_SUPPORTED_BY_BROWSER. What happens is the codec is treated as part of the audio+video and we query MSE for support. We should be stripping this out of the codec list. Additionally, related to #1959, we should be using this info to determine which MP4 parser to use.

FYI, this is related to Shaka Packager live subtitles in google/shaka-packager#832. I'm not an HLS expert, so this may be bad content too.

TheModMaker commented 3 years ago

The error may only be caused by us thinking the content is audio+video since there isn't an audio stream and that is the audio codec. I think it works with different audio and video streams, see https://github.com/google/shaka-packager/issues/903#issuecomment-785329070.

joeyparrish commented 3 years ago

Should be easy enough to filter out common text codecs there and fix the multiplex detection in the HLS parser.

ismena commented 3 years ago

I might be misunderstanding, but this looks like bad content to me. There's a variant tag and a subtitle media tag. This is the variant tag: EXT-X-STREAM-INF:BANDWIDTH=1120520,AVERAGE-BANDWIDTH=1018680,CODECS="avc1.4d401e,stpp.ttml.im1t",RESOLUTION=640x360,FRAME-RATE=29.970,SUBTITLES="default-text-group" FRAMERATE and RESOLUTION attributes suggest a video stream, but the only codec present is an audio codec.

Looking at the media playlist, it seems to be a video mp4 stream. If that's the case, I'd expect a video codec instead of an audio one.

TheModMaker commented 3 years ago

avc1.4d401e is a video codec, it is H.264; the other codec (stpp.ttml.im1t) is TTML.

ismena commented 3 years ago

Ack. Will look into it.