来自MDN's page on Navigator.getUserMedia():
已过时
此功能已从Web标准中删除。虽然有些浏览器可能仍然支持它,但它正在被删除。不要在旧项目或新项目中使用它。使用它的页面或Web应用程序可能随时中断。
...那么在天堂我们如何在浏览器中访问用户媒体?我看到一些完全能够检测智能手机相机的webapps,那么解决方案是什么?
例如,这不再适用http://www.html5rocks.com/en/tutorials/getusermedia/intro/
答案 0 :(得分:2)
目前最先进的navigator.mediaDevices.getUserMedia
使用adapter.js polyfill,这是一个比图书馆更多的垫片,因为它的目标是all browsers are up to spec消失一次。< / p>
以下适用于Chrome,Chrome for Android,Firefox,Firefox for Android,Edge和Opera(在Chrome中使用https fiddle):
navigator.mediaDevices.getUserMedia({ video: true, audio: true })
.then(stream => video.srcObject = stream)
.catch(e => log(e.name + ": "+ e.message));
var log = msg => div.innerHTML += msg + "<br>";
&#13;
<script src="https://webrtc.github.io/adapter/adapter-latest.js"></script>
<video id="video" width="160" height="120" autoplay></video><br>
<div id="div"></div>
&#13;
规范已经确定,因此填充的主要原因是Chrome正在迎头赶上(请参阅此Google Developers post on choosing input devices)。不同之处在于承诺的回报以及new constraints syntax。
mediaDevices.getUserMedia
和video.srcObject
。旧的navigator.webkitGetUserMedia
(Chrome / Opera),navigator.mozGetUserMedia
(Firefox)和navigator.getUserMedia
(Edge)是为了向后兼容(目前为止)。