第一次做webrtc项目,操作延迟,一直是个问题,多次调试都不能达到理想效果。偶尔发现提高jitterBuffer时间可以解决此问题。关键代码
const _setJitter = (values: number) => {
const receives = peerConnection.getReceivers();
receives.forEach((receiver: any) => {
if (receiver.track.kind === 'video') {
// receiver.jitterBufferTarget =
// networkScore > 0.8 ? 100 : // 网络优 → 低延迟模式
// networkScore > 0.5 ? 500 : // 网络一般 → 平衡模式
receiver.jitterBufferTarget = values;
}
})
}
通过修改jitterBufferTarget的值,可以控制延迟时间,例如设置30,可以明显降低延迟时间,此值可以根据网络状况来动态调整,实时生效。
网络质量MOS可以使用 webrtc-issue-detector 来获取,或是自己写代码实现。