🚨 Kritik Hata Muzibu.com.tr v2 - Şarkı Tespit

HLS Timeout - Hangi Şarkı?

Console'da "Object" yazıyor ama şarkı bilgisi içinde var!

📅 25 Aralık 2025 🔍 Kod analizi: player-core.js:2296

🔍 Keşif: Şarkı Bilgisi Aslında Var!

Console'da sadece "Object" görünüyor ama kodda şarkı bilgisi loglanıyor!

Kod: player-core.js (satır 2296-2301)

console.warn('⚠️ HLS TIMEOUT:', {
    song: self.currentSong?.title,              // 🎵 ŞARKI BAŞLIĞI
    timeout: hlsTimeoutMs + 'ms',               // ⏱️ TIMEOUT SÜRESİ
    reason: 'HLS yüklenemedi (timeout)',        // ❌ SEBEP
    position_sec: Math.round(currentPos)        // 📍 POZİSYON
});

Sorun: Console'da object otomatik expand edilmemiş, bu yüzden sadece "Object" yazıyor. Object'e tıklaman lazım!

📝 Basit Anlatım: Hangi Şarkı Olduğunu Nasıl Görebilirim?

YÖNtEM 1: Console'da Object'e Tıkla (En Kolay)

  1. 1. Browser console'u aç (F12 → Console tab)
  2. 2. ⚠️ HLS TIMEOUT: Object satırını bul
  3. 3. "Object" yazısının solundaki üçgen ok (▶) işaretine tıkla
  4. 4. Object açılınca song: "Şarkı Adı" göreceksin!

Örnek expanded object:

▶ Object
  song: "Yalnızlık Senfonisi"
  timeout: "45000ms"
  reason: "HLS yüklenemedi (timeout)"
  position_sec: 0

YÖNTEM 2: Network Tab'den Bak

  1. 1. F12 → Network tab'ine geç
  2. 2. Filter'a .m3u8 veya hls yaz
  3. 3. Kırmızı (failed) request'leri bul
  4. 4. URL'de şarkı ID'si var: /songs/1234/hls/

YÖNTEM 3: Player Store'u İncele

  1. 1. Console'da şunu yaz:
Alpine.store('player').currentSong

Bu komut şu anda çalan (veya çalmaya çalışan) şarkının tüm bilgilerini gösterir.

🔧 Teknik Detaylar

Console.warn Object Yapısı

{
    song: self.currentSong?.title,              // String | undefined
    timeout: hlsTimeoutMs + 'ms',               // "45000ms"
    reason: 'HLS yüklenemedi (timeout)',        // String
    position_sec: Math.round(currentPos)        // Number (saniye)
}

Timeout Süresi

  • ⏱️ 45 saniye: HLS stream yüklenme timeout'u
  • 📝 Kod notu: 15s → 45s (increased for stability)
  • 🔧 Eğer 45 saniyede yüklenmezse → Retry veya MP3 fallback

Retry Mekanizması

Timeout olunca kod şunu yapıyor:

// 1. Yeni signed URL al (satır 2303)
const retried = await self.retryHlsWithNewUrl(
    targetVolume, autoplay, 'timeout', currentPos
);

// 2. Retry başarısızsa MP3 fallback (satır 2304-2306)
if (!retried) {
    self.triggerMp3Fallback(audio, targetVolume, 'timeout');
}

Sorun: Retry'da da timeout oluyor → Sonsuz döngü!

🛠️ Çözüm: Log'u İyileştir (Object Yerine String)

Console'da "Object" yazmasın, direkt şarkı adı yazsın.

Mevcut Kod (Satır 2296-2301)

console.warn('⚠️ HLS TIMEOUT:', {
    song: self.currentSong?.title,
    timeout: hlsTimeoutMs + 'ms',
    reason: 'HLS yüklenemedi (timeout)',
    position_sec: Math.round(currentPos)
});

❌ Sorun: Object expand edilmeden şarkı adı görünmüyor

İyileştirilmiş Kod (Önerilen)

// 🔥 Önce şarkı adını string olarak logla
console.warn('⚠️ HLS TIMEOUT:',
    self.currentSong?.title || 'Bilinmeyen Şarkı',
    '(' + hlsTimeoutMs + 'ms)'
);

// 🔍 Detaylı bilgi için object de logla (opsiyonel)
console.warn('📊 Timeout Detayları:', {
    song_id: self.currentSong?.song_id,
    song_title: self.currentSong?.title,
    artist: self.currentSong?.artist?.name,
    timeout: hlsTimeoutMs + 'ms',
    reason: 'HLS yüklenemedi (timeout)',
    position_sec: Math.round(currentPos),
    hls_url: self._lastHlsUrl
});

✅ Avantaj: Console'da direkt şarkı adı görünür, detay için object'i expand edebilirsin

Örnek Console Çıktısı (İyileştirilmiş)

⚠️ HLS TIMEOUT: Yalnızlık Senfonisi (45000ms)
📊 Timeout Detayları: ▶ Object
    song_id: 1234
    song_title: "Yalnızlık Senfonisi"
    artist: "Sezen Aksu"
    timeout: "45000ms"
    reason: "HLS yüklenemedi (timeout)"
    position_sec: 0
    hls_url: "https://..."

Hızlı Test: Şimdi Ne Yapmalı?

ADIM 1: Console'da Object'i Expand Et

  1. 1. Muzibu.com.tr'ye git, F12 aç
  2. 2. Bir şarkı çal (timeout olacak)
  3. 3. Console'da ⚠️ HLS TIMEOUT: Object gör
  4. 4. Object'e tıkla, song: "..." kısmını bul
  5. 5. Şarkı adını not et

ADIM 2: O Şarkının Storage Durumunu Kontrol Et

# Örnek: Şarkı adı "Yalnızlık Senfonisi", ID: 1234
ls -lah storage/tenant1001/app/public/songs/1234/hls/

ADIM 3: Network Tab'den HLS URL'i Test Et

# Network tab'den URL kopyala ve test et
curl -I https://muzibu.com/storage/songs/1234/hls/master.m3u8

ADIM 4: Sorunu Tespit Et

  • 200 OK: HLS dosyası var, sorun timeout/network → Timeout süresini artır
  • 404 Not Found: HLS dosyası yok → Conversion job çalışmamış
  • 403 Forbidden: Permission sorunu → Nginx/storage config
  • 500 Server Error: PHP/Nginx hatası → Log'lara bak