Estoy tratando de implementar una solución para lo que parece ser un problema conocido en todos los navegadores, excepto en Firefox, donde la transmisión de audio webRTC se degrada a mono desde estéreo.
Esto parece suceder debido a que la descripción de la sesión local se establece de forma predeterminada en stereo=0 en el archivo de configuración sdp negociado que se produce en función de las restricciones de la transmisión.
He incluido las siguientes restricciones:
audio: { deviceId: audioSource ? { exact: audioSource } : undefined, channelCount:2, echoCancellation: false, // disabling audio processing googAutoGainControl: false, googNoiseSuppression: false, googHighpassFilter: false },y luego intento agregar la corrección requerida al archivo sdp antes de configurar la descripción local usando un proceso llamado SDP munging https://webrtcglossary.com/sdp-munging/ :
peerConnection .createOffer({ offerToReceiveAudio: true, offerToReceiveVideo: false }) .then( desc => desc.sdp=desc.sdp.replace('useinbandfec=1','useinbandfec=1; stereo=1')) .then(desc => peerConnection.setLocalDescription(desc)) .then(() => socket.emit("offer", id, peerConnection.localDescription));el error que recibo:
broadcast.js: 53 No detectado (en promesa) TypeError: no se pudo ejecutar 'setLocalDescription' en 'RTCPeerConnection': el valor proporcionado no es del tipo 'RTCSessionDescriptionInit'.
Varias fuentes recomendaron esta solución sobre este tema, pero cada vez que intento modificar el archivo antes de configurar la descripción local, aparece un error de tipo que indica que ya no es una descripción de RTCSession.
Espero estar realizando el SDP munging incorrectamente y que haya una mejor manera de hacerlo.