bufferAppendError analizi ve çözümü
Müzik çalarken bazen donma yaşanıyordu. Bunun sebebi, bir sonraki şarkıyı hazırlarken (preload) eski şarkının bellekte temizlenmeden yeni şarkının yüklenmeye çalışılmasıydı. İki şarkı aynı anda aynı yere yazılmaya çalışınca sistem "bufferAppendError" hatası verip donuyordu.
Veritabanında muzibu_device_profiles tablosu eksik. Bu yüzden cihaz profili kaydedilemiyor ve konsolda 500 hatası görünüyor. Bu kritik değil, player çalışmaya devam ediyor.
Tablo oluşturmak için migration gerekiyor (ayrı onay gerekli).
| Hata | Açıklama | Önem | Durum |
|---|---|---|---|
bufferAppendError |
HLS preload sırasında SourceBuffer çakışması | Kritik | ✓ Düzeltildi |
DeviceProfile 500 |
Tablo eksik, cihaz profili kaydedilemiyor | Orta | Sessizce geçiliyor |
Next butonu tutarsız |
bufferAppendError kaynaklı | Orta | ✓ Düzeltildi |
Dosya: player-core.js:6972
// 🔧 FIX: bufferAppendError önleme
// 1️⃣ stopLoad - Yeni segment yüklemeyi durdur
preloadInfo.hls.stopLoad();
// 2️⃣ detachMedia - MediaSource bağlantısını kes
preloadInfo.hls.detachMedia();
// 3️⃣ destroy - HLS instance'ı tamamen temizle
preloadInfo.hls.destroy();
Dosya: player-core.js:6787
// 🛡️ Kısa gecikme - MediaSource'un tamamen sıfırlanması için
// bufferAppendError önleme: eski SourceBuffer'lar temizlenmeden yeni append yapılamaz
await new Promise(resolve => setTimeout(resolve, 100));
Dosya: player-core.js:6848
// 🔧 FIX: Mevcut audio'yu AGRESİF temizle
// Tüm event handler'ları kaldır
nextAudio.onerror = null;
nextAudio.onended = null;
nextAudio.ontimeupdate = null;
// ... diğer handler'lar
// Pause ve src temizle
nextAudio.pause();
nextAudio.removeAttribute('src');
nextAudio.load(); // MediaSource'u sıfırla
// 🛡️ Ek gecikme
await new Promise(resolve => setTimeout(resolve, 50));
Dosya: device-profiler.js:305
// 🔧 FIX: Backend başarısız olsa bile player çalışmaya devam etmeli
// Tablo olmayabilir, sessizce geç ve tekrar deneme
isInitialized = true; // Tekrar denemeyi engelle
console.log('[DeviceProfiler] Backend kullanılamıyor, devam ediliyor');
return null;
DeviceProfile Migration
muzibu_device_profiles tablosu oluşturulmalı.
3 aşamalı onay gerekli.
bufferAppendError düzeltmesi
Tamamlandı