几秒钟后,Webrtc音频质量下降

时间:2017-07-11 11:18:25

标签: audio stream webrtc raspberry-pi3

我刚刚开始学习webrtc而且我遇到了问题。几秒后音频质量(我不关心视频)下降。一开始质量是完美的,但随后它就会下降。我在一个私人网络中,唯一运行的东西是覆盆子,它附有一个USB音频和一个流服务器运行,一个小开关和一台PC,我在那里听取来自树莓的流。 我尝试修改sdp字符串(通过设置一些参数,如带宽),但没有成功。

有人有想法吗?

非常感谢您提前, 大卫。

1 个答案:

答案 0 :(得分:0)

默认设置将为您提供大约42 kb / s的单声道音频,因为它主要是为语音设计的。以下是提高音频质量的方法:

1)在getUserMedia()约束中禁用autoGainControlechoCancellationnoiseSuppression

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

2)将stereomaxaveragebitrate属性添加到SDP:

let answer = await peer.conn.createAnswer(offerOptions);
answer.sdp = answer.sdp.replace('useinbandfec=1', 'useinbandfec=1; stereo=1; maxaveragebitrate=510000');
await peer.conn.setLocalDescription(answer);

这应该输出如下所示的字符串:

a=fmtp:111 minptime=10;useinbandfec=1; stereo=1; maxaveragebitrate=510000

这将为立体声提供最大520kb / s的最大比特率,即每个通道260kps。实际比特率取决于您的网络速度和信号强度。

您可以在以下网址了解更多有关其他可用属性的信息:https://tools.ietf.org/html/rfc7587