Closed adis0308 closed 1 year ago
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.
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.
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
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
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
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.
@adis0308 You could split this stream into 4 streams (aac, ec3_stereo, ac3, ec3)? So that the stream has only one audio group
Confirmed in Windows 10 as well.
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.
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.
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
@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].
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.
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!
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
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.
Console output
Chrome media internals output
No response