--- title: MediaDevices slug: Web/API/MediaDevices translation_of: Web/API/MediaDevices ---
{{APIRef("Media Capture and Streams")}}{{SeeCompatTable}}

As interfaces MediaDevices proporcionam accesso aos dispositivos de entrada de midia conectados, como câmeras e microfones, bem como compartilhamento de tela. Essencialmente, isso te permite obter acesso a qualquer mídia gerada pelo hardware.

Propriedades

As mesmas propriedades de {{domxref("EventTarget")}}.

Manipuladores de Evento

{{ domxref("MediaDevices.ondevicechange") }}
O manipulador de evento para o evento {{event("devicechange")}}. Esse evento é entregue ao objeto MediaDevices quando uma entrada de mídia ou dispositivo de saída é conectado ou removido do computador do usuário.

Métodos

Mesmos métodos de {{domxref("EventTarget")}}.

{{ domxref("EventTarget.addEventListener()") }}
Registra um manipulador de eventos para um tipo específico de evento.
{{ domxref("MediaDevices.enumerateDevices()") }}
Obtém um array de informações sobre a entrada de midia e dispositivos de saída disponíveis no sistema.
{{domxref("MediaDevices.getSupportedConstraints()")}}
Retorna um objeto consoante com {{domxref("MediaTrackSupportedConstraints")}} indicando quais propriedades restritivas são suportadas na interface {{domxref("MediaStreamTrack")}}. Veja {{SectionOnPage("/en-US/docs/Web/API/Media_Streams_API", "Capabilities and constraints")}} para aprender mais sobre restrições e como usá-las.
{{ domxref("MediaDevices.getUserMedia()") }}
Após a permissão do usuário (pedida através de um prompt), liga a câmera, microfone e/ou a tramissão de tela no sistema e fornece uma {{domxref("MediaStream")}} contendo uma faixa de vídeo e/ou áudio com a entrada.
{{ domxref("EventTarget.removeEventListener()") }}
Remove um escutador de evento.

Exemplo

'use strict';

// Coloca as variáveis no escopo global para torná-las disponível para o Console do navegador.
var video = document.querySelector('video');
var constraints = window.constraints = {
  audio: false,
  video: true
};
var errorElement = document.querySelector('#errorMsg');

navigator.mediaDevices.getUserMedia(constraints)
.then(function(stream) {
  var videoTracks = stream.getVideoTracks();
  console.log('Got stream with constraints:', constraints);
  console.log('Using video device: ' + videoTracks[0].label);
  stream.onremovetrack = function() {
    console.log('Stream ended');
  };
  window.stream = stream; // torna as variáveis disponíveis para o Console do navegador
  video.srcObject = stream;
})
.catch(function(error) {
  if (error.name === 'ConstraintNotSatisfiedError') {
    errorMsg('A resolução ' + constraints.video.width.exact + 'x' +
        constraints.video.width.exact + ' px não é suportada pelo seu dispositivo.');
  } else if (error.name === 'PermissionDeniedError') {
    errorMsg('As permissões para usar sua câmera e microfone não foram fornecidas. ' +
      'Você precisa permitir o acesso da página aos seus dispositivos para ' +
      'que a demo funcione.');
  }
  errorMsg('getUserMedia error: ' + error.name, error);
});

function errorMsg(msg, error) {
  errorElement.innerHTML += '<p>' + msg + '</p>';
  if (typeof error !== 'undefined') {
    console.error(error);
  }
}

Especificações

Especificação Status Comentário
{{SpecName('Media Capture', '#mediadevices', 'MediaDevices')}} {{Spec2('Media Capture')}} Definição inicial

Compatibilidade

{{CompatibilityTable}}
Recurso Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari (WebKit)
Suporte Básico {{CompatChrome(47)}} {{CompatVersionUnknown}} {{CompatGeckoDesktop("36.0")}} {{CompatNo}} {{CompatOpera(30)}} {{CompatNo}}
enumerateDevices() {{CompatChrome(51)}} {{CompatUnknown}} {{CompatUnknown}} {{CompatNo}} {{CompatOpera(38)}} {{CompatNo}}
getSupportedConstraints() {{CompatChrome(53)}} {{CompatUnknown}} {{CompatGeckoDesktop(44)}} {{CompatNo}} {{CompatOpera(40)}} {{CompatNo}}
Eventos ondevicechange e devicechange {{CompatVersionUnknown}} {{CompatUnknown}} {{CompatGeckoDesktop(51)}}[1] {{CompatNo}} {{CompatVersionUnknown}} {{CompatNo}}
Captura de áudio estéreo {{CompatUnknown}} {{CompatUnknown}} {{CompatGeckoDesktop(55)}} {{CompatNo}} {{CompatUnknown}} {{CompatNo}}
Recurso Android Webview Chrome para Android Edge Firefox Mobile (Gecko) Firefox OS IE Mobile Opera Mobile Safari Mobile Chrome para Android
Suporte Básico {{CompatChrome(47)}} {{CompatChrome(47)}} {{CompatVersionUnknown}} {{CompatGeckoMobile("36.0")}} 2.2 {{CompatNo}} {{CompatOperaMobile(30)}} {{CompatNo}} {{CompatNo}}
enumerateDevices() {{CompatChrome(51)}} {{CompatChrome(51)}} {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatNo}} {{CompatOperaMobile(38)}} {{CompatNo}} {{CompatNo}}
getSupportedConstraints() {{CompatChrome(53)}} {{CompatChrome(52)}} {{CompatUnknown}} {{CompatGeckoMobile(50)}} {{CompatUnknown}} {{CompatNo}} {{CompatOperaMobile(40)}} {{CompatNo}} {{CompatNo}}
Eventos ondevicechange e devicechange {{CompatVersionUnknown}} {{CompatVersionUnknown}} {{CompatUnknown}} {{CompatGeckoMobile(51)}}[1] {{CompatUnknown}} {{CompatNo}} {{CompatVersionUnknown}} {{CompatNo}} {{CompatNo}}
Captura de áudio estéreo {{CompatUnknown}} {{CompatUnknown}} {{CompatUnknown}} {{CompatNo}} {{CompatUnknown}} {{CompatNo}} {{CompatUnknown}} {{CompatNo}} {{CompatNo}}

[1] O suporte para o evento devicechange e para {{domxref("MediaDevices.ondevicechange")}} começou no Firefox 51, mas somente pra Mac, e desabilitado por padrão. Ele pode ser habilitado configurando a preferência media.ondevicechange.enabled para true. O suporte para esse evendo foi adicionado para Linux e Windows — ativado por padrão — a partir do Firefox 52.

Veja também