🚀 一、TRTC JS SDK 弱网优化必配项(核心 5 个)
按重要性排序:
1. 启用 FEC(前向纠错)------抗 20% 丢包神器
TRTC 默认会自动做,但是最好手动再开一次:
localStream.setVideoFec(true); localStream.setAudioFec(true);
2. 自适应码率 + 分辨率(最关键)
弱网下自动降级为 360p 或仅音频:
localStream.enableAutoAdjust(true); // 自动调节码率和分辨率
如果你是 WebRTC 模式(新版 SDK),则:
client.enableAutoBitrateAndResolution(true);
**3. Simulcast 多码率编码(多流)
弱网时自动切到低码率,不卡顿。
localStream.enableSimulcast(true);
4. 设置视频配置(弱网优先)
推荐初始化设置成较稳的编码:
localStream.setVideoProfile({ width: 640, height: 360, bitrate: 400, // 弱网更稳 frameRate: 15, });
5. 心跳重连(很关键)
TRTC 对弱网自动重连很依赖。不用你自己写重连逻辑,但必须监听:
client.on('peer-join', () => {}); client.on('peer-leave', () => {}); client.on('connection-state-changed', (state) => { console.log('connection changed:', state.state); });
如果 state === "FAILED" → 触发重连
client.startKeepAlive();
🎯 二、TRTC 动态弱网降级策略(强烈建议你加上)
你可以监听 TRTC 的网络质量,再动态调整视频质量:
监听网络质量(TRTC 必用)
client.on('network-quality', event => { const uplink = event.uplinkNetworkQuality; // 0 最好,5 最差 const downlink = event.downlinkNetworkQuality; console.log('网络质量:', uplink, downlink); if (uplink >= 3) { // 弱网,自动降级 localStream.setVideoProfile({ width: 480, height: 270, bitrate: 300, frameRate: 15, }); } if (uplink >= 4) { // 非常差,只保留音频 localStream.muteVideo(); } });
🔥 三、TRTC 弱网推荐配置(全量示例)
const localStream = TRTC.createStream({ userId, screen: false, audio: true, video: true, }); // 开启抗弱网能力 localStream.enableSimulcast(true); localStream.enableAutoAdjust(true); localStream.setVideoFec(true); localStream.setAudioFec(true); // 设置弱网优先视频参数 localStream.setVideoProfile({ width: 640, height: 360, bitrate: 400, frameRate: 15, }); // 准备并推流 await localStream.initialize(); await client.publish(localStream);
🌐 四、弱网测试方法(你项目里可以复现问题)
Chrome 内置:
1. 打开 DevTools → Network → Throttle → Add
下载:150kb/s 上传:150kb/s 延迟:200ms 丢包:10%
或者使用 chrome://webrtc-internals 监控实际丢包。
🛠️ 五、如果弱网仍然卡顿,检查以下问题
这是 TRTC 常见原因:
| 问题点 | 说明 |
|---|---|
| ❌ 未启用 Simulcast | 弱网下最有效的功能 |
| ❌ 推流码率过高 | > 600kbps 会在弱网下必卡 |
| ❌ 未监听 network-quality 不做降级 | 需要主动降低质量 |
| ❌ 没有 TURN | 企业网络经常直接卡死 |
| ❌ localStream.initialize() 失败没处理 | 导致推流半挂状态 |
| ❌ 没开 FEC / NACK | 丢包时视频花屏严重 |