node package manager

get-user-media-promise

get-user-media-promise

Build Status npm-version bower-version

Light-weight Ponyfill/Polyfill for navigator.mediaDevices.getUserMedia (the newer newer Promise-based API). Wraps the older callback-based navigator.getUserMedia when necessary.

Behaves as a ponyfill (doesn't touch globals) when used via browserify/webpack/etc. or as a polyfill (sets globals) when included as a standalone library.

Less than 0.5kb after minification and gzipping (about 5% of the size of the other getUserMedia shim).

Note: this will only work in web browsers, and only fairly current ones at that.

Additionally, this library does not attempt to reformat constraints for cross-browser support, so if you need advanced audio/video constraints, the other library may be a better choice.

Installation:

npm

npm install --save get-user-media-promise

Bower

bower install --save get-user-media-promise

Standalone

Download the latest release from GitHub.

Usage:

  • With a bundler such as Require.js, Browserify, or WebPack: require() the module and it returns a getUserMedia() method that will always return a Promise or Promise-like object.
  • As a standalone library: when neither define() nor module are defined, the module will go into polyfill mode, setting navigator.mediaDevices.getUserMedia() if that method is not already defined or doing nothing if it is.

Then:

var getUserMedia = require('get-user-media-promise'); // or navigator.mediaDevices.getUserMedia when used standalone 
 
getUserMedia({audio: true, video: true})
  .then(function(mediaStream) {
    console.log(mediaStream);
  })
  .catch(function(error) {
    console.log('error');
  });

Check browser support ahead of time via the isSupported property:

console.log(getUserMedia.isSupported);