我刚开始学习webrtc,但遇到了问题。几秒钟后,音频质量(我不在乎视频)下降。刚开始时质量是完美的,但随后下降。我在一个专用网络中,唯一运行的是树莓派,该树莓派连接了USB声卡,并且正在运行流服务器,还有一个小型交换机和一台PC,我可以在其中收听树莓派的流。我试图修改sdp字符串(通过设置一些参数(例如带宽))没有成功。
有人有想法吗?
非常感谢,大卫。
默认设置将为您提供大约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中了解更多有关其他可用属性的信息>