服务端阅读 05月29日 22:54
WebRTC 如何控制音视频质量?码率/分辨率/帧率的动态调节策略是什么?
WebRTC 如何控制音视频质量?码率/分辨率/帧率的动态调节策略是什么?WebRTC 通过 GCC(Google Congest Control) 算法自动估算带宽,动态调节编码参数,核心机制:自动调节:带宽探测:发送端逐步增加码率,检测丢包率上升则回退(AIMD 策略)编码器适配:VP8/VP9/H264 编码器根据目标码率自动调整量化参数帧率调节:带宽不足时降低帧率优先保分辨率,极低带宽才降分辨率手动控制 API:const sender = pc.getSenders()[0];const params = sender.getParameters();params.encodings[0].maxBitrate = 500000; // 500kbpsparams.encodings[0].maxFramerate = 15;params.encodings[0].scaleResolutionDownBy = 2; // 分辨率减半sender.setParameters(params);音频处理:NetEQ:抖动缓冲 + PLC(丢包隐藏),平滑播放AEC:回声消除,防止扬声器声音被麦克风拾取NS/ANR:噪声抑制,过滤背景噪声AGC:自动增益控制,稳定音量视频处理:关键帧请求(PLI/FIR)应对丢包,Simulcast 发多路流供 SFU 选择。追问Simulcast 是什么?如何工作? — 同时发送多分辨率/码率流,SFU 按接收端带宽转发对应路如何检测网络质量变差? — 监听 getStats 的 packetsLost、jitterBufferDelay、availableOutgoingBitrateAEC 在什么场景下效果差? — 延迟超过 200ms、非线性失真严重、多声源场景setParameters 和 replaceTrack 有什么区别? — setParameters 调编码参数不变轨道,replaceTrack 换整个轨道(如切换摄像头)