es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

El icono de grabación de Chrome permanece encendido incluso después de haber detenido la grabación.

Estoy utilizando getUserMedia para grabar con el navegador del usuario:

stream.current = await navigator.mediaDevices.getUserMedia({
audio: {
echoCancellation: {exact: true}
},
video: {
width: { ideal: 240 }, height: { ideal: 160 }
}
});

window.stream = stream.current;

let options = {mimeType: ‘video/webm;codecs=vp9,opus;};
try {
mediaRecorder.current = new MediaRecorder(window.stream, options);
} catch (e) {
console.error(‘Excepción al crear MediaRecorder:’, e);

return;

}

mediaRecorder.current.ondataavailable = (event:BlobEvent) => {
recordedBlobs.current.push(event.data);
uploadRecordedAnswer(recordedBlobs, mutationAddAttemptAnswer)
}

mediaRecorder.current.start();

Sin embargo, el icono de grabación de Chrome no desaparece incluso después de haber detenido la grabación, como se muestra a continuación:

stream.current!.getTracks().forEach((track:MediaStreamTrack) => track.stop());
console.log(window.stream,window.stream.getTracks())
mediaRecorder.current!.stop()

window.stream.getTracks().forEach((track:MediaStreamTrack) => track.stop());

Según otras publicaciones, el icono rojo debería desaparecer después de “stream.getTracks().forEach((track:MediaStreamTrack) => track.stop())”, pero todavía permanece allí para mí. Sé que la grabación ya se ha detenido porque cuando reviso el video grabado se detiene después de hacer clic en detener grabación, pero el icono rojo todavía no desaparece.

FYI Estoy utilizando useRef de React, de ahí el stream.current.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Problema con el icono de grabación de Chrome que no desaparece después de detener la grabación

    Antecedentes

    Como experto en tecnología de la información especializado en reactjs, webrtc, getusermedia, video-recording, web-mediarecorder, está utilizando getUserMedia para grabar usando el navegador del usuario. También ha intentado detener la grabación utilizando el siguiente código:

    stream.current!.getTracks().forEach((track:MediaStreamTrack) => track.stop());
    console.log(window.stream,window.stream.getTracks())
    mediaRecorder.current!.stop()
    
    window.stream.getTracks().forEach((track:MediaStreamTrack) => track.stop());
    

    Problema

    A pesar de usar el código anterior para detener la grabación, el icono rojo de grabación en Chrome no desaparece.

    Solución

    Según otros mensajes, el icono rojo de grabación en Chrome debería desaparecer después de llamar a stream.getTracks().forEach((track:MediaStreamTrack) => track.stop ());. Sin embargo, en su caso, el icono persiste.

    Una posible solución a este problema es llamar a mediaRecorder.current!.requestData() antes de detener la grabación. Este método captura cualquier dato restante en el búfer del grabador antes de finalizar la grabación.

    mediaRecorder.current!.requestData(); // Agregar esta línea antes de detener la grabación
    mediaRecorder.current!.stop();
    

    Alternativamente, puede intentar cambiar mimeType en su objeto options a "video/webm" en lugar de "video/webm;codecs=vp9,opus". Algunos usuarios han informado que este cambio ayudó a resolver el problema.

    let options = {mimeType: 'video/webm'};
    

    Espero que esto ayude a resolver el problema con el icono de grabación de Chrome que no desaparece.

Comments are closed.