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

标签 html browser getusermedia

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

Deprecated
This feature has been removed from the Web standards. Though some browsers may still support it, it is in the process of being dropped. Do not use it in old or new projects. Pages or Web apps using it may break at any time.

...那么我们到底如何才能在浏览器中访问用户媒体呢?我看到一些网络应用程序完全能够检测智能手机摄像头,那么解决方案是什么?

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

最佳答案

目前最先进的技术是 navigator.mediaDevices.getUserMedia使用adapter.js polyfill,它是一个垫片而不是一个库,因为它的目标是消失一次 all browsers are up to spec .

以下内容适用于 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>";
<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>

规范已经确定,所以 polyfill 的主要原因是 Chrome 正在迎头 catch (请参阅此 Google Developers post on choosing input devices )。区别在于 promise 的返回,以及 new constraints syntax .

  • Chrome Canary (52) 原生支持 mediaDevices.getUserMediavideo.srcObject
  • Android 版 Chrome 仍然需要 polyfill。

旧的 navigator.webkitGetUserMedia (Chrome/Opera)、navigator.mozGetUserMedia (Firefox) 和 navigator.getUserMedia (Edge) 已经存在为了向后兼容(目前)。

关于html - 在浏览器中获取用户媒体的最新技术是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37360658/

相关文章:

html - "Error: Unsupported audio type or invalid file path"用于 Internet Explorer 10 中的 HTML5 音频标签

networking - 如果您可以在浏览器中访问比 TCP 更低的级别

webrtc - 渐进式 Web 应用程序 : Error Accessing navigator. mediaDevices.getUserMedia?

html - 浏览器鼠标按下(并按住)然后将光标对象拖出边界,对象边框变为蓝色,我该如何控制?

html - 在 div 中自动拟合 Markdown 图像

browser - 防止浏览器中的 iframe 缓存

javascript - 从 Electron 应用程序将 desktopCapturer 保存到视频文件

javascript - 当 React Native apk 在没有电缆的情况下安装在物理设备上时,没有相机/媒体流

html - SVGZ 不显示

css - :hover CSS is not working?