[bug] Intermittent audio+video freezes on Wi-Fi only
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Error
- Claridad
- Necesita aclaración
- Estado de actividad
- Tranquilo
- Área
- audio-video-rtc, mobile
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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
- Lenguaje dominante
- Dart
- Estrellas
- 421
- Forks
- 260
- Merge medio
- 3 d 9 h
- PR fusionados (30 d)
- 11
Preparar el entorno
Este proyecto no incluye contenedor de desarrollo, Dockerfile ni guía de contribución, así que la configuración corre por tu cuenta: empieza por su README y consulta nuestra guía para la primera contribución para los pasos generales.
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de livekit/client-sdk-flutter
-
Dificultad 4/5 3-5 días Aptitud para principiantes 48/100
livekit/client-sdk-flutter#1227 ·
Los mantenedores suelen responder en 1 día
-
Inbound data packets never delivered while media flows normally (2.13.0, LiveKit Cloud 1.13.7)Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
livekit/client-sdk-flutter#1221 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 4/5 3-5 días Aptitud para principiantes 30/100
livekit/client-sdk-flutter#1219 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
iOS: `audioDeviceModule` becomes permanently `nil`/unavailable after backgrounding, even though `AVAudioSession` is never interruptedPosiblemente ocupada @hiroshihorie la tomó hace 31 días. Abierto
livekit/client-sdk-flutter#1206 · 2 comentarios · 1 asignado ·
Los mantenedores suelen responder en 1 día
-
[bug]Early reconnect during the initial room connectionQuizá libre de nuevo @hiroshihorie la tomó hace 42 días y no hay ningún pull request abierto. Abierto
livekit/client-sdk-flutter#1189 · 1 asignado ·
Los mantenedores suelen responder en 1 día
Todos los issues de livekit/client-sdk-flutter
Issues similares
-
[Bug] Windows:开启 Flutter windowing 后对话框被提升为原生窗口,首个 ShowWindow 死锁导致整个应用卡死(设置 → 远程访问端口 100% 复现)Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
AimesSoft/NipaPlay-Reload#1021 ·
Los mantenedores suelen responder en 1 día
-
enhancement triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
fluttercommunity/plus_plugins#4004 ·
Los mantenedores suelen responder en 1 día
-
c: proposal p: go_router package team-ecosystem
Dificultad 2/5 1-3 horas Aptitud para principiantes 60/100
flutter/flutter#194542 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
enhancement good first issue help wanted
Dificultad 2/5 1-3 horas Aptitud para principiantes 80/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
featurehub-io/featurehub#1335 ·