Bug 264473 - No sound from HTMLAudioElement when navigator.audioSession.type is set to "transient" or "transient-solo"
Summary: No sound from HTMLAudioElement when navigator.audioSession.type is set to "tr...
Status: RESOLVED INVALID
Alias: None
Product: WebKit
Classification: Unclassified
Component: Media (show other bugs)
Version: Safari 17
Hardware: iPhone / iPad iOS 17
: P2 Normal
Assignee: Nobody
URL:
Keywords: InRadar
Depends on:
Blocks:
 
Reported: 2023-11-09 03:24 PST by Danny Moerkerke
Modified: 2024-03-10 13:46 PDT (History)
4 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Danny Moerkerke 2023-11-09 03:24:44 PST
In Safari 17 on iOS 17 when an HTMLAudioElement is playing audio and navigator.audioSession.type is set to "transient" or "transient-solo" the audio continues playing but there is no sound anymore. 
When audio is played by another app, for example Music, the audio from that app is paused, regardless to what navigator.audioSession.type is set to.
The Feature Flags AudioSession API and AudioSession full API are both on.
Comment 1 Radar WebKit Bug Importer 2023-11-16 03:25:20 PST
<rdar://problem/118503217>
Comment 2 youenn fablet 2024-03-09 00:04:18 PST
I had a try on iOS 17.4 and it seems to work as expected, using https://jsfiddle.net/e9ahcb35/.

Setting "transient" triggers using https://developer.apple.com/documentation/avfaudio/avaudiosession/category/1616560-ambient.

If the silent switch is on, video is muted, otherwise it is not.
Maybe that is what you experienced?

As of mixing with other apps, I tried the following:
1. Launch music app
2. Open https://jsfiddle.net/e9ahcb35/ and play.
I can hear both audio in that case.

If the page is backgrounded, audio is stopped, which seems expected as well.

Marking as Invalid although it should really be "Behave as expected".

@Danny, feel free to reopen the bug especially if there is a particular point I missed.
Comment 3 Danny Moerkerke 2024-03-10 13:46:26 PDT
(In reply to youenn fablet from comment #2)
> I had a try on iOS 17.4 and it seems to work as expected, using
> https://jsfiddle.net/e9ahcb35/.
> 
> Setting "transient" triggers using
> https://developer.apple.com/documentation/avfaudio/avaudiosession/category/
> 1616560-ambient.
> 
> If the silent switch is on, video is muted, otherwise it is not.
> Maybe that is what you experienced?
> 
> As of mixing with other apps, I tried the following:
> 1. Launch music app
> 2. Open https://jsfiddle.net/e9ahcb35/ and play.
> I can hear both audio in that case.
> 
> If the page is backgrounded, audio is stopped, which seems expected as well.
> 
> Marking as Invalid although it should really be "Behave as expected".
> 
> @Danny, feel free to reopen the bug especially if there is a particular
> point I missed.

Thanks, when the options "transient" and "transient-solo" are selected, the audio from the web app is now mixed with the audio coming from the Music App on iOS, but on MacOS Sonoma 14.4 the audio from the web app is always mixed with the audio from other apps, regardless to what navigator.audioSession.type is set to.

When navigator.audioSession.type is set to "play-and-record" on iOS 17.4 it still pauses the audio from other apps when the mic is accessed from the web app with navigator.mediaDevices.getUserMedia.