Estoy tratando de usar la cámara web de reacción de npm aquí para poder grabar video con audio. Quiero que el audio se silencie durante la grabación, pero que se incluya al guardar una grabación.
La cámara web está configurada de la siguiente manera:
const videoConstraints = { width: 640, height: 480, facingMode: "user", }; const audioConstraints = { suppressLocalAudioPlayback: true, noiseSuppression: true, echoCancellation: true, }; const ReactWebcam = () => { return ( <div className="webcam" style={{ width: 640 }}> <Webcam audio={true} height={100 + "%"} width={100 + "%"} screenshotFormat="image/jpeg" videoConstraints={videoConstraints} audioConstraints={audioConstraints} /> </div> ); };Y esto se usa en un clic de botón para Grabar y Detener la grabación de video:
const handleStartCaptureClick = React.useCallback(() => { setCapturing(true); mediaRecorderRef.current = new MediaRecorder(webcamElement.current.stream, { mimeType: "video/webm", }); mediaRecorderRef.current.addEventListener( "dataavailable", handleDataAvailable ); mediaRecorderRef.current.start(); }, [webcamElement, setCapturing, mediaRecorderRef, handleDataAvailable]); const handleStopCaptureClick = React.useCallback(() => { mediaRecorderRef.current.stop(); setCapturing(false); }, [mediaRecorderRef, setCapturing]); Configuré el audio de la propiedad de la cámara web en true y el audio parece recibir retroalimentación a través de los parlantes del micrófono. He echado un vistazo a las audioConstraints de audio pero he encontrado muy poca suerte aquí. He encontrado tres propiedades para estas restricciones de audio mientras buscaba en el archivo react-webcam.d.ts , sin embargo, ninguna combinación de estas propiedades parece marcar la diferencia.
Así que esto fue bastante simple al final. Este componente de la cámara web finalmente representa un elemento html de video y, por lo tanto, acepta sus propiedades. Por lo tanto, al agregar la propiedad del elemento de video muted={true} al componente de la cámara web junto con audio={true} , se grabó el audio pero no se reprodujo mientras estaba grabando. Exactamente lo que buscaba. ¡Espero que esto ayude a alguien más!