API de captura de pantalla
==========================

La API de captura de pantalla incorpora adiciones a la API de Secuencias y Captura de Medios existente para permitir que el usuario seleccione una pantalla o parte de una pantalla (como una ventana) para capturar como una secuencia de medios. Esta transmisión se puede grabar o compartir con otros a través de la red.

Conceptos y uso de la API de captura de pantalla
------------------------------------------------

La API de captura de pantalla es relativamente simple de usar. Su único método es `MediaDevices.getDisplayMedia()` (en-US), cuyo trabajo es pedirle al usuario que seleccione una pantalla o parte de una pantalla para capturar en forma de `MediaStream` (en-US).

Para comenzar a capturar video desde la pantalla, llama a `getDisplayMedia()` en `navigator.mediaDevices`:


```js
captureStream =
  await navigator.mediaDevices.getDisplayMedia(displayMediaOptions);
```


La `Promesa` devuelta por `getDisplayMedia()` se resuelve en un `MediaStream` (en-US) que transmite los medios capturados.

Consulte el artículo Uso de la API de captura de pantalla para obtener una visión más detallada de cómo usar la API para capturar el contenido de la pantalla como una transmisión.

Interfaces
----------

`CaptureController` (en-US)

Proporciona métodos que se pueden usar para manipular aún más una sesión de captura separada de su inicio a través de `MediaDevices.getDisplayMedia()` (en-US). Un objeto `CaptureController` se asocia con una sesión de captura pasándolo a una llamada `getDisplayMedia()` (en-US) como el valor de la propiedad `controller` del objeto de opciones.

Adiciones a la interfaz MediaDevices
------------------------------------

`MediaDevices.getDisplayMedia()` (en-US)

El método `getDisplayMedia()` se agrega a la interfaz `MediaDevices`. Similar a `getUserMedia()`, este método crea una promesa que se resuelve con un `MediaStream` (en-US) que contiene el área de visualización seleccionada por el usuario, en un formato que coincida con las opciones especificadas.

Adiciones a los diccionarios existentes
---------------------------------------

La API de captura de pantalla agrega propiedades a los siguientes diccionarios definidos por otras especificaciones.

### MediaTrackConstraints

`MediaTrackConstraints.cursor` (en-US)

Un `ConstrainDOMString` (en-US) que indica si el cursor debe incluirse o no en la transmisión de la superficie de visualización capturada, y si debe estar siempre visible o si solo debe estar visible mientras el ratón está en movimiento.

`MediaTrackConstraints.displaySurface` (en-US)

Un `ConstrainDOMString` (en-US) que indica qué tipo de superficie de visualización se va a capturar. El valor puede ser `browser`, `monitor` o `window`.

`MediaTrackConstraints.logicalSurface` (en-US)

Indica si el video en la transmisión representa o no una superficie de visualización lógica (es decir, una que puede no ser completamente visible en la pantalla o puede estar completamente fuera de la pantalla). Un valor `true` indica que se va a capturar una superficie de visualización lógica.

`MediaTrackConstraints.suppressLocalAudioPlayback` (en-US)

Controla si el audio que se reproduce en una pestaña continuará reproduciéndose desde los altavoces locales de un usuario cuando se capture la pestaña, o si se suprimirá. Un valor `true` indica que se suprimirá.

### MediaTrackSettings

`MediaTrackSettings.cursor` (en-US)

Una cadena que indica si la superficie de visualización que se está capturando incluye o no el cursor del mouse y, de ser así, si solo es visible mientras el mouse está en movimiento o si siempre está visible. El valor es `always`, `motion` o `never`.

`MediaTrackSettings.displaySurface` (en-US)

Una cadena que indica qué tipo de superficie de visualización se está capturando actualmente. El valor puede ser `browser`, `monitor` o `window`.

`MediaTrackSettings.logicalSurface` (en-US)

Un valor booleano, que es `true` si el video que se captura no corresponde directamente a una sola área de visualización en pantalla.

`MediaTrackSettings.suppressLocalAudioPlayback` (en-US)

Un valor booleano, que es `true` si el audio que se captura no se reproduce en los altavoces locales del usuario.

### MediaTrackSupportedConstraints

`MediaTrackSupportedConstraints.cursor` (en-US)

Un valor booleano, que es `true` si el *user agent* y el dispositivo admiten la restricción `MediaTrackConstraints.cursor` (en-US).

`MediaTrackSupportedConstraints.displaySurface` (en-US)

Un valor booleano, que es `true` si el entorno actual admite la restricción `MediaTrackConstraints.displaySurface` (en-US).

`MediaTrackSupportedConstraints.logicalSurface` (en-US)

Un valor booleano, que es `true` si el entorno actual admite la restricción `MediaTrackConstraints.logicalSurface` (en-US).

`MediaTrackSupportedConstraints.suppressLocalAudioPlayback` (en-US)

Un valor booleano, que es `true` si el entorno actual admite la restricción `MediaTrackConstraints.suppressLocalAudioPlayback` (en-US).

Validación de la política de permisos
-------------------------------------

Los User agent (en-US) que admiten la Política de permisos (en-US) (ya sea utilizando el HTTP `Permissions-Policy` (en-US) o el atributo `<iframe>` `allow`) puede especificar el deseo de usar la API de captura de pantalla usando la directiva `display-capture`:


```html
<iframe allow="display-capture" src="/some-other-document.html">…</iframe>
```


La lista de permitidos predeterminada es `self`, que permite que cualquier contenido dentro del mismo origen use Captura de pantalla.

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

| Specification |
| --- |
| Screen Capture # dom-mediadevices-getdisplaymedia |

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

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

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

* Uso de la API de captura de pantalla
* `MediaDevices.getDisplayMedia()` (en-US)