我刚刚开始学习webrtc而且我遇到了问题。几秒后音频质量(我不关心视频)下降。一开始质量是完美的,但随后它就会下降。我在一个私人网络中,唯一运行的东西是覆盆子,它附有一个USB音频和一个流服务器运行,一个小开关和一台PC,我在那里听取来自树莓的流。 我尝试修改sdp字符串(通过设置一些参数,如带宽),但没有成功。
有人有想法吗?
非常感谢您提前, 大卫。
答案 0 :(得分:0)
默认设置将为您提供大约42 kb / s的单声道音频,因为它主要是为语音设计的。以下是提高音频质量的方法:
1)在getUserMedia()约束中禁用autoGainControl
,echoCancellation
和noiseSuppression
:
navigator.mediaDevices.getUserMedia({
audio: {
autoGainControl: false,
channelCount: 2,
echoCancellation: false,
latency: 0,
noiseSuppression: false,
sampleRate: 48000,
sampleSize: 16,
volume: 1.0
}
});
2)将stereo
和maxaveragebitrate
属性添加到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