Chrome getUserMedia视频不能在本地主机上工作

问题描述:

我想让Chrome的getUserMedia在我的本地主机上工作。Chrome getUserMedia视频不能在本地主机上工作

我的index.php文件是:

<!DOCTYPE html> 
<html> 
    <head> 
     <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> 
     <script type="text/javascript" src="js/script.js"></script> 
     <title></title> 
    </head> 
    <body> 
<video id="MediaStreamVideo" autoplay=""></video>  
    </body> 
</html> 

我的script.js文件是:

var stream; 
var video = document.getElementById('MediaStreamVideo'); 
navigator.webkitGetUserMedia(
    {video: true, audio: true}, // Options 
    function(localMediaStream) { // Success 
     stream = localMediaStream; 
     video.src = window.webkitURL.createObjectURL(stream); 
    }, 
    function(err) { // Failure 
     alert('getUserMedia failed: Code ' + err.code); 
    } 
); 

铬要求我允许使用摄像头和麦克风(我接受),但随后什么都没发生。

它的工作原理罚款jsfidde

任何想法?

+0

你正在运行什么版本的chrome? –

问题应该与脚本的执行顺序有关。视频元素'MediaStreamVideo'在脚本执行时不可用。

它总是一个很好的做法,最后加载脚本。另外,将代码封装在一个函数中并在onload中执行。

+0

将脚本包含在最后还是内联是一种好的做法吗?我一直在头部完成它。 – taco

+0

推迟加载资源(脚本)直到加载初始页面为止是一种很好的做法。将所有脚本放在主体的末尾。 –

+0

感谢您的回复。无论是在主体的末尾,还是使用[jQuery's .ready()](http://api.jquery.com/ready/)函数 - 这就足够了,正确吗?从我读过的内容来看,它完成了同样的事情。 – taco

如果您使用的是Chrome浏览器,并且使用的是file:///网址,则需要使用命令行参数--allow-file-access-from-files来致电Chrome。

您可能想查看this SO Q&A