Console çıktısında tespit edilen tekrarlayan müzik oynatma hatası
Sorun Nedir?
Muzibu müzik platformunda şarkı çalmaya çalışıldığında, müzik dosyası yüklenemiyor ve sürekli "zaman aşımı" hatası veriyor. Kullanıcı play butonuna bastığında şarkı başlamıyor veya çok geç başlıyor.
Neden Oluyor?
Müzik dosyaları özel bir format (HLS) ile stream ediliyor. Bu format, şarkıyı küçük parçalara bölerek gönderir. Ancak bu parçalar sunucudan gelmiyor veya çok yavaş geliyor. Sistem birkaç kez denedikten sonra pes ediyor.
Kullanıcı Etkisi:
🔴 Şarkılar çalmıyor
🔴 Player donuyor
🔴 Müzik deneyimi bozuk
🔴 Kullanıcı frustre oluyor
player-core.js:2296 ⚠️ HLS TIMEOUT: Object
player-core.js:2296 ⚠️ HLS TIMEOUT: Object
player-core.js:2742 🔁 HLS retry with new signed URL Object
player-core.js:2296 ⚠️ HLS TIMEOUT: Object
player-core.js:2296 ⚠️ HLS TIMEOUT: Object
player-core.js:2296 ⚠️ HLS TIMEOUT: Object
player-core.js:2296 ⚠️ HLS TIMEOUT: Object
Hata sürekli tekrarlanıyor, retry mekanizması çalışıyor ama başarısız oluyor.
HLS, Apple tarafından geliştirilen bir streaming protokolüdür. Müzik/video dosyasını küçük parçalara (segment) bölerek gönderiır.
Player başarıyla başlatılıyor, sorun play edilmeye çalışıldığında başlıyor.
Müzik dosyası upload edildiğinde HLS format'ına dönüştürülmüyor olabilir.
HLS dosyaları storage'da var ama web'den erişilemiyor olabilir.
Güvenlik için kullanılan zamana bağlı URL'ler çok kısa süreli olabilir.
Nginx/PHP timeout'ları HLS stream için yetersiz olabilir.
Orijinal müzik dosyası bozuk veya HLS dönüşümü başarısız olmuş olabilir.
Müzik dosyasının HLS formatına dönüştürülüp dönüştürülmediğini kontrol et.
# Bir şarkı seç ve storage'ı kontrol et:
ls -lah storage/tenant1001/app/public/songs/[song-id]/hls/
# Beklenen dosyalar:
master.m3u8 # Manifest dosyası
segment-0.ts # Segment dosyaları
segment-1.ts
...
HLS dosyalarına web üzerinden erişilebildiğini kontrol et.
# Network tab'den bir HLS URL kopyala ve test et:
curl -I https://muzibu.com/storage/songs/[id]/hls/master.m3u8
# Beklenen: HTTP/2 200
# Hata: 403/404/500 → Storage permission veya symlink sorunu
Timeout ve retry mekanizmasının nasıl çalıştığını anla.
# İlgili dosya:
public/themes/muzibu/js/player/core/player-core.js
# Satır 2296: HLS TIMEOUT log
# Satır 2742: Retry with new signed URL
# Kontrol edilecek:
- Timeout süresi (kaç saniye?)
- Retry count (kaç kez deniyor?)
- Signed URL generation logic
HLS URL'leri üreten Laravel endpoint'i kontrol et.
# Muhtemel endpoint'ler:
Modules/Muzibu/app/Http/Controllers/Api/SongController.php
Modules/MediaManagement/app/Services/HlsService.php
# Kontrol edilecek:
- HLS URL generation logic
- Signed URL expiration time
- Storage path doğruluğu
Server timeout'larını streaming için optimize et.
# Nginx config kontrol:
cat /etc/nginx/sites-enabled/muzibu.conf | grep timeout
# Önerilen değerler:
proxy_read_timeout 300;
proxy_connect_timeout 300;
fastcgi_read_timeout 300;
HLS conversion job'larının çalışıp çalışmadığını kontrol et.
php artisan horizon:status
php artisan queue:failed
# Failed job varsa:
php artisan queue:retry all
HLS TIMEOUT hatası buradan loglanıyor
Retry mekanizması (yeni signed URL ile)
Song API endpoint (HLS URL generation)
HLS conversion queue job (muhtemel)
HLS dosyalarının storage konumu