Javascript getUserMedia()在普通chrome中不起作用,但在启动pwa chrome时起作用
在有人评论getUserMedia必须通过本地或https之前,我知道,我的网站是https,当我通过本地主机启动时,我使用VSCode@port 5500的实时服务器插件启动 我的问题是,我正在使用getUserMedia()获取用户麦克风的实时更新,并将其传递到我的程序中进行处理。在我的“launch.json”中,我有一个Javascript getUserMedia()在普通chrome中不起作用,但在启动pwa chrome时起作用,javascript,google-chrome,getusermedia,Javascript,Google Chrome,Getusermedia,在有人评论getUserMedia必须通过本地或https之前,我知道,我的网站是https,当我通过本地主机启动时,我使用VSCode@port 5500的实时服务器插件启动 我的问题是,我正在使用getUserMedia()获取用户麦克风的实时更新,并将其传递到我的程序中进行处理。在我的“launch.json”中,我有一个 { "name": "Launch Chrome", "request": "la
{
"name": "Launch Chrome",
"request": "launch",
"type": "pwa-chrome",
"url": "http://127.0.0.1:5500",
"webRoot": "${workspaceFolder}"
}
这个很好用。然而,如果我将“类型”更改为“chrome”,即
{
"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;
}
函数runSoundAnalysis(){
分析仪。GetByTefFrequencyData(soundDataArray);
设averageSound=0;
对于(设i=0;i
其中,在“chrome”上运行时,averageSound在程序的所有循环中均为0
谢谢你的帮助:)
编辑:要添加,我选中了,它可以在firefox上运行,所以我一定是错误地解释了如何使用chrome的getUserMedia()或其他东西。找到了答案,在普通chrome中,它要求在将状态设置为“live”之前必须调用audioContext.resume()。我只是在我的初始化函数中调用了它,现在它可以工作了