30 Aralik 2025 - Gapless Playback + 401 Loop Fix
Sorun 1: Sarkilar erken atliyordu - 3 dakikalik sarki 30 saniyede bitiyordu gibi davraniyordu.
Sorun 2: Bazen sarki takiliyor ve sonsuz donguye giriyordu (401 hatasi).
Sorun 3: Sesi kapatip actiktan sonra ses gelmiyordu.
timeRemaining > 5 ise yoksayiliyorDosya: player-core.js - Satir: 2797-2851, 3553-3603
// BUFFER_EOS handler'a eklenen guard
const timeRemaining = duration - currentTime;
if (duration > 0 && timeRemaining > 5) {
console.log('BUFFER_EOS IGNORED - not near end');
return; // Yoksay, sarki bitmedi
}
_frag401RetryCount sayaci eklendiDosya: player-core.js - Satir: 3663-3701
// Max retry kontrolu
self._frag401RetryCount++;
if (self._frag401RetryCount >= 3) {
console.error('Max 401 retries exceeded, skipping to next song');
self._frag401RetryCount = 0;
self.hls.destroy();
self.nextTrack(false);
return;
}
audio.muted set ediyorduaudio.volume degismiyordumuted hem volume set ediliyorDosya: player-core.js - Satir: 1443-1462
toggleMute() {
this.isMuted = !this.isMuted;
const targetVolume = this.isMuted ? 0 : this.volume / 100;
// Her iki audio element icin
[audio1, audio2].forEach(audio => {
audio.muted = this.isMuted;
audio.volume = targetVolume; // + EKLENDI
});
}
Sarki Oynatilirken:
timeupdate -> currentTime >= 2s -> preloadNextSong()
|
v
Sonraki sarki HLS yukleniyor
(sadece ilk segment)
Sarki Bitince (Gercek Bitis):
BUFFER_EOS -> timeRemaining <= 5s -> onTrackEnded()
| |
v v
(> 5s = IGNORE) nextTrack(true)
|
v
Preloaded audio HEMEN baslar
Eski HLS 100ms sonra temizlenir
401 Hatasi Olursa:
fragLoadError 401 -> retryCount++
|
(< 3) -----------+----------- (>= 3)
| |
v v
refreshHlsUrl() HLS destroy + nextTrack()
BUFFER_EOS fired {currentTime: '73.6', duration: '161.7', timeRemaining: '88.1'}
BUFFER_EOS IGNORED (normal) - not near end, timeRemaining: 88.1
BUFFER_EOS fired {currentTime: '158.2', duration: '161.7', timeRemaining: '3.5'}
Calling onTrackEnded from BUFFER_EOS
nextTrack: has next song, playing index 2
Fragment 401/403 - Retry count: 1
Fragment 401/403 - Retry count: 2
Fragment 401/403 - Retry count: 3
Max 401 retries exceeded, skipping to next song
Satirlar: ~100 satir eklendi/degistirildi
Yeni state: _frag401RetryCount