navigator.getUserMedia
======================

**Deprecated:** This feature is no longer recommended. Though some browsers might still support it, it may have already been removed from the relevant web standards, may be in the process of being dropped, or may only be kept for compatibility purposes. Avoid using it, and update existing code if possible; see the compatibility table at the bottom of this page to guide your decision. Be aware that this feature may cease to work at any time.

O método Navigator.getUserMedia() atualmente esta *deprecated* (obsoleto), ele é responsável por pedir a permissão do usuário para usar até 1 dispositivo de entrada de vídeo (como câmera, ou tela compartilhada) e até 1 dispositivo de entrada de áudio (como o microfone) como fonte para o stream de mídia (pode ser representado por uma instância `MediaStream`).

Se o usuário der permissão, a MediaStream (o *track* do video e/ou audio) , é entregue ao *callback* de sucesso, se a permissão é negada, pode ser que não haja dispositivo compatível ou alguma condição de erro aconteceu, retornando o *callback* de erro com uma instância do objeto `MediaStreamError` , com a descrição do erro que aconteceu, se o usuário não fizer nenhuma escolha, nenhum *callback* é retornado.

Sintaxe
-------
```

navigator.getUserMedia ( permissoes, callbackSucesso, callbackErro );
```

Exemplo
-------

Este é um exemplo de uso da função getUserMedia() com prefixos específicos dos navegadores.


```js
navigator.getMedia =
  navigator.getUserMedia ||
  navigator.webkitGetUserMedia ||
  navigator.mozGetUserMedia ||
  navigator.msGetUserMedia;

navigator.getMedia(
  // permissoes
  {
    video: true,
    audio: true,
  },

  // callbackSucesso
  function (localMediaStream) {
    var video = document.querySelector("video");
    video.src = window.URL.createObjectURL(localMediaStream);
    video.onloadedmetadata = function (e) {
      // Faz algo com o vídeo aqui.
    };
  },

  // callbackErro
  function (err) {
    console.log("O seguinte erro ocorreu: " + err);
  },
);
```

Parâmetros
----------

| parâmetro | Obrigatório/ Opcional | Descrição |
| --- | --- | --- |
| permissoes | Obrigatório | Os tipos de mídia habilitados no objeto LocalMediaStream enviado para a callbackSucesso. |
| callbackSucesso | Obrigatório | A função da aplicação a ser invocada para receber o objeto LocalMediaStream. |
| callbackErro | Opcional | A função a ser invocada na aplicação se a chamada a getUserMedia falhar. |

### permissoes

O parâmetro permissoes é um objeto MediaStreamConstraints com dois membros do tipo Boolean: `video` e `audio`. Estes membros descrevem os tipos de mídia habilitados no objeto LocalMediaStream (en-US). Pelo menos um destes membros deve ser especificado para que o argumento seja validado. Se um membro especificado não for suportado pelo navegador, a função getUserMedia invocará a callbackErro com o erro NOT\_SUPPORTED\_ERROR. Se o navegador não puder encontrar nenhuma fonte de mídia com o tipo especificado, a função getUserMedia invocará a callbackErro com o erro MANDATORY\_UNSATISFIED\_ERR.

Se o valor de um membro não estiver especificado no objeto, o valor padrão deste membro será falso. Veja como configurar o objeto permissoes para obter tanto áudio como vídeo:
```

{ video: true, audio: true }
```

### callbackSucesso

A função getUserMedia invocará a função especificada em callbackSucesso com o objeto LocalMediaStream (en-US) que contém a fonte de mídia. Você pode associar este objeto com o elemento apropriado e trabalhar com ele, como mostrado no exemplo a seguir:


```js
function(localMediaStream) {
   var video = document.querySelector('video');
   video.src = window.URL.createObjectURL(localMediaStream);
   video.onloadedmetadata = function(e) {
      // Faz algo com o vídeo aqui.
   };
}
```

### callbackErro

A função getUserMedia invocará a função especificada em callbackErro com um argumento `code`. Os códigos de erro são descritos abaixo:

| Erro | Descrição |
| --- | --- |
| PERMISSION\_DENIED | O usuário não permitiu acesso a um dispositivo de mídia necessário para essa operação. |
| NOT\_SUPPORTED\_ERROR | Uma mídia especificada não é suportada pelo navegador. |
| MANDATORY\_UNSATISFIED\_ERROR | Nenhuma fonte de mídia do tipo especificado foi encontrada. |

Especificações
--------------

| Specification |
| --- |
| Media Capture and Streams # dom-navigator-getusermedia |

Compatibilidade com navegadores
-------------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Veja também
-----------

* WebRTC (en-US) - a página introdutória a API
* MediaStream API (en-US) - a API para objetos de fonte de mídia
* Taking webcam photos (en-US) - um tutorial sobre como usar a getUserMedia()