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

Some video streams can't be played on microsoft edge chromium browser on windows 11 #4958

Closed
5 tasks done
adis0308 opened this issue Oct 11, 2022 · 14 comments · Fixed by #5704
Closed
5 tasks done

Some video streams can't be played on microsoft edge chromium browser on windows 11 #4958

adis0308 opened this issue Oct 11, 2022 · 14 comments · Fixed by #5704
Labels
Confirmed Bug report confirmed or reproduced. Enhancement
Milestone

Comments

@adis0308
Copy link

What version of Hls.js are you using?

latest

What browser (including version) are you using?

microsoft edge chromium 106.0.1370.42 (official build) (64-bit)

What OS (including version) are you using?

windows 11

Test stream

https://hls-js.netlify.app/demo?src=https%3A%2F%2Fd3rlna7iyyu8wu.cloudfront.net%2Fskip_armstrong%2Fskip_armstrong_multi_language_subs.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==

Configuration

{
  "debug": true,
  "enableWorker": true,
  "lowLatencyMode": true,
  "backBufferLength": 90
}

Additional player setup steps

No response

Checklist

Steps to reproduce

There are no specific steps. The error occurred at the beginning, the video could not load at all.

Expected behaviour

The demo video must be playable in Microsoft Edge Browser on Windows 11.

What actually happened?

The video could not load at all.

hlsjs error
hlsjs error 2

Console output

Please check on the demo site

Chrome media internals output

No response

@adis0308 adis0308 added Bug Needs Triage If there is a suspected stream issue, apply this label to triage if it is something we should fix. labels Oct 11, 2022
@adis0308
Copy link
Author

I think I know the cause of the problem. The demo video has several sound groups such as aac_stereo, ac3_51, ec3_stereo, ec3_51. I can play videos with aac_stereo sound by first filtering the video and audio on the Hls.Events.MANIFEST_PARSED event. Maybe in the future the hls.js developers can choose the aac sound first although this might conflict with the default video/sound selection in the master.m3u8 file. My conclusion this is a sound codec compatibility issue on the browser or device.

@robwalch
Copy link
Collaborator

The byteLength of undefined exception looks like an issue with AES-128 that has been fixed in dev. If segments fail to be decrypted then the probe failures that follow would be expected. Please check against dev to see if the issue is still reproducible.

@mtoczko
Copy link
Collaborator

mtoczko commented Oct 12, 2022

The byteLength of undefined exception looks like an issue with AES-128 that has been fixed in dev.

There the error came from timeline-controller, here we have a demuxer error. This is not related.
It has a problem with ec-3 track support

[warn] > Failed to find demuxer by probing frag, treating as mp4 passthrough
[warn] > [passthrough-remuxer.ts]: initSegment does not contain moov or trak boxes.
[warn] > [passthrough-remuxer.ts]: Failed to generate initSegment.

Related to #4408

@adis0308
Copy link
Author

I get different warning messages

[warn] > [audio-stream-controller]: Found no media in fragment 0 of level 0 resetting transmuxer to fallback to playlist timing
updateLevelTiming @ base-stream-controller.ts:1427
_handleTransmuxerFlush @ base-stream-controller.ts:746
onWorkerMessage @ transmuxer-interface.ts:296
[warn] > Fragments must have at least one ElementaryStreamType set. type: audio level: 0 sn: 0
onFragParsed @ buffer-controller.ts:501
emit @ index.js:203
emit @ hls.ts:251
trigger @ hls.ts:259
updateLevelTiming @ base-stream-controller.ts:1433
_handleTransmuxerFlush @ base-stream-controller.ts:746
onWorkerMessage @ transmuxer-interface.ts:296

https://hls-js-56521345-fabc-472e-8348-f4a35c6237f1.netlify.app/demo/?src=https%3A%2F%2Fd3rlna7iyyu8wu.cloudfront.net%2Fskip_armstrong%2Fskip_armstrong_multi_language_subs.m3u8&demoConfig=eyJlbmFibGVTdHJlYW1pbmciOnRydWUsImF1dG9SZWNvdmVyRXJyb3IiOnRydWUsInN0b3BPblN0YWxsIjpmYWxzZSwiZHVtcGZNUDQiOmZhbHNlLCJsZXZlbENhcHBpbmciOi0xLCJsaW1pdE1ldHJpY3MiOi0xfQ==

@adis0308
Copy link
Author

As additional information that I have also tried to play videos on firefox 105.0.3 (64-bit) on the same windows 11 and the video can play normally without any problems

@adis0308
Copy link
Author

I was expecting the video to play by adding the setting defaultAudioCodec: mp4a.40.2 but it didn't work even though it was listed in the API documentation.

@mtoczko
Copy link
Collaborator

mtoczko commented Oct 14, 2022

@adis0308 You could split this stream into 4 streams (aac, ec3_stereo, ac3, ec3)? So that the stream has only one audio group

@robwalch
Copy link
Collaborator

Confirmed in Windows 10 as well.

@robwalch robwalch added Confirmed Bug report confirmed or reproduced. and removed Needs Triage If there is a suspected stream issue, apply this label to triage if it is something we should fix. labels Oct 14, 2022
@robwalch
Copy link
Collaborator

robwalch commented Oct 14, 2022

Can you provide a little more information about the media itself.

HLS.js only support fmp4, TS, aac, and mp3 containers/file-formats. Raw EC3 files are not supported, even when the codec is supported by the browser. Use fmp4 or CMAF containers for all playlist segments.

@robwalch robwalch added this to the 1.5.0 milestone Oct 14, 2022
@robwalch
Copy link
Collaborator

robwalch commented Oct 14, 2022

For now, with this stream on Chromium/Edge, using the current release (v1.2.4), you could manually select a start level on manifest loaded / levels updates that uses the AAC audio group. After that is loaded and the audio tracks updated you can put the player back in ABR mode and it should stick to AAC.

If you want EC3 playback where supported or if you want to use any codecs other than AVC and AAC, provide mp4 segmented playlists.

@adis0308
Copy link
Author

The video is a sample from Dolby Digital so it is Dolby AC3 and Dolby EC3.
Yes for now I have solved that problem manually and filtered levels with:

hls.firstLevel = aacFindIndex;
hls.startLevel = aacFindIndex;
hls.currentLevel = aacFindIndex;

And

hls.removeLevel();
hls.swapAudioCodec();
hls.recoverMediaError(); 

Via:

Hls.Events.MANIFEST_PARSED
Hls.Events.LEVEL_UPDATED
Hls.Events.LEVEL_SWITCHED
Hls.Events.LEVEL_LOADED
Hls.Events.LEVEL_PTS_UPDATED

@adis0308
Copy link
Author

adis0308 commented Oct 15, 2022

@mtoczko Yes, I did that. I added an audioCodec filter using MediaSource earlier. But still dolby ec3 detected can be run in the browser on the filtering results. The problem is because by default the first audio selected in the manifest is dolby ec3 so the result is [ec3, aac, ac3, ec3_51].

@robwalch
Copy link
Collaborator

robwalch commented May 31, 2023

The audio EXT-X-MEDIA tags SHOULD have a CHANNELS attribute but do not. Since this Playlist has EC3 in stereo and 5.1 surround for each language, the CHANNELS attribute is REQUIRED. HLS clients cannot pick between these options or convey that stereo and surround are available without the CHANNELS attribute.

@robwalch
Copy link
Collaborator

Hi @adis0308,

EC3 container-less is still not supported (EC3 audio must be provided in fragmented mp4), but AC3 support is present in dev.

Can you try again and provide feedback on how this is behaving in https://hlsjs-dev.video-dev.org/demo/ ? Thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Confirmed Bug report confirmed or reproduced. Enhancement
Projects
None yet
3 participants