WebRTC - 浏览器不要求本地html文件的麦克风访问权限



我有一些简单的webRTC代码,它使用getUserMedia来访问用户的麦克风。现在,当我在浏览器中加载html文件(保存在我的localhost)时,浏览器不要求mic访问权限,因此无法访问。

但是当我在w3schools.com编辑器中运行相同的html时,它要求麦克风访问权限,并允许它访问我的麦克风,它工作得很好…

为什么这种奇怪的行为?

当你打开一个html文件right off文件系统(file://prefix), Chrome将自动阻止getUserMedia权限。你必须在本地运行服务器。

我启动了一个sinatra服务器,像这样:

# server.rb
require 'sinatra'
get '/' do
  File.read('index.html')
end

那就给我吧。

$ gem install sinatra
$ ruby server.rb

http://localhost:4567

由于安全原因,Chrome在执行file:/*文档时不会打开用户媒体,例如WebCam。

您可以通过使用--disable-web-security命令行选项启动chrome来覆盖安全策略。

对于测试,也检查--use-fake-device-for-media-stream选项。

注意:当指定命令行选项时,确保没有chrome/chromium进程正在运行。 P。S试着创建一个包含

的文件test.html
<!DOCTYPE HTML>
<video autoplay/>
<script>
  navigator.webkitGetUserMedia({audio:true,video:true},
    function(stream){
      document.querySelector('video').src =
        URL.createObjectURL(stream);
    });
</script>

然后杀死所有的chrome实例,然后像这样启动chrome:

 chrome.exe --use-fake-device-for-media-stream --disable-web-security test.html

此行为是由Chrome浏览器的安全设置引起的。

如果你已经安装了PHP,你不想安装Apache或其他更高级的web服务器,可能最简单的方法是这样运行内部PHP web服务器(假设你的web文件在/home/user/web/):

php -S 127.0.0.1:3000 -t /home/user/web/

下面是参数的描述:

-S <addr>:<port> Run with built-in web server.

-t <docroot> Specify document root <docroot> for built-in web server.

运行服务器后,启动浏览器并打开此URL(假设您的测试文件名为webtc .html):

http://127.0.0.1:3000/webrtc.html

只是一些故障排除建议:

  • 检查chrome://设置/内容(向下滚动到"媒体"),看看你是否不小心选择了该网站始终允许或始终拒绝。(我在Chrome 26[dev];这可能位于Chrome 24的其他地方)

  • 也尝试重新启动浏览器-这一点Chrome仍然是相当多的错误,在我的经验,有时重新启动修复它。

  • 并且确保在getUserMedia()调用中有一个错误处理程序-那里可能有一些额外的信息。

是否通过file://加载文件?似乎chromium根本不允许访问这些文件,并且完全忽略了请求。我自己试了一下,上传文件到开发服务器后,它工作得很好。

即使将其设置为允许总是它仍然不起作用的文件://

如果不使用本地服务器,就不能在本地运行使用getUsermedia API的HTML5。使用WampServer并将HTML5文件放在www文件夹中。

这个答案是chrome

在Chrome中,您可以使用--allow-file-access-from-files标志来允许从本地文件访问网络摄像头。

Mac

在mac上,你可以打开终端并输入:

/Applications/Google Chrome.app/Contents/MacOS/Google Chrome --allow-file-access-from-files /path/to/file.html

/path/to/file.html更改为您的路径

在Windows中,您可以创建快捷方式。右键单击Google Chrome并在菜单中选择:Copy To -> Desktop (shortcut),然后右键单击快捷方式并单击properties添加标志:

"C:Program Files (x86)GoogleChromeApplicationchrome.exe" --allow-file-access-from-files C:pathtofile.html

希望这个答案有帮助!

相关内容

  • 没有找到相关文章

最新更新