This is an experimental technology
Because this technology's specification has not stabilized, check the compatibility table for the proper prefixes to use in various browsers. Also note that the syntax and behavior of an experimental technology is subject to change in future versions of browsers as the spec changes.
La API de proceso [i]MediaStream, a veces llamadaMedia Stream API o Stream API, es parte de la norma WebRTC [en] y describe un flujo de datos de audio o video, los métodos para trabajar con ellos, las limitaciones asociadas con este tipo de datos, las respuestas de error y éxito al usar los datos asincrónicamente y los eventos que se disparan durante el proceso.
Conceptos Básicos
La API está basada sobre la manipulación de un objeto MediaStream
que representa un flujo de datos de audio o video. Generalmente, un objeto MediaStream
es una simple cadena URL que puede ser usada para referirse a datos almacenados en un Archivo
DOM o un objeto Blob
creado con window.URL.createObjectURL()
, como se lo describe en Obtener el video.
Un MediaStream
está compuesto por más objetos [i]MediaStreamTrack
que representan varias pistas de audio o video. Cada MediaStreamTrack
puede tener uno o más canales. El canal representa la unidad menor de un flujo de medio, como una señal de audio asociada a un parlante específico, como el izquierdo o el derecho en una pista de audio estéreo.
Los objetos MediaStream
poseen una sola entrada y salida[ii]. Un objeto MediaStream
creado con getUserMedia() se denomina local y tiene como origen de entrada una de las cámaras o micrófonos del usuario. Un MediaStream no local puede estar representando un elemento de medio como <video>
o <audio>
, un flujo originado en la red y obtenido a través de la [iii]PeerConnection API o un flujo creado con la API de Audio Web [iv]MediaStreamAudioSourceNode
. La salida de un objeto MediaStream
está enlazada a un consumidor. El mismo puede ser un elemento de medio como <audio> o <video>
, la PeerConnection API de WebRTC o una API de Audio Web [v]MediaStreamAudioDestinationNode
.
Referencia
addtrack
(event)AudioStreamTrack
BlobEvent
BlobEventInit
ended (MediaStream)
(event)ended (MediaStreamTrack)
(event)MediaStream
MediaStreamConstraints
MediaStreamTrack
MediaStreamTrackEvent
MediaStreamTrackList
MediaTrackConstraints
muted
(event)NavigatorUserMedia
NavigatorUserMediaError
overconstrained
(event)removetrack
(event)started
(event)unmuted
(event)URL
VideoStreamTrack
Pista de MediaStream
Una MediaStreamTrack puede ser de dos tipos, de audio o video, y representa el origen del medio, como una cámara.
Atributos
Atributo | Tipo | Descripción |
---|---|---|
enabled | Boolean | True si la pista sigue asociada a su fuente. |
id | DOMString, read-only | Un globally unique identifier (GUID) que describe la pista de medios. |
kind | DOMString, read-only | El audio o video para la pista de origen. |
label | DOMString, read-only | Una cadena de tipo usuario-asignada que identifica la pista de origen, como en "internal microphone." |
onended | EventHandler | Maneja el evento finalizado cuando se lo activa en el objeto MediaStreamTrack. |
onmute | EventHandler | Maneja el evento mudo del objeto MediaStreamTrack. |
onoverconstrained | EventHandler | Maneja el evento superrestricto cuando se lo activa en el objeto MediaStreamTrack. |
onstarted | EventHandler | Maneja el evento iniciado cuando se lo activa en el objeto MediaStreamTrack. |
onunmute | EventHandler | Manjea el evento sin enmudecer cuando se lo activa en el objeto MediaStreamTrack. |
readyState | unsigned short, read-only |
Valores para la pista lista:
|
sourceId | DOMString, read-only | La identidad de este origen que es único para esta aplicación y persistente. Se recomienda una GUID pero no es obligatoria. |
sourceType | SourceTypeEnum, read-only | Contiene el tipo de información del origen, si es que existe. |
Eventos
Evento | Interfaz | Descripción |
---|---|---|
started | Event | El objeto MediaStreamTrack no es más "new" en el readyState. |
muted | Event | El origen del objeto MediaStreamTrack no puede proveer datos temporalmente. |
unmuted | Event | El origen del objeto MediaStreamTrack a recomenzado a proveer datos |
overconstrained | Event | El origen del objeto MediaStreamTrack no puede ser confugurado para que encaje en las restricciones impuestas por la pista. Esto podría ocurrir con la altura en el caso de un video, entre otras posibilidades. |
ended | Event |
El origen del objeto MediaStreamTrack no proveerá datos; puede ocurrir por lo siguiente:
|
appendConstraint()
Agrega la restricción al final de la lista. Esto sólo es un método para añadir restricciones optativas.
- Parámetros
- constraintName DOMString, required.
- constraintValue Primitive (DOMString, float, etc.) or MinMaxConstraint, required.
- Devuelve
- void
- Excepciones
- None.
applyConstraints()
Aplica una lista de opciones optativas a la pista. Sobrescribe cualquier otra restricción optativa ya existente en la pista.
- Parámetros
- constraints MediaTrackConstraints, required.
- Devuelve
- void
- Excepciones
- None.
constraints()
Devuelte todas las [i]restricciones en la pista, obligatorias y optativas. Si tanto mandatory
u optional
no tienen restricciones, ese campo será undefined
. Si ninguno tiene restricciones, entonces constraints()
devolverá null.
- Parámetros
- None.
- Devuelve
- MediaTrackConstraints or null
- Excepciones
- None.
getConstraint()
Trae una restricción específica, por nombre, de la pista. Este método puede devolver una de varias posibilidades:
- Si su restricción no existe, devuelve
null.
- Si no provee true para parámetro optativo
mandatory
y su búsqueda resulta en más de una restricción, este método devolverá una lista. Cada ítem de la lista será el nombre de la búsqueda así como su valor o un objetoMinMaxConstraint
. La lista se agrupa con la entrada 0º como la más importante y cada entrada posterior es progresivamente menos importante. - Si provee
True
al parámetromandatory
y su búsqueda es miembro delMediaTrackConstraintSet
de la pista, este método devuelve su valor primitivo o suMinMaxConstraint
, cualquiera que aplique al caso.
- Parámetros
- constraintName DOMString, required.
- mandatory boolean, optional, default false.
- Devuelve
- Any of the possibilities mentioned above.
- Excepciones
- None.
--
stop()
Detiene permanentemente la creación de datos para las pistas y remueve las referencias a los orígines.
- Parámetros
- None.
- Devuelve
- Void.
- Excepciones
- None.
Lista de pistas de MediaStream
Un MediaStream tiene dos objetos MediaStreamTrackList, uno para la pista de video y otro para la de audio.
Atributo | Tipo | Descripción |
---|---|---|
length | unsigned long, read-only | El número de pistas en la lista. |
onaddtrack | EventHandler | Maneja el evento addtrack. |
onremovetrack | EventHandler | Maneja el evento removetrack. |
Eventos
Evento | Interfaz | Descripción |
---|---|---|
addtrack | MediaStreamTrackEvent | Se agregó una MediaStreamTrack a la lista. |
removetrack | MediaStreamTrackEvent | Se removió una MediaStreamTrack de la lista. |
add()
Agrega una MediaStreamTrack a la lista de pistas.
- Parámetros
- MediaStreamTrack track, required.
- Devuelve
- Void.
- Excepciones
- INVALID_STATE_ERR if the stream is finished (all tracks have ended).
item()
Devuelve la MediaStreamTrack al valor de índice (index) especificado.
- Parámetros
- unsigned long index, required.
- Devuelve
- MediaStreamTrack
- Excepciones
- None.
Remove()
Remueve una MediaStreamTrack de la lista de pistas.
- Parámetros
- MediaStreamTrack track, required.
- Devuelve
- Void.
- Excepciones
- INVALID_STATE_ERR if the stream is finished (all tracks have ended).
Compatibilidad con navegadores
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari (WebKit) |
---|---|---|---|---|---|
Stream API | 21webkit | nightly 18moz | ? | 12 | ? |
Feature | Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
---|---|---|---|---|---|
Stream API | Not supported | ? | ? | Not supported | Not supported |
Actualmente, el uso de WebRTC para acceder a la cámara está soportado en Chrome, Opera y Firefox Nightly 18. Habilitar WebRTC en Firefox Nightly requiere que usted establezca una advertencia (flag) en la configuración:
- Escriba "about:config" en la barra de direcciones y diga que sí quiere efectuar los cambios
- Busque la entrada de "media.navigator.enabled" entry y establezca su valos a "true" [sin comillas]
[i] en castellano, Pista de Flujo de Media
[ii] del inglés, input youtput
[iii] en castellano, API de Conexión de Pares
[iv] en castellano, Nodo de origen del Audio MediaStream
Ver también
- WebRTC - la página de introducción a la API
- getUserMedia()
- Taking webcam photos - un tutorial para usar getUserMedia()