在浏览器中获取用户媒体的最新技术是什么?

时间:2016-05-21 08:35:04

标签: html5 browser getusermedia

来自MDN's page on Navigator.getUserMedia()

  

已过时
  此功能已从Web标准中删除。虽然有些浏览器可能仍然支持它,但它正在被删除。不要在旧项目或新项目中使用它。使用它的页面或Web应用程序可能随时中断。

...那么在天堂我们如何在浏览器中访问用户媒体?我看到一些完全能够检测智能手机相机的webapps,那么解决方案是什么?

例如,这不再适用http://www.html5rocks.com/en/tutorials/getusermedia/intro/

1 个答案:

答案 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):

&#13;
&#13;
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;
&#13;
&#13;

规范已经确定,因此填充的主要原因是Chrome正在迎头赶上(请参阅此Google Developers post on choosing input devices)。不同之处在于承诺的回报以及new constraints syntax

  • Chrome Canary(52)原生支持mediaDevices.getUserMediavideo.srcObject
  • Chrome for Android仍需要填充。

旧的navigator.webkitGetUserMedia(Chrome / Opera),navigator.mozGetUserMedia(Firefox)和navigator.getUserMedia(Edge)是为了向后兼容(目前为止)。