MediaDevices
============

La interfaz **`MediaDevices`** brinda acceso a dispositivos de entrada de medios conectados, como cámaras y micrófonos, así como a compartir pantalla. En esencia, le permite obtener acceso a cualquier fuente de hardware de datos multimedia.

EventTarget

MediaDevicesPropiedades de instancia
------------------------

*Hereda las propiedades de su interfaz padre, `EventTarget`.*

Métodos de instancia
--------------------

*Hereda métodos de su interfaz padre, `EventTarget`.*

`enumerateDevices()` (en-US)

Obtiene una matriz de información sobre los dispositivos de entrada y salida de medios disponibles en el sistema.

`getSupportedConstraints()` (en-US)

Devuelve un objeto conforme a `MediaTrackSupportedConstraints` (en-US) que indica qué propiedades restringibles se admiten en la interfaz `MediaStreamTrack`. Consulte la API de transmisión de medios (en-US) para obtener más información sobre las restricciones y cómo usarlas.

`getDisplayMedia()` (en-US)

Solicita al usuario que seleccione una pantalla o parte de una pantalla (como una ventana) para capturar como `MediaStream` (en-US) para compartir o grabar. Devuelve una promesa que se resuelve en un `MediaStream`.

`getUserMedia()`

Con el permiso del usuario a través de un aviso, enciende una cámara y/o un micrófono en el sistema y proporciona un `MediaStream` (en-US) que contiene una pista de video y/o una pista de audio con la entrada.

`selectAudioOutput()` (en-US) 
Experimental

Pide al usuario que seleccione un dispositivo de salida de audio específico.

Eventos
-------

`devicechange` (en-US)

Se activa cuando un dispositivo de entrada o salida de medios se conecta o retira de la computadora del usuario.

Ejemplo
-------


```js
// Coloque las variables en el ámbito global para que estén disponibles
// en la consola del navegador.
const video = document.querySelector("video");
const constraints = {
  audio: false,
  video: true,
};

navigator.mediaDevices
  .getUserMedia(constraints)
  .then((stream) => {
    const videoTracks = stream.getVideoTracks();
    console.log("Tengo transmisión con las restricciones:", constraints);
    console.log(`Usando el dispositivo de vídeo: ${videoTracks[0].label}`);
    stream.onremovetrack = () => {
      console.log("Transmisión finalizada");
    };
    video.srcObject = stream;
  })
  .catch((error) => {
    if (error.name === "OverconstrainedError") {
      console.error(
        `La resolución ${constraints.video.width.exact}x${constraints.video.height.exact} px no es compatible con su dispositivo.`,
      );
    } else if (error.name === "NotAllowedError") {
      console.error(
        "Debe otorgar permiso a esta página para acceder a su cámara y micrófono.",
      );
    } else {
      console.error(`getUserMedia error: ${error.name}`, error);
    }
  });
```

Especificaciones
----------------

| Specification |
| --- |
| Media Capture and Streams # mediadevices |

Compatibilidad con navegadores
------------------------------

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

Véase también
-------------

* API de transmisión y captura de medios: La API de la que forma parte esta interfaz.
* API de captura de pantalla: La API que define el método `getDisplayMedia()` (en-US).
* API WebRTC
* `Navigator.mediaDevices` (en-US): Devuelve una referencia a un objeto `MediaDevices` que se puede usar para acceder a los dispositivos.
* CameraCaptureJS: Captura y reproducción de video HTML usando `MediaDevices` y la API de grabación de MediaStream
* OpenLang: Aplicación web de laboratorio de lenguaje de video HTML que utiliza `MediaDevices` y la API de grabación de MediaStream para la grabación de video