Dash-Industry-Forum / dash.js

A reference client implementation for the playback of MPEG DASH via Javascript and compliant browsers.
http://reference.dashif.org/dash.js/nightly/samples/dash-if-reference-player/index.html
Other
5.1k stars 1.67k forks source link

Multichannel audio not downmixed in chrome #3511

Closed slasktrat closed 2 years ago

slasktrat commented 3 years ago
Environment
Steps to reproduce
  1. Please provide clear steps to reproduce your problem Open the reference player in chrome and load https://dash.akamaized.net/dash264/TestCasesMCA/fraunhofer/HE-AACv2_Multichannel/1/6chID/6chId_480p_single_adapt_heaac5_1_sidx.mpd

  2. If the bug is intermittent, give a rough frequency if possible 100% reproducible

Observed behaviour

On some devices (OnePlus 8 e.g.) multichannel audio is not downmixed (in chrome). Only left and right audio channels are audible. Shaka player gives correct result (all channels audible) on same device, browser and media. In FireFox the audio is downmixed correctly on the same device. On other devices the audio is downmixed as expected also with dash.js and chrome.

Console output
Debug.js:169 [162336][Protection] EME detected on this user agent! (ProtectionModel_21Jan2015) 
Debug.js:169 [162337][MediaPlayer] Streaming Initialized 
Debug.js:169 [162340][MediaPlayer] Playback Initialized 
Debug.js:169 [162377][DashParser] Parsing complete: ( xml2json: 2.00ms, objectiron: 0.100ms, total: 0.00210s) 
Debug.js:169 [162378][StreamController] Switch to stream defaultId_0. Seektime is NaN, current playback time is null 
Debug.js:169 [162378][StreamController] Seamless period switch is set to false 
Debug.js:169 [162380][ManifestUpdater] Manifest has been refreshed at Tue Jan 12 2021 14:49:37 GMT+0100 (sentraleuropeisk normaltid)[1610459377.413]  
Debug.js:169 [162390][Stream] No text data. 
Debug.js:169 [162390][Stream] No fragmentedText data. 
Debug.js:169 [162390][Stream] No embeddedText data. 
Debug.js:169 [162390][Stream] No muxed data. 
Debug.js:169 [162390][Stream] No image data. 
Debug.js:169 [162394][PlaybackController] Native video element event: play 
Debug.js:169 [162395][PlaybackController] Native video element event: waiting 
Debug.js:169 [162493][BufferController][video] Init fragment finished loading saving to video's init cache 
Debug.js:169 [162495][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://dash.akamaized.net/dash264/TestCasesMCA/fraunhofer/HE-AACv2_Multichannel/1/6chID/6chID_848x480_24fps-avc1.42c01e-11s-848x480-h264-1500000bps_seg.mp4 , Range:0-684 
Debug.js:169 [162497][BufferController][audio] Init fragment finished loading saving to audio's init cache 
Debug.js:169 [162498][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://dash.akamaized.net/dash264/TestCasesMCA/fraunhofer/HE-AACv2_Multichannel/1/6chID/6ch_ident_48kHz-en-11s-6-heaac-160000bps_seg.mp4 , Range:0-608 
Debug.js:169 [162506][PlaybackController] Native video element event: loadedmetadata 
Debug.js:169 [162507][ScheduleController][video] Top quality video index has changed from undefined to 0 
Debug.js:169 [162509][ScheduleController][audio] Top quality audio index has changed from undefined to 0 
Debug.js:169 [162568][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://dash.akamaized.net/dash264/TestCasesMCA/fraunhofer/HE-AACv2_Multichannel/1/6chID/6ch_ident_48kHz-en-11s-6-heaac-160000bps_seg.mp4 , Range:677-99074 
Debug.js:169 [162641][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://dash.akamaized.net/dash264/TestCasesMCA/fraunhofer/HE-AACv2_Multichannel/1/6chID/6chID_848x480_24fps-avc1.42c01e-11s-848x480-h264-1500000bps_seg.mp4 , Range:753-984626 
Debug.js:169 [162686][PlaybackController] Native video element event: playing 
Debug.js:169 [162775][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://dash.akamaized.net/dash264/TestCasesMCA/fraunhofer/HE-AACv2_Multichannel/1/6chID/6chID_848x480_24fps-avc1.42c01e-11s-848x480-h264-1500000bps_seg.mp4 , Range:984627-1806687 
Debug.js:169 [162854][ScheduleController][video] OnFragmentLoadingCompleted - Url: https://dash.akamaized.net/dash264/TestCasesMCA/fraunhofer/HE-AACv2_Multichannel/1/6chID/6chID_848x480_24fps-avc1.42c01e-11s-848x480-h264-1500000bps_seg.mp4 , Range:1806688-2141512 
Debug.js:169 [162867][Stream] onBufferingCompleted - One streamProcessor has finished but audio one is not buffering completed 
doLog @ Debug.js:169
warn @ Debug.js:132
onBufferingCompleted @ Stream.js:706
(anonymous) @ EventBus.js:124
trigger @ EventBus.js:124
triggerEvent @ BufferController.js:845
checkIfBufferingCompleted @ BufferController.js:559
onStreamCompleted @ BufferController.js:754
(anonymous) @ EventBus.js:124
trigger @ EventBus.js:124
executeRequest @ FragmentModel.js:208
processMediaRequest @ ScheduleController.js:292
onMediaFragmentNeeded @ StreamProcessor.js:458
(anonymous) @ EventBus.js:124
trigger @ EventBus.js:124
getNextFragment @ ScheduleController.js:209
schedule @ ScheduleController.js:223
setTimeout (async)
startScheduleTimer @ ScheduleController.js:271
onBytesAppended @ ScheduleController.js:392
(anonymous) @ EventBus.js:124
trigger @ EventBus.js:124
triggerEvent @ BufferController.js:845
onAppended @ BufferController.js:310
afterSuccess @ SourceBufferSink.js:266
executeCallback @ SourceBufferSink.js:347
updateEndHandler @ SourceBufferSink.js:364
Debug.js:169 [162869][ScheduleController][video] Stream defaultId_0 is complete 
Debug.js:169 [163138][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://dash.akamaized.net/dash264/TestCasesMCA/fraunhofer/HE-AACv2_Multichannel/1/6chID/6ch_ident_48kHz-en-11s-6-heaac-160000bps_seg.mp4 , Range:99075-200276 
Debug.js:169 [163192][ScheduleController][audio] OnFragmentLoadingCompleted - Url: https://dash.akamaized.net/dash264/TestCasesMCA/fraunhofer/HE-AACv2_Multichannel/1/6chID/6ch_ident_48kHz-en-11s-6-heaac-160000bps_seg.mp4 , Range:200277-231468 
Debug.js:169 [163202][StreamController] [onStreamBufferingCompleted] calls signalEndOfStream of mediaSourceController. 
Debug.js:169 [163202][MediaSourceController] call to mediaSource endOfStream 
Debug.js:169 [163204][ScheduleController][audio] Stream defaultId_0 is complete 
Debug.js:169 [174404][PlaybackController] Native video element event: pause 
Debug.js:169 [174431][PlaybackController] Native video element event: ended 
slasktrat commented 3 years ago

Update: If I disable "Use AAudio Driver" in chrome://flags/#use-aaudio-driver, the audio is downmixed correctly. But again, both shaka player and videojs are able to play the same media and downmix correctly in the same environment without this setting manually disabled.

syscafedevelopment commented 3 years ago

Any news about this bug? It's hurting me and my users.

slasktrat commented 3 years ago

Same here :-( We had to drop dash.js because of this, but will reintroduce dash.js if this gets fixed

dsilhavy commented 3 years ago

No updates here. I am not aware of an attribute on MSE or

For now, this has low prio as downmixing works on most devices and platforms. I rather expect this to be a device/platform problem.

If you have a potential change to dash.js in mind or can point us to a diff between dash.js and Shaka I am happy to check that.

slasktrat commented 3 years ago

Actually we found this issue is present on various devices. Most OnePlus seems affected, but also some Samsung and Huawei. Both Shaka and videojs plays the same sources correctly on the same devices, but I don't know enough about the decode pipeline to point out where dash.js differs.

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. However, it might still be relevant so please leave a short comment if it should remain open. Otherwise the issue will be closed automatically after two weeks. Thank you for your contributions.

slasktrat commented 3 years ago

Still relevant

stale[bot] commented 2 years ago

This issue has been automatically marked as stale because it has not had recent activity. However, it might still be relevant so please leave a short comment if it should remain open. Otherwise the issue will be closed automatically after two weeks. Thank you for your contributions.

slasktrat commented 2 years ago

Still relevant

stale[bot] commented 2 years ago

This issue has been automatically marked as stale because it has not had recent activity. However, it might still be relevant so please leave a short comment if it should remain open. Otherwise the issue will be closed automatically after two weeks. Thank you for your contributions.

stale[bot] commented 2 years ago

This issue has been automatically closed because no further activity occurred. If you think this issue is still relevant please reopen it or contact @dsilhavy. Thank you for your contributions.