Changes

Jump to: navigation, search

Media/getUserMedia

463 bytes added, 21:30, 2 April 2015
no edit summary
== Goal ==
* Define and implement navigator.mediaDevices.getUserMedia() and associated functions with the W3C's WebRTC WG and Media Capture Task Force
* Spec is at Candidate Recommendation. Current editor's draft: [http://dev.w3.org/2011/webrtc/editor/getusermedia.html W3 getUserMedia Editor's Draft].
* Scenarios: [https://dvcs.w3.org/hg/dap/raw-file/tip/media-stream-capture/scenarios.html W3 MediaStream Capture Scenarios]
== Status ==
* Implemented getUserMedia on Desktop (Windows, Mac and Linux), Android, and B2G. Enabled in FF20+.
*Implemented new and old API as of FF36:** <b><tt>navigator.mediaDevices.getUserMedia</tt></b> - modern promise-returning version (unprefixed).* Still * <b><tt>navigator.mozGetUserMedia()</tt></b> - legacy backwards-compatible version (prefixed as mozGetUserMedia).* Capture resolution can be controlled with standard constraints for width, height, frameRate and (on mobile)facingMode can be used to choose between front/back camera. The spec Supported in FF32+.* Promise-based mediaDevices.getUserMedia API is at Candidate Recommendationsupported in FF36+.*Full constraints syntax with plain values and ideal-algorithm supported in FF38+.* Input device enumeration through mediaDevices.enumerateDevices() is supported in FF39+.* Can be turned off by setting <b><tt>media.navigator.enabled</tt></b> and <tt><b> media.peerconnection.enabled</b></tt> to false.
* Permissions UI is supported, allowing selecting devices or rejecting permission, with notifications that a tab is using a mic or camera, and a global indicator on the desktop to locate tabs using mics/cameras.
* Persistent permissions are supported.
* Explicit revocation of permission is supported.
* Supports multiple tabs getting data from the same mic or camera (if the user allows)
* Capture resolution can be controlled with standard constraints for width, height, frameRate and (on mobile) facingMode can be used to choose between front/back camera. Supported in FF32+.
* Audio rate is fixed at 16000Hz.
* Echo cancellation is on by default, but connecting a captured audio stream directly to an audio element on the same system may still cause feedback unless a headset is used.
* PromiseLimited screen-based mediaDevices.getUserMedia API is supported in FF36+.* Input device enumeration through mediaDevices.enumerateDevices() is supported in FF39+sharing support under a pref.
== Examples ==
Includes, but not limited to:
* Name :-)
* Firefox does not support Chrome's outdated constraints syntax ('mandatory', 'minWidth' etc.)
* Firefox does not support MediaStreamTrack.getSources(), an outdated version of enumerateDevices.
* Firefox leaves the mic/camera active (light on, etc) until the application explicitly calls mediastream.stop(). Chrome turns them on when assigned to a media element or PeerConnection, and off again when removed.
** Note that if an application drops all references to a MediaStream but does not call stop(), the camera will remain active for some period of time (or until you navigate to another page in the tab or close the tab).
** This behavior may change in the future
* Both now support window.URL.createObjectURL(stream), though Mozilla recommends against using it unless you have to. We expect Chrome to support srcObject = stream soon (perhaps prefixed as we are currently)
* Firefox does not support Chrome's outdated constraints syntax.
* Firefox does not support MediaStreamTrack.getSources(), an outdated version of enumerateDevices.
* Use the [https://github.com/webrtc/adapter adapter.js] shim to bridge cross-browser differences (constraints polyfill should be forthcoming).
 
== Todo ==
 
* mediaDevices.getSupportedConstraints().
* More constraints to implement, like deviceId.
24
edits

Navigation menu