La parte multimedia de WebRTC abarca cómo acceder al hardware capaz de capturar video y audio, como cámaras y micrófonos, así como el modo en que el trabajo. También abarca los medios de visualización, que es la forma en que una aplicación puede ejecutar pantallas captura.
Dispositivos de medios
Se accede a todas las cámaras y los micrófonos compatibles con el navegador, y
se administra a través del objeto navigator.mediaDevices
. Las aplicaciones pueden recuperar
la lista actual de dispositivos conectados y detectar cambios, ya que
Las cámaras y los microhpones se conectan a través de USB y se pueden conectar y
desconectada durante el ciclo de vida de la aplicación. Como el estado de un elemento multimedia
dispositivo puede cambiar en cualquier momento, se recomienda que las aplicaciones se registren para
los cambios en los dispositivos
para manejarlos correctamente.
Limitaciones
Cuando se accede a dispositivos de medios, es una buena práctica proporcionar información restricciones posibles. Si bien es posible abrir la cámara predeterminada y micrófono con una restricción simple, podría ofrecer una transmisión de medios de la más óptima para la aplicación.
Las restricciones específicas se definen en un objeto MediaTrackConstraint
, una para
audio y uno para video. Los atributos de este objeto son de tipo
ConstraintLong
, ConstraintBoolean
, ConstraintDouble
o
ConstraintDOMString
Pueden ser un valor específico (p.ej., un número,
booleano o cadena), un rango (LongRange
o DoubleRange
con un valor mínimo y
valor máximo) o un objeto con una definición ideal
o exact
. Para un
el navegador intentará seleccionar algo lo más cerca posible.
En un rango, se usará el mejor valor de ese rango. Cuando exact
sea
especificada, solo se mostrarán las transmisiones
que se devuelven.
Cerca
// Camera with a resolution as close to 640x480 as possible
{
"video": {
"width": 640,
"height": 480
}
}
Rango
// Camera with a resolution in the range 640x480 to 1024x768
{
"video": {
"width": {
"min": 640,
"max": 1024
},
"height": {
"min": 480,
"max": 768
}
}
}
Exacta
// Camera with the exact resolution of 1024x768
{
"video": {
"width": {
"exact": 1024
},
"height": {
"exact": 768
}
}
}
Para determinar la configuración real de una pista determinada de una transmisión multimedia,
podemos llamar a MediaStreamTrack.getSettings()
, que devuelve el
Actualmente, se aplica la MediaTrackSettings
.
También se pueden actualizar las restricciones de una pista desde un dispositivo multimedia que
se abrió, llamando a applyConstraints()
en el segmento. Esto permite que un
reconfigurar un dispositivo de medios sin tener que cerrar
transmisión existente.
Mostrar medios
Una aplicación que quiere realizar una captura y grabación de pantalla
debe usar la API de Display Media. La función getDisplayMedia()
(que es parte
de navigator.mediaDevices
es similar a getUserMedia()
y se usa para la
propósito de abrir el contenido de la pantalla (o una parte de esta, como una
ventana). El MediaStream
que se muestra funciona igual que cuando se usa
getUserMedia()
Las restricciones de getDisplayMedia()
difieren de las que se usan para la configuración regular
entrada de audio o video.
{
video: {
cursor: 'always' | 'motion' | 'never',
displaySurface: 'application' | 'browser' | 'monitor' | 'window'
}
}
En el fragmento de código anterior, se muestra cómo las restricciones especiales para la grabación de pantalla funciona. Ten en cuenta que podrían no ser compatibles con todos los navegadores que tienen soporte de medios de comunicación.
Transmisiones y pistas
Una MediaStream
representa un flujo de contenido multimedia, que consta de pistas.
(MediaStreamTrack
) de audio y video. Puedes recuperar todas las pistas de
MediaStream
llamando a MediaStream.getTracks()
, que muestra un array de
Objetos MediaStreamTrack
.
MediaStreamTrack
Un MediaStreamTrack
tiene una propiedad kind
que es audio
o video
.
que indica el tipo de medio que representa. Para silenciar cada pista, activa o desactiva
su propiedad enabled
Una pista tiene una propiedad booleana remote
que indica
si proviene de un RTCPeerConnection
y proviene de un par remoto.