From 43d5ca17379364bf9fa1ad16debacd1fcf9b0c2f Mon Sep 17 00:00:00 2001 From: sergystepanov Date: Thu, 18 Jun 2020 13:56:00 +0300 Subject: [PATCH] Fix Chrome stereo issue (#202) --- web/js/network/rtcp.js | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/web/js/network/rtcp.js b/web/js/network/rtcp.js index 2403a710..fbda2f1e 100644 --- a/web/js/network/rtcp.js +++ b/web/js/network/rtcp.js @@ -51,14 +51,14 @@ const rtcp = (() => { let stream = null; try { - stream = await navigator.mediaDevices.getUserMedia({video:false, audio:true}); + stream = await navigator.mediaDevices.getUserMedia({video: false, audio: true}); - stream.getTracks().forEach(function(track) { + stream.getTracks().forEach(function (track) { log.info("Added voice track") connection.addTrack(track); }); - } catch(e) { + } catch (e) { log.info("Error getting audio stream from getUserMedia") log.info(e) @@ -140,24 +140,24 @@ const rtcp = (() => { return { start: start, setRemoteDescription: async (data, media) => { - offer = new RTCSessionDescription(JSON.parse(atob(data))); + const offer = new RTCSessionDescription(JSON.parse(atob(data))); await connection.setRemoteDescription(offer); - - answer = await connection.createAnswer({}); + + const answer = await connection.createAnswer(); + // Chrome bug https://bugs.chromium.org/p/chromium/issues/detail?id=818180 workaround + // force stereo params for Opus tracks (a=fmtp:111 ...) + answer.sdp = answer.sdp.replace(/(a=fmtp:111 .*)/g, '$1;stereo=1;sprop-stereo=1'); await connection.setLocalDescription(answer); isAnswered = true; event.pub(MEDIA_STREAM_CANDIDATE_FLUSH); - socket.send({ - 'id': 'answer', - 'data': btoa(JSON.stringify(answer)), - }); + socket.send({'id': 'answer', 'data': btoa(JSON.stringify(answer))}); media.srcObject = mediaStream; }, addCandidate: (data) => { - if (data == '') { + if (data === '') { event.pub(MEDIA_STREAM_CANDIDATE_FLUSH); } else { candidates.push(data);