Bajas de MediaStream

Si trabajas con getUserMedia() o WebRTC, es posible que debas ajustar el código para Chrome 45 y versiones posteriores.

La API de MediaStream representa transmisiones de medios sincronizadas. Por ejemplo, una transmisión tomada de la cámara y la entrada de micrófono tiene pistas de video y audio sincronizadas. Cada pista está representado por un MediaStreamTrack. (No debe confundirse con el elemento <track>).

Hay tres bajas de MediaStream en Chrome 45:

  • MediaStream.ended
  • MediaStream.label
  • MediaStream.stop()

En paralelo, hay dos adiciones:

  • MediaStream.active
  • MediaStreamTrack.stop()

Esto requiere los siguientes cambios:

  • Usa MediaStream.active para verificar si MediaStream está transmitiendo, no MediaStream.ended.
  • Usa MediaStreamTrack.stop() para detener la transmisión, no MediaStream.stop().
  • Si necesitas un identificador único para una MediaStream, usa MediaStream.id en lugar de MediaStream.label. MediaStreamTrack.label proporciona un nombre legible por humanos para el dispositivo de origen de una transmisión, p.ej., Cámara HD FaceTime (integrada) (05ac:8510).

Puedes verlas en acción: abre simpl.info/gum en Chrome (en un dispositivo con cámara) y visualiza la consola de Herramientas para desarrolladores de Chrome. El El objeto MediaStream stream se pasa a la devolución de llamada getUserMedia() en esta de prueba está dentro del alcance global, por lo que puedes inspeccionarla desde la consola. Llamada stream.getTracks()[0] para ver las MediaStreamTrack de esta transmisión.

Captura de pantalla que muestra MediaStream y MediaStreamTrack en la consola de Herramientas para desarrolladores de Chrome

Stop(), finalizado y activo

Cuando el grupo de trabajo de W3C sobre captura y transmisiones de contenido multimedia analizó el problema de lo que ocurre cuando agregas pistas nuevas a un MediaStream, y si finaliza un MediaStream vacío, se dieron cuenta de que había No hay una forma razonable de implementar ended en un MediaStream (como "no volverá a comenzar"). En otras partes de HTML5 "finalizado" significa que esto finalizó y nunca reanudar". “Activo” no tiene esa implicación: una transmisión inactiva puede vuelve a activarse, por ejemplo, si se le agrega un segmento nuevo. En lugar de mantener un atributo y una función confusos, el Grupo de trabajo decidió quitarlo.

Este es un ejemplo de cómo usar “MediaStream.active” para verificar el estado de un flujo:

var gumStream;

navigator.getUserMedia({audio: false, video: true},
    function(stream) {
            gumStream = stream;
        // ...
    },
    function(error) {
        console.log('getUserMedia() error', error);
    });

// …

if (gumStream.active) {
    // do something with the stream
}

Quitar stop() de MediaStream no quita ninguna funcionalidad real: procesos para desconectar los dispositivos de origen y así sucesivamente deben realizarse en MediaStreamTrack de todos modos. En su lugar, usa stop() en MediaStreamTrack:

navigator.getUserMedia({audio: false, video: true},
    function(stream) {
            // can also use getAudioTracks() or getVideoTracks()
        var track = stream.getTracks()[0];  // if only one media track
        // ...
        track.stop();
    },
    function(error){
        console.log('getUserMedia() error', error);
    });

etiqueta

Resulta que nadie pudo encontrar el uso de esta propiedad.

MediaStream.label se había agregado a la primera versión de la especificación, pero nadie sabía para qué era label. Tampoco estaba claro qué le sucedió a label cuando se realizó una transmisión se envió a través de RTCPeerConnection.

El grupo de trabajo del W3C realizó una pregunta y nadie lo quiso, así que lo eliminaron.

Recuerda: MediaStream.id proporciona un identificador único para un MediaStream y MediaStreamTrack.label proporcionan el nombre de la fuente. de una transmisión, como el tipo de cámara o micrófono.

Hay más información disponible sobre MediaStream y MediaStreamTrack de la Red de desarrolladores de Mozilla y HTML5 Rocks ofrece una excelente introducción a getUserMedia() en Cómo capturar audio y Video

Como siempre, agradecemos tus comentarios sobre los cambios en Chrome. Sigue los errores de estas bajas (aquí y aquí) y obtén más información y detalles en Intent to Implement.