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

时间:2013-01-14 12:20:56

标签: webrtc getusermedia

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

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

为什么这种奇怪的行为?

7 个答案:

答案 0 :(得分:5)

当您在文件系统(文件://前缀)下打开html文件时,Chrome会自动阻止getUserMedia权限。您必须在本地运行服务器。

我启动了这样的sinatra服务器:

# server.rb
require 'sinatra'

get '/' do
  File.read('index.html')
end

然后放弃它。

$ gem install sinatra
$ ruby server.rb

http://localhost:4567

答案 1 :(得分:2)

由于安全性,Chrome无法打开用户媒体,例如WebCam执行file:/*文档时。

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

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

N.B。指定命令行选项时,请确保没有运行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

答案 2 :(得分:2)

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

如果您安装了PHP并且您不想设置Apache或其他更高级的Web服务器,可能最简单的方法是以这种方式运行内部PHP Web服务器(假设您的Web文件位于/ home / user /网/):

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(假设您的测试文件名为webrtc.html):

http://127.0.0.1:3000/webrtc.html

答案 3 :(得分:1)

只是一些故障排除建议:

  • 检查chrome:// settings / content(向下滚动到“Media”),查看您是否意外选择了该网站以始终允许或始终拒绝。 (我在Chrome 26 [dev]上;这可能位于Chrome 24上的其他位置。)

  • 同时尝试重新启动浏览器 - 根据我的经验,这一点Chrome仍然非常错误,有时重启会修复它。

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

答案 4 :(得分:1)

您是否通过file://加载文件?铬似乎根本无法访问这些文件,完全忽略了请求。只是尝试了自己,并在将文件上传到开发服务器后,它工作正常。

即使将其设置为允许,它仍然无法与file://。

一起使用

答案 5 :(得分:1)

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

答案 6 :(得分:0)

此答案适用于Chrome

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

<强>苹果

在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)\Google\Chrome\Application\chrome.exe" --allow-file-access-from-files C:\path\to\file.html

希望这个答案有所帮助!