MP3 Player Geçiş Mekanizması İncelemesi
Müşteriler şarkı geçişlerinde sorun yaşıyor. Bir şarkı bittiğinde sonraki şarkıya düzgün geçiş yapılmıyor olabilir.
Müşteri deneyimi açısından şarkı geçişlerinin kesintisiz olması kritik. Şarkı bittiğinde sonraki şarkı otomatik başlamalı.
| Metrik | Değer | Durum |
|---|---|---|
| Toplam MP3 Dosyası | 46,379 | OK |
| Aktif Şarkı (DB) | 32,864 | OK |
| Aktif + Dosya Sağlam | 32,864 (%100) | OK |
| Bozuk Dosya (< 10KB) | 10,908 | İnaktif |
Bozuk dosyalar inaktif şarkılara ait, aktif şarkıları etkilemiyor.
Dosya: /public/themes/muzibu/js/player/core/player-core.js
Şarkı bitişinde tetiklenen zincir:
Audio.onended event
↓
onTrackEnded() (satır 2594)
↓
Spot kontrol (anons sistemi)
├─ Spot zamanı ✓ → playSpotAudio() → playNextFromQueue()
└─ Normal ✗ → nextTrack(true)
↓
playSongFromQueue()
↓
isFailedSong() kontrolü (blacklist)
├─ Blacklist'te → şarkıyı atla, sonrakine geç
└─ Temiz → şarkıyı çal
Veritabanındaki süre ile MP3 dosyasının gerçek süresi farklı olabilir. Bu durumda şarkı "erken" veya "geç" bitiyor gibi görünür.
Kontrol: Sorunlu şarkının DB duration'ı vs ffprobe duration
Yavaş internet bağlantısında şarkı buffer boşalınca duraklar. Player bunu "bitti" olarak algılayabilir.
Kontrol: onwaiting, onstalled event'leri
Daha önce hata veren şarkı 5 dakika boyunca blacklist'te. Sıradaki şarkı blacklist'teyse atlanır, bu "takılma" hissi verebilir.
Kontrol: Console'da "Song in blacklist" mesajı
iOS Safari, Android Chrome ve masaüstü tarayıcılar farklı davranabilir. Özellikle mobilde autoplay politikaları farklı.
Kontrol: Hangi cihaz/tarayıcıda sorun yaşanıyor?
Sorun yaşayan müşteriden şu bilgileri iste:
Sorun anında F12 → Console sekmesinde hata mesajları var mı?
// Aranacak mesajlar: "Song in blacklist" "Max 401 retries exceeded" "nextTrack called" "ERROR"
Player'da debug modu aktifken geçiş adımları loglanır. Sorun tespit edilebilir.
// Browser console'da çalıştır:
localStorage.setItem('playerDebug', 'true');
// Sayfayı yenile ve geçişleri izle
Eğer belirli şarkılarda sorun varsa, o şarkının:
Sorunun kaynağı belirlendikten sonra:
# Belirli bir şarkının MP3 bilgilerini al:
ffprobe -i /path/to/song.mp3 -show_format -v quiet
# Son stream hatalarını ara:
grep -i "error\|warning" storage/tenant1001/logs/tenant-*.log | grep -i song | tail -20
# Şarkı ID ile dosya kontrolü (tinker):
$song = DB::table('muzibu_songs')->where('song_id', 12345)->first(); dd($song->file_path);