6 Ocak 2026 - Audio Streaming Optimizasyon Rehberi
HLS varsayılan olarak 6-10 saniyelik segmentler kullanır, bu da başlatma gecikmesine neden olur. Ancak modern HLS optimizasyonları ile bu gecikme büyük oranda azaltılabilir.
Örnek: Normal HLS ile 6 saniye beklersin, LL-HLS (Low Latency HLS) ile 200-500ms'de başlar!
Ne yapar? Segment boyutunu 6 saniyeden 1-2 saniyeye düşürür, "partial segments" (kısmi segmentler) kullanır.
❌ Hayır. Canlı yayın değil, on-demand müzik. Kurulum karmaşık, ek sunucu yükü var.
Ne yapar? HLS ve DASH için ortak format. Aynı segment dosyaları hem HLS hem DASH için kullanılır (depolama tasarrufu).
⚠️ Kısmen. Depolama tasarrufu iyi ama kurulum karmaşık. Şu anki sistem yeterli.
Ne yapar? Segment boyutunu küçültür (6s → 2s), başlatma hızlanır ama HTTP request sayısı artar.
| Segment Boyutu | Başlatma | HTTP Request | Buffering |
|---|---|---|---|
| 10 saniye (varsayılan) | ~10s | Az (18 req) | Az |
| 6 saniye | ~6s | Orta (30 req) | Az |
| 2 saniye ⭐ | ~2s ✓ | Çok (90 req) | Orta |
| 1 saniye | ~1s | Aşırı (180 req) | Çok |
✅ EVET! 2 saniyelik segmentler kullan. Başlatma 3x hızlanır, HTTP request sayısı kabul edilebilir seviyede.
# FFmpeg komutu (mevcut 6s → 2s segment)
ffmpeg -i input.mp3 \
-hls_time 2 \
-hls_playlist_type vod \
-hls_segment_filename "segment-%03d.ts" \
output.m3u8
Ne yapar? İlk segment yüklenirken, sunucu sonraki segmentleri otomatik push eder (client beklemeden gelir).
✅ EVET! Sunucu zaten HTTP/2 destekliyor. Nginx config ile kolayca aktif edilir.
HLS dışında ses/video streaming için kullanılan başka teknolojiler de var. Her birinin avantaj ve dezavantajları farklı.
Ne yapar? HLS'nin açık kaynak rakibi. MPEG standardı. HLS ile aynı mantık ama farklı format (.mpd playlist).
❌ HAYIR! iOS/Safari kullanıcıları için sorun. HLS daha iyi destekleniyor.
Ne yapar? Peer-to-peer gerçek zamanlı streaming. Ultra düşük latency (50-150ms!).
❌ HAYIR! Canlı yayın için ideal, on-demand müzik için overkill. Kurulum çok karmaşık.
Ne yapar? Browser'ın low-level media API'si. Kendi custom streaming protokolünü yazabilirsin.
❌ HAYIR! Overkill. HLS.js zaten mükemmel çalışıyor, custom yazmanın anlamı yok.
Ne yapar? HLS yok, segment yok. Tek MP3/AAC dosyası, indirirken çalmaya başlar (eski YouTube mantığı).
✅ SPOTLAR İÇİN EVET! Kısa dosyalar (15-60s) için Progressive MP3 ideal. Şarkılar için HLS daha iyi.
| Teknoloji | Başlatma | Latency | Browser | Karmaşıklık | Muzibu İçin |
|---|---|---|---|---|---|
| HLS (Normal) | 6s | 6-10s | Mükemmel ✓ | Basit | Şu anki sistem |
| HLS (2s segment) ⭐ | 2s ✓ | 2-4s | Mükemmel ✓ | Basit | ÖNERİLİR ✓ |
| LL-HLS | 500ms | 1-2s | İyi | Çok karmaşık | Gereksiz |
| DASH | 4-6s | 4-8s | iOS sorun! | Orta | Uygun değil |
| WebRTC | 50-150ms | 50-150ms | Mükemmel | Aşırı karmaşık | Canlı yayın için |
| Progressive MP3 ⭐ | 50ms ✓ | Minimal | Mükemmel ✓ | Çok basit ✓ | SPOTLAR İÇİN ✓ |
✅ HLS + 2 Saniyelik Segment Optimizasyonu
1. Mevcut segment boyutunu 6 saniyeden 2 saniyeye düşür
2. Başlatma süresi: 6s → 2s (3x hızlanma!)
3. HTTP/2 Server Push ekle (opsiyonel, %30 ek hızlanma)
# Mevcut FFmpeg encoding script'ini güncelle:
ffmpeg -i input.mp3 \
-c:a aac -b:a 192k \
-hls_time 2 \ # 6 → 2 saniye
-hls_playlist_type vod \
-hls_segment_filename "segment-%03d.ts" \
output.m3u8
✅ Progressive MP3 (Şu Anki Sistem - Değişiklik Gereksiz!)
1. Mevcut sistem mükemmel: MP3 direkt preload ediliyor
2. Başlatma: ~50ms (ultra hızlı!)
3. Gapless geçiş: Çalışıyor ✓
4. Preload timing: %70 → 2. saniye (YENİ!)
Spot preload timing'i %70'den 2. saniyeye çekildi (daha erken preload!).
// player-core.js (3 yerde güncellendi)
// Önceki: progressPercent >= 70
// Yeni: self.currentTime >= 2
if (!self._spotPreloaded && self.currentTime >= 2 && window.MuzibuSpotPlayer) {
window.MuzibuSpotPlayer.preloadSpot();
}