【发布时间】:2020-11-09 19:56:01
【问题描述】:
在有人认为 getUserMedia 必须通过本地或 https 之前,我知道,我的网站是 https,当我通过 localhost 启动时,我使用 VSCode @ 端口 5500 的实时服务器插件启动。
我的问题,我正在使用 getUserMedia() 来获取用户麦克风的实时更新,并将其传递给我的程序来做一些事情。在我的“launch.json”中,我有这个
{
"name": "Launch Chrome",
"request": "launch",
"type": "pwa-chrome",
"url": "http://127.0.0.1:5500",
"webRoot": "${workspaceFolder}"
}
这很好用。但是,如果我将“类型”更改为“铬”,即
{
"name": "Launch Chrome",
"request": "launch",
"type": "chrome",
"url": "http://127.0.0.1:5500",
"webRoot": "${workspaceFolder}"
}
代码不再有效,并且程序没有拾取我的麦克风,即使 chrome 页面显示“此网站正在使用您的麦克风”。通知。
这意味着当需要将该网站上线到我的实际网站上时,麦克风没有被拾起,软件也无法工作。这是获取usermedia的代码。
function getMicrophoneAccess(){
let constraints = {audio:true};
navigator.mediaDevices.getUserMedia(constraints).then(function(stream){
source = audioContext.createMediaStreamSource(stream);
let ready = new Event('streamReady');
dispatchEvent(ready);
});
}
然后是我实际使用我的流的地方,
function runSoundAnalysis(){
analyser.getByteFrequencyData(soundDataArray);
let averageSound = 0;
for (let i = 0; i < soundDataArray.length; i+=2){
averageSound += soundDataArray[i];
}
averageSound /= soundDataArray.length / 2;
if (averageSound != 0){
console.log(averageSound);
}
return averageSound;
}
在“chrome”上运行时,在程序的所有循环中,averageSound 确实 = 0。
感谢您的帮助:)
编辑:要添加,我检查并在 Firefox 上工作,所以我一定是误解了如何使用 chrome 的 getUserMedia() 或其他东西。
【问题讨论】:
标签: javascript google-chrome getusermedia