Tengo una aplicación React que graba la cámara web del usuario. Estoy implementando una función que permite al usuario cambiar la resolución del video. Cuando creo Media Stream por primera vez pasando el ancho y el alto de un video predeterminado, funciona bien, sin embargo, cuando cambio la resolución, no sucede nada, todavía puedo grabar la cámara web pero la resolución no cambia. El siguiente código se usa para obtener el Media Stream , las variables de width y height podrían ser 1280x720 o 640x360 . El valor predeterminado mencionado anteriormente es 1280x720 y no puedo cambiarlo a 640x360 después de crear la transmisión; sin embargo, si creo la transmisión usando 640x360 , funciona.
const stream = await navigator.mediaDevices.getUserMedia({ video: { width: { ideal: width }, height: { ideal: height }, frameRate: 25, deviceId: { exact: videoInputId || cameraDeviceId }, aspectRatio: { exact: width / height, }, }, audio: audio, }); cameraVideoRef.current.srcObject = stream; setCameraStream(stream);Debe volver a llamar a getUsermedia() , con nuevas restricciones, para obtener un nuevo objeto de stream con una nueva resolución desde la cámara de un navegador. Para obtener los mejores resultados, cierre primero el objeto de flujo antiguo, deteniendo todas sus pistas.