[bug] Intermittent audio+video freezes on Wi-Fi only
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 4/5
- 预计耗时
- 3-5 天
- 新手友好度
- 35/100
- Issue 类型
- 缺陷
- 描述清晰度
- 需要澄清
- 活跃度
- 冷清
调研方向
Start by following the reproduction steps on an affected Wi-Fi network and comparing the listed WebRTC stats with mobile data, where the issue disappears. The report does not identify a file, test, or specific code path to investigate. Done means finding a reproducible cause for the Wi-Fi stalls and an actionable fix or diagnosis.
由索引模型根据 Issue 内容生成。
描述
Title
Intermittent audio+video freezes on Wi-Fi only (both publish & subscribe stall), not resolved by TURN/relay; works fine on mobile data and with another RTC SDK
Description
We’re seeing intermittent, short freezes (audio + video) for some Android publishers only on Wi-Fi. During the freeze, the participant’s outbound (publishing) and inbound (subscribing) media both stall. Dropped frames increase and the stream resumes after a short period, but freezes repeat frequently.
This does not reproduce on mobile data (4G/5G). It also does not reproduce with another RTC provider SDK (same app, same device, same network), suggesting a stack/transport behavior difference rather than a pure network outage.
We tried multiple mitigation strategies (TURN/relay, custom coturn, bitrate caps, etc.) without improvement.
Environment
- Client SDK:
livekit_client(Flutter)2.6.4 - Platform: Android Xiaomi 12 lite
- Codec: H264 hardware encoder
- Network: Wi-Fi (issue). Mobile data does not show issue.
- Server: self-hosted LiveKit cluster (multiple nodes) behind HTTPS/WSS domain (Caddy L4 SNI routing), shared Redis.
- TURN: tested embedded TURN and external coturn (details below)
Symptoms
-
During freeze:
- audio + video freeze simultaneously for the affected participant
- subscriber streams to that participant also freeze (they stop receiving other tracks temporarily)
- dropped frames increase; later recovers
-
Repeats frequently, but each freeze is short (seconds)
-
Mobile data: stable (no freezes)
-
Other RTC SDK in same app/environment: stable (no freezes)
What we observed in stats
We added periodic stats snapshots (every 2s) including:
- ICE selected candidate pair: RTT, availableOutgoingBitrate
- local candidate type/protocol (srflx/relay, udp)
VideoSenderStats:packetsLost,jitter,roundTripTime,pliCount/nackCount,framesPerSecond,qualityLimitationReason
In freeze windows we see:
- spikes in jitter and/or packetsLost, and retransmissions rising
- connection quality dropping to
poor - sometimes
availableOutgoingBitratedrops sharply - happens with both direct srflx UDP and TURN relay UDP (depending on test)
Steps to reproduce
- Connect to a room and start publishing audio+video from an Android device on a Wi-Fi network known to be affected.
- Observe intermittent freezes where audio+video stop and the device also stops receiving other tracks temporarily.
- Switch the same device to mobile data → issue disappears.
Expected behavior
Stable publish/subscribe on Wi-Fi similar to mobile data; short-term Wi-Fi jitter should degrade quality gracefully, not cause frequent full stalls.
Actual behavior
Frequent short stalls/freezes (audio+video) on Wi-Fi for some devices/networks, with dropped frames increasing and stream resuming later.
Troubleshooting / mitigations tried
TURN / Relay
-
Forced relay-only:
iceTransportPolicy: relay
-
Tested embedded TURN and custom coturn:
- TURN connectivity checks succeed
- freezes persist even when using relay candidates
-
Attempted TCP relay forcing; Android WebRTC appears to still request UDP transport for TURN allocation (coturn shows
442 UDP Transport is not allowedwhen UDP relay disabled). So TCP media relay is not reliably achievable here.
Bitrate / resolution
- Max bitrate is already modest (~1200–1500 kbps)
qualityLimitationReasonis oftennoneafter ramp-up; still freezes occur- Attempted VP8 / simulcast experiments; did not resolve issue
Server/network checks
- Basic reachability tests (HTTPS/WSS, TURN TLS handshake, STUN UDP reachability) are stable from a desktop environment
- Cluster/Redis healthy; no server-side crashes during freezes
- 主要语言
- Dart
- 星标
- 421
- 派生
- 260
- 平均合并
- 2 天 17 小时
- 30 天内合并 PR
- 14
环境准备
这个项目没有提供开发容器、Dockerfile 或贡献指南,环境需要你自己搭建:先看它的 README,通用步骤见我们的新手贡献指南。
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
livekit/client-sdk-flutter 的其他 Issue
-
难度 4/5 3-5 天 新手友好度 48/100
livekit/client-sdk-flutter#1227 ·
维护者通常 1 天内回复
-
难度 4/5 3-5 天 新手友好度 45/100
livekit/client-sdk-flutter#1221 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 4/5 3-5 天 新手友好度 30/100
livekit/client-sdk-flutter#1219 · 1 个 reaction ·
维护者通常 1 天内回复
-
iOS: `audioDeviceModule` becomes permanently `nil`/unavailable after backgrounding, even though `AVAudioSession` is never interrupted可能已有人在做 @hiroshihorie 于 30 天前认领。 未关闭
livekit/client-sdk-flutter#1206 · 2 条评论 · 已指派 1 人 ·
维护者通常 1 天内回复
-
[bug]Early reconnect during the initial room connection可能重新可做 @hiroshihorie 于 42 天前认领,目前没有进行中的 PR。 未关闭
livekit/client-sdk-flutter#1189 · 已指派 1 人 ·
维护者通常 1 天内回复
查看 livekit/client-sdk-flutter 的全部 Issue
相似的 Issue
-
c: proposal p: go_router package team-ecosystem
难度 2/5 1-3 小时 新手友好度 60/100
flutter/flutter#194542 · 1 条评论 ·
维护者通常 1 天内回复
-
bug
难度 2/5 1-3 小时 新手友好度 82/100
famedly/matrix-dart-sdk#2524 ·
维护者通常 1 天内回复
-
Documentation
难度 1/5 1 小时以内 新手友好度 82/100
维护者通常 1 天内回复
-
Kazakh (kk_KZ) and Georgian (ka_GE) system locales get English instead of the shipped translations未关闭bug
难度 2/5 1-3 小时 新手友好度 75/100
维护者通常 1 天内回复
-
area: docs eco: dart good first issue help wanted lane: free-agent roadmap size: XS type: docs
难度 2/5 1-3 小时 新手友好度 72/100
arminazimi/evergreen#430 ·
维护者通常 1 天内回复