Chrome扩展麦克风捕捉

3
我有一个browser_action扩展程序,用户可以按下“开始”和“停止”按钮以捕获一些音频输入。录制完成后,我想在控制台中显示其URL。问题是我无法访问麦克风。我已经尝试过以下方法:
navigator.webkitGetUserMedia - 无效,navigator.webkitGetUserMedia({ audio: true },...);调用错误回调并显示MediaDeviceFailedDueToShutdown。我尝试查找该错误,但没有找到有用的信息。该错误无处可寻。
请您指导我正确的路径。谢谢。

1
不确定,但您可能需要打开一个选项卡并请求权限。 - Daniel Herr
2个回答

12
所以事实证明,我必须从嵌入到扩展本身的HTML页面中获取用户媒体。当用户授权麦克风访问权限后,扩展的后台脚本也可以访问它。
在我的情况下,安装后我启动了"welcome.html"页面,请求音频访问权限:

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 => {...})

6
至少这解释了我经历的地狱... 你能找到更好的东西吗? - Roey
目前这似乎是我测试过的唯一可行方法(在我的Chrome 80.0.3987.122和macOS 10.15.2上测试)。虽然这需要用户安装扩展后再打开额外页面。有人知道其他任何替代手段吗?我已经尝试了选项和弹出窗口,但没有成功。 - fishstick
也许这可以帮助你:https://dev59.com/alUL5IYBdhLWcg3wAECj - Rajat Verma

-2

尝试在manifest.json中添加"audioCapture"到您的权限列表中:

"permissions": ["fullscreen", "audioCapture"]

1
这个权限是针对Chrome应用而不是Chrome扩展,正如OP所请求的那样。https://developer.chrome.com/extensions/declare_permissionshttps://developer.chrome.com/apps/declare_permissions - FrakyDale

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接