6 Ocak 2026 - Muzibu Player Analizi
Evet, spotlar preload ediliyor! ✅
Sistem şöyle çalışıyor: Müzik çalarken, şarkının %70'ine geldiğinde sistem "bir sonraki spot" dosyasını arka planda indirmeye başlıyor. Böylece şarkı bitip spot çalma zamanı geldiğinde, spot dosyası zaten hazır olduğu için kesintisiz (gapless) bir geçiş oluyor.
Örnek: 3 dakikalık şarkı çalıyorsun → 2. dakikada (%70) spot dosyası arka planda indiriliyor → Şarkı bitiyor → Spot anında çalmaya başlıyor (bekleme yok!).
preloadSpot() çağrılır
GET /api/spot/next
const audio = new Audio();
audio.preload = 'auto';
audio.src = data.spot.audio_url;
oncanplaythrough
event'i ile dosya yüklenene kadar bekler (max 3 saniye timeout)
state.preloadedAudio
değişkeninde tutuluyor
play()
ile çalıyor (gapless)
/api/spot/next
CorporateFrontController::apiNextSpot()
CorporateSpot::getAudioUrl()
{
"success": true,
"spot": {
"id": 123,
"title": "İxtif Reklam",
"duration": 30,
"audio_url": "https://muzibu.com/storage/tenant1001/2182/ixtif.mp3"
}
}
MP3: Klasik ses dosyası formatı. Bir dosya, tek parça, direkt indirip çal. Basit ve hızlı.
HLS: Profesyonel streaming formatı. Ses dosyasını küçük parçalara (segment) böler, farklı kalitelerde sunar. İnternet hızına göre kalite değiştirir.
✅ MP3 Kullanın!
Neden? Spotlar kısa (15-60 saniye), HLS'in sunduğu "adaptif kalite" özelliği bu kadar kısa sürede gereksiz. MP3 daha hızlı başlar, daha basittir ve küçük dosyalar için idealdir.
| Metrik | MP3 | HLS | Kazanan |
|---|---|---|---|
| Başlatma Süresi | ~50ms | ~200-500ms | MP3 ✓ |
| Dosya Sayısı | 1 dosya | 6-10 segment + 1 playlist | MP3 ✓ |
| HTTP İstek Sayısı | 1 request | 7-11 request | MP3 ✓ |
| Preload Kolaylığı | Çok kolay | Karmaşık (HLS.js gerekli) | MP3 ✓ |
| Adaptif Bitrate | Yok | Var ✓ | HLS ✓ |
| Network Değişimlerine Uyum | Yok | Var ✓ | HLS ✓ |
| Kısa Dosyalar İçin (<60s) | Mükemmel ✓ | Overhead var | MP3 ✓ |
| Uzun Dosyalar İçin (>3dk) | Sorun olabilir | İdeal ✓ | HLS ✓ |
// Preload (Şu anki sistem)
const audio = new Audio();
audio.preload = 'auto';
audio.src = 'spot.mp3';
await new Promise((resolve) => {
audio.oncanplaythrough = resolve;
setTimeout(resolve, 3000);
});
// Çal
audio.play();
// ✅ 3-5 satır kod
// ✅ Anında başlatma
// ✅ Ekstra kütüphane yok
// Preload
const audio = new Audio();
const hls = new Hls();
hls.loadSource('spot.m3u8');
hls.attachMedia(audio);
await new Promise((resolve) => {
hls.on(Hls.Events.MANIFEST_PARSED, () => {
audio.oncanplaythrough = resolve;
});
});
// Çal
audio.play();
// ⚠️ 10+ satır kod
// ⚠️ HLS.js kütüphanesi gerekli (100KB+)
// ⚠️ Başlatma gecikmesi var
storage/tenant1001/2182/
└── ixtif-spot.mp3 (480 KB)
✅ 1 dosya
✅ 1 HTTP request
✅ Hızlı upload/backup
storage/tenant1001/2182/
├── ixtif-spot.m3u8 (playlist)
├── segment-0.ts (60 KB)
├── segment-1.ts (60 KB)
├── segment-2.ts (60 KB)
├── segment-3.ts (60 KB)
├── segment-4.ts (60 KB)
├── segment-5.ts (60 KB)
└── segment-6.ts (60 KB)
⚠️ 8 dosya
⚠️ 8 HTTP request
⚠️ Yavaş upload/backup
✓ MP3 daha az request, daha az overhead, daha hızlı başlatma!
✅ Spotlar için MP3 formatını kullanmaya devam edin!
1. Kısa süreli içerik: Spotlar 15-60 saniye arası kısa dosyalar. HLS'in adaptif bitrate özelliği bu kadar kısa sürede etkisiz.
2. Hızlı başlatma: MP3 anında çalar, HLS 200-500ms gecikmeli. Gapless geçiş için MP3 ideal.
3. Basit yapı: Ekstra kütüphane (HLS.js) gerekmez, bakım maliyeti düşük.
4. Mevcut sistem mükemmel: Preload zaten çalışıyor, değişiklik gereksiz.