He estado tratando de desarrollar una aplicación de videoconferencia y, como primer paso, traté de hacer que el video ingresado por el usuario funcione localmente. simplemente usando una etiqueta HTML simple y la API javascript getUserMedia ().
El video de la cámara web funciona perfectamente bien, pero cuando intento obtener la transmisión de audio, comienza con un sonido chirriante y luego sigue teniendo ecos y ruido.
Intenté muchas maneras, ¿alguien puede sugerir una solución con código? y si es posible explique por qué ocurre este problema. Gracias.
Este es el código HTML.
<html> <head> <title>Hi - Here</title> <link rel="stylesheet" href="styles.css"> </head> <body> <div id="container"> <div> <video autoplay="true" id="videoElement" ></video> </div> </div> </body> <script src="webcam.js"></script> </html>
Este es el javascript.
var videoConstrains = { audio: true , video: { width: {min: 650 , ideal: 1280 , max: 1920}, height: {min: 480 , ideal: 720 , max: 1080}, } }; let video = document.getElementById('videoElement') if(navigator.mediaDevices && navigator.mediaDevices.getUserMedia){ navigator.mediaDevices.getUserMedia(videoConstrains) .then((stream)=>{ video.srcObject = stream }) }
cierre el loopback de audio: desactive su micrófono o use un auricular, esto no es un problema con GUM sino con su configuración.
Su micrófono puede escuchar sus altavoces. Es lo mismo que sucede a veces en los auditorios. El micrófono capta los parlantes y los parlantes emiten un ruido fuerte y desagradable. Este es un problema analógico.
Mufla tu micrófono. O cuando "haga que el video ingresado por el usuario funcione localmente", use un auricular en lugar de los parlantes y el micrófono de su computadora portátil.
Extraiga el flujo de la pista de video ignorando el flujo de la pista de audio.
const videoTracks = stream?.getVideoTracks() || []; const selectedVideoTrack = videoTracks[0]; const newStream = new MediaStream(); newStream.addTrack(selectedVideoTrack); video.srcObject = newStream
De otra manera: en el código anterior, puede ignorar la creación de un nuevo MediaStream, pero luego debe eliminar la pista de audio de la transmisión existente o crear la transmisión sin {audio: true} .