Tamamlandı

HLS Buffer Error Fix

Smart Crossfade - bufferAppendError Çözümü

28 Aralık 2025 - Muzibu Player

📝 Basit Anlatım (Herkes İçin)

Sorun: Müzik çalarda bir şarkıdan diğerine geçerken bazen şarkı takılıyordu veya ses kesiliyordu. Bu özellikle şarkı otomatik değişirken (crossfade) oluyordu.

Sebep: İki şarkı aynı anda yüklenmeye çalışınca "trafik kazası" gibi bir çakışma oluyordu. Sistem hangisini çalacağını bilemiyordu.

Çözüm: Artık bu çakışma olduğunda sistem "tamam, yumuşak geçiş olmadı, direkt sonraki şarkıya geçeyim" diyor. Kullanıcı farkı hissetmeden müzik devam ediyor.

🎵 Sonuç: Şarkılar artık takılmadan çalıyor!

🔧 Teknik Detaylar (Geliştiriciler İçin)

Hata Tipi

bufferAppendError (mediaError)

Kök Sebep

HLS.js crossfade sırasında iki ayrı HLS instance oluşturuluyor. Her ikisi de aynı MediaSource buffer'a yazmaya çalışınca çakışma oluyor.

Değiştirilen Dosya

public/themes/muzibu/js/player/core/player-core.js

Satır: 1301-1358 (startCrossfade catch bloğu)

Çözüm Yaklaşımı: Smart Crossfade

Hata olduğunda crossfade'i atla, direkt geçiş yap:

  1. Başarısız next player'ı temizle (hlsNext, howlNext)
  2. Next audio element'i reset et
  3. Current player'ı tamamen durdur ve destroy et
  4. Progress tracking'i temizle
  5. playSongFromQueue(nextIndex) ile direkt geçiş

🔍 Log Dosyaları Analizi

Dosya Senaryo Şarkı Satır
a-html.txt Otomatik Crossfade Cold Love → Saksıdaki Çiçekler 31
a-console.txt Manuel Tıklama Go (ID: 479) 31, 226
b-html.txt Otomatik Crossfade Cold Love → Saksıdaki Çiçekler 32

✅ Ortak Hata

Tüm dosyalarda aynı: bufferAppendError

⚠️ Farklı Tetikleyiciler

Crossfade (otomatik) vs Manuel şarkı değiştirme

📈 Karşılaştırma

❌ Önceki Davranış

  • • Crossfade hatası → Eski şarkıya geri dön
  • • Volume 0'dan 1'e fade (1 saniye)
  • • Toast mesajı: "Failed to load next song"
  • • Kullanıcı aynı şarkıda takılı

✔ Yeni Davranış (Smart Crossfade)

  • • Crossfade hatası → Direkt sonraki şarkı
  • • Tüm player'lar temizlenir
  • • playSongFromQueue() ile yeni başlangıç
  • • Müzik kesintisiz devam eder

💻 Yeni Console Çıktısı

❌ Crossfade error: bufferAppendError

⚡ Smart Crossfade: Skipping crossfade, direct transition to next song...

🎵 Direct transition to song index: 5