En Google, luchamos por la equidad racial de la comunidad negra. Más información

Captura de medios y limitaciones

La parte de medios de WebRTC cubre cómo acceder al hardware capaz de capturar video y audio, como cámaras y micrófonos, así como también cómo funcionan las transmisiones de medios. También cubre los medios de visualización, que es la forma en que una aplicación puede realizar capturas de pantalla.

Dispositivos multimedia

Todas las cámaras y micrófonos que son compatibles con el navegador se accede y se gestionan a través de la navigator.mediaDevices objeto. Las aplicaciones pueden recuperar la lista actual de dispositivos conectados y también escuchar cambios, ya que muchas cámaras y microhpones se conectan a través de USB y se pueden conectar y desconectar durante el ciclo de vida de la aplicación. Dado que el estado de un dispositivo de medios puede cambiar en cualquier momento, se recomienda que las aplicaciones se registren para los cambios de dispositivo con el fin de manejarlos correctamente.

Restricciones

Al acceder a los dispositivos multimedia, es una buena práctica proporcionar restricciones lo más detalladas posible. Si bien es posible abrir la cámara y el micrófono predeterminados con una simple restricción, es posible que proporcione un flujo de medios que está lejos de ser el más óptimo para la aplicación.

Las limitaciones específicas que se definen en un MediaTrackConstraint objeto, una para audio y otra para vídeo. Los atributos de este objeto son de tipo ConstraintLong , ConstraintBoolean , ConstraintDouble o ConstraintDOMString . Estos pueden ser o bien un valor específico (por ejemplo, un número, boolean o de cadena), un rango ( LongRange o DoubleRange con un valor mínimo y máximo) o un objeto, ya sea con un ideal o exact definición. Para un valor específico, el navegador intentará elegir algo lo más parecido posible. Para un rango, se usará el mejor valor en ese rango. Cuando exact se especifica, sólo se devolverán los flujos de medios que coinciden exactamente con esa restricción.

Cerca

// Camera with a resolution as close to 640x480 as possible
{
    "video": {
        "width": 640,
        "height": 480
    }
}

Distancia

// Camera with a resolution in the range 640x480 to 1024x768
{
    "video": {
        "width": {
            "min": 640,
            "max": 1024
        },
        "height": {
            "min": 480,
            "max": 768
        }
    }
}

Exacto

// Camera with the exact resolution of 1024x768
{
    "video": {
        "width": {
            "exact": 1024
        },
        "height": {
            "exact": 768
        }
    }
}

Para determinar la configuración actual de una pista determinada de un flujo de medios de comunicación tiene, podemos llamar MediaStreamTrack.getSettings() que devuelve los MediaTrackSettings aplicados actualmente.

También es posible actualizar las limitaciones de una pista de un dispositivo de medios hemos abierto, llamando applyConstraints() en la pista. Esto permite que una aplicación vuelva a configurar un dispositivo multimedia sin tener que cerrar primero la transmisión existente.

Medios de visualización

Una aplicación que desee poder realizar capturas y grabaciones de pantalla debe utilizar Display Media API. La función getDisplayMedia() (que es parte de navigator.mediaDevices es similar a getUserMedia() y se utiliza para el propósito de abrir el contenido de la pantalla (o una parte de ella, tal como una ventana). La devuelto MediaStream funciona el mismo que cuando se utiliza getUserMedia() .

Las limitaciones para getDisplayMedia() difieren de las utilizadas para vídeo normal o entrada de audio.

{
    video: {
        cursor: 'always' | 'motion' | 'never',
        displaySurface: 'application' | 'browser' | 'monitor' | 'window'
    }
}

El fragmento de código anterior muestra cómo funcionan las restricciones especiales para la grabación de pantalla. Tenga en cuenta que es posible que estos no sean compatibles con todos los navegadores compatibles con medios de visualización.

Streams y pistas

A MediaStream representa una corriente de contenido de medios, que consiste en pistas ( MediaStreamTrack ) de audio y vídeo. Puede recuperar todas las pistas de MediaStream llamando MediaStream.getTracks() , que devuelve una matriz de MediaStreamTrack objetos.

MediaStreamTrack

Un MediaStreamTrack tiene un kind de propiedad que es ya sea audio o video , lo que indica el tipo de medios que representa. Cada pista se puede silenciar conmutando su enabled propiedad. Una pista tiene una propiedad booleana remote que indica si se obtiene por un RTCPeerConnection y procedentes de un par remoto.