WebKit's createMediaStreamSource has a bug which requires it to be called very soon after the stream is created. If called after a delay it appears to produce a silent webaudio node. navigator.mediaDevices.getUserMedia({ audio: true }).then((stream) => { cleanupJobs.push(() => stream.getTracks().forEach(track => track.stop())); if (useDelay) { // Bug occurs return delay(500).then(() => stream); } // Bug does not occur return stream; }).then((stream) => { const source = audioCtx.createMediaStreamSource(stream); // ... Visualize audio data from source }; Super easy repro here: https://output.jsbin.com/hegijaz Built from github hash 141b0ddff819d52e6e8ceeed29dc72fba5d4b1a6, git-svn-id: http://svn.webkit.org/repository/webkit/trunk@216354 268f45cc-cd09-0410-ab3c-d52691b4dbfc
<rdar://problem/32266432>
The jsbin doesn't repro the issue for me anymore in a more recent build (git b54ca7d). However I suspect the issue is still there for remote streams. Please get in touch for more details if needed.
The problem is evident here merely changing streams and setting up a new mediastreamsource. on IOS https://jsfiddle.net/danrossi303/gsLy96hc/3/