<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>294623</bug_id>
          
          <creation_ts>2025-06-17 11:23:27 -0700</creation_ts>
          <short_desc>MediaRecorder severely reduces input audio volume for all non-Safari apps when recorded simultaneously</short_desc>
          <delta_ts>2025-07-03 10:51:44 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Mac (Apple Silicon)</rep_platform>
          <op_sys>macOS 15</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=230902</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Will Field-Thompson">webkitbugzilla</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ahmad.saleem792</cc>
    
    <cc>jer.noble</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>2124253</commentid>
    <comment_count>0</comment_count>
      <attachid>475588</attachid>
    <who name="Will Field-Thompson">webkitbugzilla</who>
    <bug_when>2025-06-17 11:23:27 -0700</bug_when>
    <thetext>Created attachment 475588
The sample HTML which causes the issue.

Hi! This is my first WebKit bug, so please let me know if there&apos;s anything I ought to do differently in the future, or if there&apos;s any additional info you need.

# Description
When using the MediaRecorder API to record audio in Safari, all other apps on the system which are recording audio have their input volume substantially reduced to the point that it is very difficult to hear audio recorded in other apps. This does not happen with Chrome or Firefox on the same machine, with the same OS, with the same microphone. The audio recorded by Safari itself is unaffected.

# Usecase
Our webapp helps people practice public speaking and giving presentations. Sometimes these users would like to record in our app while presenting over a video call or practicing with our coaches, also over a video call.

Unfortunately we have to put a banner at the top of the page suggesting users don’t use Safari because using MediaRecorder on Safari makes it so no one can hear them over Zoom (or Teams, or Slack, etc.). Luckily we do have a native macOS app they can use &amp; every other browser works fine, but we’d really like our webapp to match our native app with zero caveats.

# Environment
Every built-in/internal Mac microphone we’ve tested is affected. Some external microphones are unaffected. Example: my Macbook Pro 16-inch, 2023, M2 Pro, 32 GB RAM; using the built-in microphone reproduces every time.

I have reproduced this using the following version combinations:
- Safari 18.5 (20621.2.5.11.8) on macOS Sequoia 15.5
- Safari Technology Preview Release 221 (WebKit 20622.1.15.19.2) on macOS Sequoia 15.5
- Webkit build 296320@main on macOS Sequoia 15.5 from the build archives
- Safari 17.3.1 (19617.2.4.11.12); macOS Sonoma 14.3.1

This affects every audio recording app we’ve tried, including Zoom and QuickTime. My reproduction steps use QuickTime because it’s pre-installed on macOS.

# Reproduction steps
I have attached a reduced HTML example.
1. Open QuickTime Player
2. Click File &gt; New Audio Recording…
3. Use the little dropdown indicator to select the internal microphone (e.g. Macbook Pro Microphone)
4. Start recording in QuickTime and begin speaking. Speak continuously throughout the next few steps, so you can observe the change in volume.
5. Open the sample HTML in Safari
6. Click “Record” and give microphone permission
7. Record several seconds of speech
8. Click “Stop” on the webpage
9. Record several seconds more of speech
10. End recording in QuickTime
11. Listen back to the QuickTime recording, noting that the volume decreases when you started recording in the webpage and increases again when you stopped recording.
12. Listen back to the recording in Safari, noting that the volume there is at a reasonable level</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2125542</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2025-06-24 11:24:12 -0700</bug_when>
    <thetext>&lt;rdar://problem/154214161&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2127078</commentid>
    <comment_count>2</comment_count>
    <who name="Ahmad Saleem">ahmad.saleem792</who>
    <bug_when>2025-07-01 10:57:26 -0700</bug_when>
    <thetext>@Will - does it affect any live website or service? Just trying to understand impact.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2127607</commentid>
    <comment_count>3</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2025-07-03 06:43:07 -0700</bug_when>
    <thetext>This is the getUserMedia call that is likely triggering audio ducking.
@Will, to prevent audio ducking, could you try `echoCancellation: false` as part of audio options given to getUserMedia?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>2127670</commentid>
    <comment_count>4</comment_count>
    <who name="Will Field-Thompson">webkitbugzilla</who>
    <bug_when>2025-07-03 10:51:44 -0700</bug_when>
    <thetext>@Ahmad Yep! It affects our service at app.speeko.co. Relatively early days for this project — we are building this out as an equivalent to our native iOS/macOS apps.

@youenn I edited `getUserMedia({ audio: true })` to be `getUserMedia({ audio: { echoCancellation: false } })` and the results are fascinating (Safari Version 18.5 (20621.2.5.11.8) running on macOS 15.5 (24F74)). The first time I did this, the audio was ducked for a 2-3 seconds, then came back to regular volume (while Safari was still recording). Every time after that (even across reloads), the ducking doesn&apos;t happen. If I quit Safari &amp; reopen it, then the initial ducking occurs again.

This is still something I&apos;d like to see fixed (especially since echo cancellation is such a nice feature), but that&apos;s a pretty solid workaround for us!</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>475588</attachid>
            <date>2025-06-17 11:23:27 -0700</date>
            <delta_ts>2025-06-17 11:23:27 -0700</delta_ts>
            <desc>The sample HTML which causes the issue.</desc>
            <filename>record.html</filename>
            <type>text/html</type>
            <size>1976</size>
            <attacher name="Will Field-Thompson">webkitbugzilla</attacher>
            
              <data encoding="base64">PCFkb2N0eXBlIGh0bWw+CjxodG1sIGxhbmc9ImVuIj4KICAgIDxoZWFkPgogICAgICAgIDxtZXRh
IGNoYXJzZXQ9IlVURi04Ii8+CiAgICAgICAgPHRpdGxlPkJ1ZzwvdGl0bGU+CiAgICA8L2hlYWQ+
CiAgICA8Ym9keT4KICAgICAgICA8YnV0dG9uIGlkPSJyZWNvcmQiPlJlY29yZDwvYnV0dG9uPgog
ICAgICAgIDxidXR0b24gaWQ9InN0b3AiPlN0b3A8L2J1dHRvbj4KICAgICAgICA8YXVkaW8gaWQ9
InBsYXliYWNrIiBjb250cm9scy8+CiAgICA8L2JvZHk+CiAgICA8c2NyaXB0PgogICAgIGNvbnN0
IHJlY29yZEJ1dHRvbiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZWNvcmQiKTsKICAgICBj
b25zdCBzdG9wQnV0dG9uID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInN0b3AiKTsKICAgICBj
b25zdCBwbGF5YmFjayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJwbGF5YmFjayIpOwogICAg
IGxldCBibG9icyA9IFtdOwogICAgIGZ1bmN0aW9uIHVwZGF0ZVJlY29yZGluZ1N0YXRlKGlzUmVj
b3JkaW5nKSB7CiAgICAgICAgIHJlY29yZEJ1dHRvbi5kaXNhYmxlZCA9IGlzUmVjb3JkaW5nOwog
ICAgICAgICBzdG9wQnV0dG9uLmRpc2FibGVkID0gIWlzUmVjb3JkaW5nOwogICAgICAgICBwbGF5
YmFjay5oaWRkZW4gPSBpc1JlY29yZGluZzsKICAgICB9CgogICAgIHVwZGF0ZVJlY29yZGluZ1N0
YXRlKGZhbHNlKTsKICAgICBwbGF5YmFjay5oaWRkZW4gPSB0cnVlOwoKICAgICBsZXQgbWVkaWFS
ZWNvcmRlcjsKICAgICAKICAgICByZWNvcmRCdXR0b24ub25jbGljayA9ICgpID0+IHsKICAgICAg
ICAgbmF2aWdhdG9yLm1lZGlhRGV2aWNlcy5nZXRVc2VyTWVkaWEoeyBhdWRpbzogdHJ1ZSB9KQog
ICAgICAgICAgICAgICAgICAudGhlbigoc3RyZWFtKSA9PiB7CiAgICAgICAgICAgICAgICAgICAg
ICBibG9icyA9IFtdOwogICAgICAgICAgICAgICAgICAgICAgbWVkaWFSZWNvcmRlciA9IG5ldyBN
ZWRpYVJlY29yZGVyKAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVhbSwKICAgICAgICAg
ICAgICAgICAgICAgICAgICB7IG1pbWVUeXBlOiAiYXVkaW8vbXA0IiB9CiAgICAgICAgICAgICAg
ICAgICAgICApOwogICAgICAgICAgICAgICAgICAgICAgbWVkaWFSZWNvcmRlci5hZGRFdmVudExp
c3RlbmVyKAogICAgICAgICAgICAgICAgICAgICAgICAgICdkYXRhYXZhaWxhYmxlJywKICAgICAg
ICAgICAgICAgICAgICAgICAgICAoZXZlbnQpID0+IGJsb2JzLnB1c2goZXZlbnQuZGF0YSkKICAg
ICAgICAgICAgICAgICAgICAgICk7CiAgICAgICAgICAgICAgICAgICAgICBtZWRpYVJlY29yZGVy
LmFkZEV2ZW50TGlzdGVuZXIoCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N0b3AnLAogICAg
ICAgICAgICAgICAgICAgICAgICAgICgpID0+IHsKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgYmxvYiA9IG5ldyBCbG9iKGJsb2JzLCB7IHR5cGU6IG1lZGlhUmVjb3JkZXIubWlt
ZVR5cGUgfSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYXliYWNrLnNyY09iamVj
dCA9IGJsb2I7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZVJlY29yZGluZ1N0
YXRlKGZhbHNlKTsKICAgICAgICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAg
ICAgICApCiAgICAgICAgICAgICAgICAgICAgICBtZWRpYVJlY29yZGVyLnN0YXJ0KCk7CiAgICAg
ICAgICAgICAgICAgICAgICB1cGRhdGVSZWNvcmRpbmdTdGF0ZSh0cnVlKTsKICAgICAgICAgICAg
ICAgICAgfSk7CiAgICAgfTsKCiAgICAgc3RvcEJ1dHRvbi5vbmNsaWNrID0gKCkgPT4gewogICAg
ICAgICBtZWRpYVJlY29yZGVyLnN0b3AoKTsKICAgICAgICAgZm9yIChjb25zdCB0IG9mIG1lZGlh
UmVjb3JkZXIuc3RyZWFtLmdldFRyYWNrcygpKSB7CiAgICAgICAgICAgICB0LnN0b3AoKTsKICAg
ICAgICAgfQogICAgIH0KCiAgICA8L3NjcmlwdD4KPC9odG1sPgo=
</data>

          </attachment>
      

    </bug>

</bugzilla>