Saltar al contenido

Detener / cerrar la transmisión de la cámara web que abre navigator.mediaDevices.getUserMedia

Solución:

EDITAR

Dado que esta respuesta se publicó originalmente, la API del navegador ha cambiado.
.stop() ya no está disponible en la transmisión que se pasa a la devolución de llamada. El desarrollador deberá acceder a las pistas que componen la transmisión (audio o video) y detener cada una de ellas de forma individual.

Más información aquí: https://developers.google.com/web/updates/2015/07/mediastream-deprecations?hl=en#stop-ended-and-active

Ejemplo (del enlace de arriba):

stream.getTracks().forEach(function(track) {
  track.stop();
});

El soporte del navegador puede diferir.

Respuesta original

navigator.getUserMedia le proporciona una secuencia en la devolución de llamada exitosa, puede llamar .stop() en esa transmisión para detener la grabación (al menos en Chrome, parece que a FF no le gusta)

Utilice cualquiera de estas funciones:

// stop both mic and camera
function stopBothVideoAndAudio(stream) {
    stream.getTracks().forEach(function(track) {
        if (track.readyState == 'live') {
            track.stop();
        }
    });
}

// stop only camera
function stopVideoOnly(stream) {
    stream.getTracks().forEach(function(track) {
        if (track.readyState == 'live' && track.kind === 'video') {
            track.stop();
        }
    });
}

// stop only mic
function stopAudioOnly(stream) {
    stream.getTracks().forEach(function(track) {
        if (track.readyState == 'live' && track.kind === 'audio') {
            track.stop();
        }
    });
}

No use stream.stop(), está en desuso

Desactivaciones de MediaStream

Usar stream.getTracks().forEach(track => track.stop())

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *