Eski nesil cihazlar ve düşük bant genişliğine sahip bağlantılarda yaşanan "takılma" (freezing) sorunlarının kök neden analizi ve iyileştirme yol haritası.
Müzik çalarken yaşanan donmaların iki ana sebebi var: 1. İnternet Hızı: Müzik dosyaları (HLS) küçük parçalar halinde yüklenir. İnternet yavaşladığında bir sonraki parça yetişemezse müzik durur. 2. Cihaz Gücü: Eski telefonlarda telefonun "aklı" (işlemcisi) müzik verisini çözerken yorulur ve ekranı/sesi anlık olarak dondurur.
Kullanıcı deneyiminde kesintisiz müzik en temel ihtiyaçtır. Bir kullanıcı müzik dinlerken telefonu donarsa uygulamayı kapatma eğilimi gösterir. Bu durum özellikle düşük segmentli cihazların yoğun olduğu bölgelerde (bazı mobil kullanıcılar) kritik bir sorundur.
Eski cihazlarda HLS segmentlerinin (ts/fmp4) decode edilmesi CPU yoğun bir işlemdir. player-core.js'de enableWorker: true olmasına rağmen, bazı düşük segmentli cihazlarda Worker thread'i yetersiz kalmakta ve decode anında 100ms+ JANK (ekran donması) oluşmaktadır.
Mevcut algoritma bant genişliği düşüşünü geç fark ediyor. 4G'den Edge'e geçişte sistem hala "high" variant'ı yüklemeye çalışıyor, bu da fragLoadPolicy'nin timeout'a düşmesine ve player'ın "Stalled" (Takılı) kalmasına neden oluyor.
a-html.txt verilerine göre bellek her şarkı değişiminde 20-30MB artış gösterip GC ile düşüyor. Bu "Sawtooth" (Testere Dişi) paterni, eski cihazlarda GC'nin daha agresif çalışmasına ve müzik çalarken anlık duraksamalara yol açar.
Düşük internet tespit edildiğinde (3G/Edge) ilk segmenti 32kbps (ultralow) ile başlatarak buffer'ın boş kalmasını önle.
Eski cihazlarda maxBufferLength'i 20'den 8'e düşürerek RAM kullanımını %60 azalt.
HLS buffer 3 saniye boyunca %10'un altında kalırsa kullanıcıyı bekleterek MP3 formatına (daha az CPU yükü) düşür.
Şarkı değişiminde önceki DOM elementlerini safeAudioCleanup ile anında imha ederek bellek sızıntısını önle.