Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Chrome extension microphone capture

I have a browser_action extension where the user can press start and stop in order to capture some audio input. After the file has been recorded I would like to dump its url in the console. The problem is that I cannot get access to the microphone. This is what I have tried so far:

navigator.webkitGetUserMedia - does not work, navigator.webkitGetUserMedia({ audio: true },...); calls the error callback with a MediaDeviceFailedDueToShutdown. I tried looking into that error but I found nothing useful about that. That error is nowhere to be found.

Could you please guide me to the right path? Thank you.

like image 257
Teo Avatar asked Mar 23 '26 05:03

Teo


1 Answers

So it turns out that I have to get the user media from within an html page that is baked into the extension itself. After the user has given access to the microphone, the background script of the extension also gets access to it.

In my case, after installing I launch the welcome.html page where access is being requested:

background.js

chrome.runtime.onInstalled.addListener((details) => {
    if (details.reason.search(/install/g) === -1) {
        return
    }
    chrome.tabs.create({
        url: chrome.runtime.getURL("welcome.html"),
        active: true
    })
})

welcome.js

navigator.mediaDevices.getUserMedia({ audio: true })
.then(stream => {...})
.catch(err => {...})
like image 176
Teo Avatar answered Mar 25 '26 18:03

Teo



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!