WebRTC 发送立体声音频流,接收单声道音频流

WebRTC Sending Stereo Audio Stream, Receiving Mono Audio Stream

嗨,我有一个问题,基本上我是用这种方式用 WebRTC 发送立体声音频

const audioStream = await navigator.mediaDevices.getUserMedia({
  audio: {
    autoGainControl: false,
    channelCount: 2,
    echoCancellation: false,
    latency: 0,
    noiseSuppression: false,
    sampleRate: 48000,
    sampleSize: 16,
    volume: 1.0,
  },
  video: false,
});

如果我检查通道数,我有 2 个通道 getAudioTracks()[0].getSettings().channelCount

如果我查看我发送的描述,我有 2 个频道

a=rtpmap:111 opus/48000/2

如果查看我收到的说明,我有 2 个频道。

但是我收到的流只有一个频道

connection.ontrack = ({ streams: [stream] }) => {
  audio.srcObject = stream;
  console.log(stream.getAudioTracks()[0].getSettings().channelCount); // =1
};

我不明白这是怎么回事。

你可以在这里自己试一下

https://codesandbox.io/s/stoic-zhukovsky-kjxrf

查看 chrome://webrtc-internals/

当我 运行 你的代码时,当我在你的 GotRemoteStream 函数中调用它时,我得到 stream.getAudioTracks()[0].getSettings().channelCount 的“未定义”。

然而,在 chrome://webrtc-internals 中,在 RTCInboundRTPAudioStream 统计数据中,我看到每秒有 48 个样本到达(这对于 Opus 来说一定意味着 48kHz 立体声)并且“编解码器”表示“stereo=1 " 这表明您确实在接收立体声。